【问题标题】:spacy: set only one entity per type per sentencespacy:每个句子的每种类型只设置一个实体
【发布时间】:2021-08-23 22:35:29
【问题描述】:

我是spacy 的新手,发现文档对于初学者来说相当复杂。我当前的项目要求我创建一个带有自定义实体的新模型,我按照this article 做了。

现在,我正在使用的句子每个句子的每种类型只有一个或没有实体。
虚拟示例: John (PERSON) 是美国人 (NATIONALITY)句子中只有一个PERSON标签和一个NATIONALITY标签。

我遇到的问题是,当我将新句子传递给模型时,有时它会识别多个 PERSON,即使总是有一个或没有。
虚拟示例: 约翰 (PERSON) 去了麦当劳 (PERSON)

我的问题是:有没有办法让模型在每个句子中只识别每种类型的一个实体?
(在最后一个示例中,我假设模型会知道 JohnMcDonald's 更适合并选择 John 作为唯一的PERSON)。

【问题讨论】:

    标签: python nlp spacy


    【解决方案1】:

    不,没有办法做到这一点。事先知道每个句子只有一个特定实体并不典型,因此 NER 通常在设计时不会考虑到这一点。

    您可以改用 spancat 模型来获取分数并选择每种类型得分最高的实体,但您必须从头开始对其进行训练。此外,您的问题似乎与传统 NER 非常接近,因此 NER 所做的假设应该有助于您的准确性。

    【讨论】:

    • 我会研究一下spancat,看看能不能解决问题。非常感谢!
    【解决方案2】:

    我认为 spaCy 不支持您正在寻找的内容。您必须在 spaCy 为您提供的基础上实现一些东西,以便每个句子只保留一种类型的实体。鉴于基于转换的解析器 NER 没有为实体预测分配分数供您对这些预测进行排名以选择最佳预测,因此您将如何做到这一点也不清楚。

    根据您的用例,如果这些是短句并且您只希望每种类型有一个实体,那么选择第一个可能就足够了?

    【讨论】:

    • 我认为现在为每种类型选择第一个实体就足够了,尽管它不是很严格。非常感谢您提供的信息!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    相关资源
    最近更新 更多