【问题标题】:How Spacy NER verifies the rationality of entities?Spacy NER如何验证实体的合理性?
【发布时间】:2021-03-27 20:57:51
【问题描述】:

当我使用 SpaCy NER 时,SpaCy 会将“TodoA”识别为 PERSON。这显然是不合理的。有没有办法验证SpaCy提取的实体是否合理?谢谢!

这些不合理的实体大多是通过spacy beam search 提取的。束搜索代码为:

import spacy
import sys
from collections import defaultdict

nlp = spacy.load('en')
text = u'Will Japan join the European Union? If yes, we should \ 
move to United States. Fasten your belts, America we are coming'


with nlp.disable_pipes('ner'):
    doc = nlp(text)

threshold = 0.2
(beams, somethingelse) = nlp.entity.beam_parse([ doc ], beam_width = 16, beam_density = 0.0001)

entity_scores = defaultdict(float)
for beam in beams:
    for score, ents in nlp.entity.moves.get_beam_parses(beam):
        for start, end, label in ents:
            entity_scores[(start, end, label)] += score

print ('Entities and scores (detected with beam search)')
for key in entity_scores:
    start, end, label = key
    score = entity_scores[key]
    if ( score > threshold):
        print ('Label: {}, Text: {}, Score: {}'.format(label, doc[start:end], score))

【问题讨论】:

  • SpaCy 下面有神经网络,用于处理有监督学习的特征属性。如果您对使用的功能、分配的确定性或多类概率感兴趣,那么您的问题并不清楚。请澄清。
  • 嗨@SergeyBushmanov 它与底层神经网络无关。我只是使用 spacy 中的预训练模型 en_core_web_lg 进行实体提取,并使用了 beam_search。当句子中包含'TodoA'时,spacy en_core_web_lg会识别'TodoA'为人,而'TodoA'显然不是人名,所以spacy en_core_web_lg识别错误,我现在要做的是判断其合理性spacy en_core_web_lg 提取的实体

标签: machine-learning nlp spacy named-entity-recognition


【解决方案1】:

您看到的“不合理”注释与用于执行注释的模型的性质和获取它的过程直接相关。

简而言之,该模型是一个非常复杂的函数(在数学术语中)的近似,它来自单词序列的某些特征(例如,特定字母的存在、大写、特定术语的使用)等)到一组封闭的标签(例如PERSON)。这是一个在大量文本(例如几 GB 的 ASCII 文本)中接近最佳的近似值,但它肯定不是特定短语到标签的映射。因此,即使用于训练的数据是准确的,但在某些情况下应用模型的结果可能并不理想。

在您的情况下,模型很可能会坚持单词的大写,并且训练中使用的大量单词可能共享标有标签 PERSON) 的前缀-例如Toddy、toddler 等以及极少数带有这种前缀的单词不是PERSONs。

我们观察到的这种现象并不是由准备模型的人明确选择的,它只是准备模型(训练)过程和使用的数据相结合的副产品。

【讨论】:

  • 所以spacy本身并不能解决这个问题。 spacy提取实体后,有没有办法验证spacy提取的实体是否合理?
  • 正如@sophros 所指出的,机器学习它所学到的东西。当然,这在未来几年会变得更好,但就目前而言,该模型做了它所做的并且表现良好in_general。这是机器学习的目标。如果您认为可以添加启发式方法来改进结果,那么这需要在 ML 应用其学习后完成。
猜你喜欢
  • 2023-02-02
  • 2020-04-28
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
相关资源
最近更新 更多