限制Spacy NER中的实体类型

时间:2019-08-17 10:53:56

标签: spacy

我正在使用Spacy大型模型,但是错误地用与我的领域无关的类别标记实体,例如,“艺术品”可能会导致其无法识别应该是组织的组织。

是否可以限制NER仅返回人员,位置和组织?

1 个答案:

答案 0 :(得分:0)

简短答案:

否,您不能限制NER 以不标记特定的标记或相反的标记。

您可以做的是将其限制在代码中或修改模型 [请参见长答案]。

将其限制为代码只是过滤检索到的实体,但无法解决分类错误的问题

import spacy

nlp = spacy.load("en_core_web_sm")
doc = nlp(u"Apple is looking at buying U.K. startup for $1 billion")

entities = [ent for ent in doc.ents if ent.label_ == "ORG"]

长答案:

您可以随意限制NER,但不能使用简单的参数(当前)。

为什么不呢?简单:NER是有监督的机器学习任务。您为文本提供了带标签的实体,它会进行训练,然后尝试根据事先学习的参数来预测新实例。

如果您只希望NER识别某些实体(例如org),则只需使用 org 实例来训练新模型。

如果您熟悉机器学习的概念,就会以这种方式理解它:在多类分类任务中,您不能简单地删除一个类而不用过滤后的训练数据重新训练整个模型。

查看此页以获取有关NER培训的更多信息:https://spacy.io/usage/linguistic-features/#named-entities