也许我跳过了部分文档,但我试图确定的是标准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_id
和ent.ent_id_
,但根据文档,它们是不活动的。我在ent.root
中也找不到任何内容。
例如,在GCPNLP中,每个实体都返回一个⟨实体⟩编号,使您能够识别文本中同一实体的多个实例。
这是一篇关于位于旧金山的苹果公司的文章。和这里有一些关于三星公司的文字。现在,这里还有一些关于苹果的文本⟨挪威⟩9">
spaCy支持类似的功能吗?或者有没有一种方法可以使用NLTK或Stanford?
您可以使用neuralRef库来获得与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