【发布时间】:2019-09-05 21:49:44
【问题描述】:
我正在使用 Spacy 大型模型,但它错误地使用与我的领域无关的类别标记实体,例如“艺术品”可能会导致它无法识别应该是组织的内容。
是否可以将 NER 限制为仅返回人员、位置和组织?
【问题讨论】:
标签: spacy
我正在使用 Spacy 大型模型,但它错误地使用与我的领域无关的类别标记实体,例如“艺术品”可能会导致它无法识别应该是组织的内容。
是否可以将 NER 限制为仅返回人员、位置和组织?
【问题讨论】:
标签: spacy
简答:
不,您不能限制 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"]
长答案:
您可以在 spacy 中限制 NER,但不能使用简单的参数(当前)。
为什么不呢?很简单:NER 是一个有监督的机器学习任务。您提供带有标记实体的文本,它进行训练,然后尝试根据预先学习的参数预测新实例。
如果您只希望 NER 识别某些实体,例如 orgs,则必须仅使用 org 实例来训练新模型。
如果您熟悉机器学习概念,您会这样理解:在多类分类任务中,您不能简单地删除一个类而不使用过滤后的训练数据重新训练整个模型。
查看此页面以获取有关 NER 培训的更多信息:https://spacy.io/usage/linguistic-features/#named-entities
【讨论】: