空间共指解析-命名实体识别(NER)以返回唯一的实体ID?

时间:2018-12-12 19:57:13

标签: python nlp spacy information-extraction ner

也许我已经跳过了一部分文档,但是我试图确定的是标准NER工具集中每个实体的唯一ID。例如:

import spacy
from spacy import displacy
import en_core_web_sm
nlp = en_core_web_sm.load()

text = "This is a text about Apple Inc based in San Fransisco. "\
        "And here is some text about Samsung Corp. "\
        "Now, here is some more text about Apple and its products for customers in Norway"

doc = nlp(text)

for ent in doc.ents:
    print('ID:{}\t{}\t"{}"\t'.format(ent.label,ent.label_,ent.text,))


displacy.render(doc, jupyter=True, style='ent')

返回:

ID:381    ORG "Apple Inc" 
ID:382    GPE "San Fransisco" 
ID:381    ORG "Samsung Corp." 
ID:381    ORG "Apple" 
ID:382    GPE "Norway"

我一直在查看ent.ent_ident.ent_id_,但是根据docs,它们是不活动的。我在ent.root中也找不到任何内容。

例如,在GCP NLP中,每个实体都返回一个“实体”编号,该数字使您可以在文本中标识同一实体的多个实例。

  

这是关于⟨SanFransisco⟩4中的⟨AppleInc⟩1的⟨text⟩2。和   这里是有关“三星公司” 6的“文本” 3。现在,这里还有更多   关于“ Apple” 1及其“产品” 5的“客户” 7中的“文本” 8   ⟨挪威⟩9“

spaCy是否支持类似功能?还是有使用NLTK或Stanford的方法?

2 个答案:

答案 0 :(得分:2)

您可以使用Neurocoref库以以下方式使用SpaCy模型获得共指解析:

# Load your usual SpaCy model (one of SpaCy English models)
import spacy
nlp = spacy.load('en')

# Add neural coref to SpaCy's pipe
import neuralcoref
neuralcoref.add_to_pipe(nlp)

# You're done. You can now use NeuralCoref as you usually manipulate a SpaCy document annotations.
doc = nlp(u'My sister has a dog. She loves him.')

doc._.has_coref
doc._.coref_clusters

在此处查找安装和使用说明:https://github.com/huggingface/neuralcoref

答案 1 :(得分:0)

@gdaras条评论所示,spaCy当前不支持共指解析。

这里是Stanford coreNLP implementation

相关问题