先前句子的命名实体识别的影响

时间:2018-11-13 08:25:56

标签: python spacy named-entity-recognition ner

在命名实体识别(NER)中,前一句话对当前句子有什么影响?如果分别对每个句子应用NER而不是对包含多个句子的文章应用NER,结果是否相同?

更具体地说,我正在使用Spacy NER。这是方法一:

import spacy
nlp = spacy.load('en')

sentences = "My name is Bruce and I come from New York. Pete is my best friend from Amsterdam."

nlp_object = nlp(sentences)
print([(y.text, y.label_) for y in nlp_object.ents])

产生以下结果:

[('Bruce', 'PERSON'), ('New York', 'GPE'), ('Pete', 'PERSON'), ('Amsterdam', 'GPE')]

但是,除了最后两行,您还可以拆分句子并在每个句子上应用NER:

for s in sentences.split("."):
    nlp_object = nlp(s)
    print([(y.text, y.label_) for y in nlp_object.ents])

哪个返回相同的结果(但在两行中分别显示):

[('Bruce', 'PERSON'), ('New York', 'GPE')]
[('Pete', 'PERSON'), ('Amsterdam', 'GPE')]

在此示例中,运行代码会给出相同的提取实体。但是底层模型如何做到这一点? NER中的前一句有什么影响? NER的不同实现之间有什么区别吗?

1 个答案:

答案 0 :(得分:4)

Spacy NER系统使用深度神经网络来训练数百万个单词-实体对示例。如果查看他们的样本训练代码here.,通常将它们作为单独的句子进行训练。

虽然我不知道spacy提供的预训练模型是如何被精确训练的,但我可以假设它们也使用单个句子来训练。即使不是,以前的句子也不应该有任何影响,因为训练数据不是作为单词,而是作为向量表示,从其他文本样本中学习的,作为训练数据提供给深度学习系统。看看this article,了解上下文词如何影响预测。