我要寻找一个合适的方式来寻找其中的具体代词已在共指情况下被使用在一些文件我在看的情况。一个我有记忆,这让我觉得我没有做它以非常经济的方式解决问题,但我还不能肯定,如果我以正确的方式去了解它。我们的想法是,以确定它的,他们所有实例的共参照实例的时刻,但我可能要扩展这个。然后,我想去上共指的头字代替所有这些实例。
目前我的代码看起来是这样的:
import spacy
import neuralcoref
import en_coref_md
import os
nlp_en = en_coref_md.load()
path = './input_zenodo/'
filelist = os.listdir(path)
for file in filelist:
try:
file = open(path+file).read()
doc = nlp_en(file)
is_pronoun = 'it'
except MemoryError:
print('MemoryError:'+file+'\n')
for token in doc:
if token.text == is_pronoun:
print(token._.in_coref)
print(token._.coref_clusters)
如果任何人都可以提出建议,以这样或意见,以如何更换只有一个文档中,这些共指集群我会很感激的潜在的更经济的方法。
如果你只是想取代它的头上,每种参考,有一个内置的coref_resolved
此neuralcoref
属性:
import spacy
nlp = spacy.load('en_coref_lg')
text = "Rufus is my dog. He is a good boy."
doc = nlp(text)
print(doc._.coref_resolved)
回报
"Rufus is my dog. Rufus is a good boy."
实现它的代码是here,这似乎想修改的地方,如果你真的只想解决代词,而不是所有corefs。