python - 前一句对命名实体识别的影响

标签 python spacy named-entity-recognition

在命名实体识别(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的不同实现之间有什么区别吗?

最佳答案

Spacy NER 系统使用深度神经网络来训练数百万个单词-实体对的示例。如果您查看它们的示例训练代码 here.,这些对通常会被训练为单独的句子。 。

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

关于python - 前一句对命名实体识别的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53276718/

相关文章:

spacy - 在 Rasa-NLU 训练数据中使用 spaCy 实体

python - 带 spacy 的德语小写词形还原

python - 在没有模型的情况下使用 spacy 的 Matcher

python - 使用另一个单元格的值动态替换部分单元格公式

python - KMeans - 溢出错误 : cannot convert float infinity to integer

python - 如何计算移动物体的速度

python - spacy 中的词向量示例问题

python - 请求示例代码来了解返回值的协程中 throw() 的返回值

python - 为什么 spacy ner 结果是高度不可预测的?

python - spaCy (v3.0) `nlp.make_doc(text)` 和 `nlp(text)` 之间的区别?为什么训练时要用 `nlp.make_doc(text)`?