我正在做一个NLP项目,我需要下面的一个例子说明的功能。说有句话
告诉山姆,他必须离开亚瑟,因为他病了。
在这个声明中,第一个he必须标记给山姆,第二个he必须标记给亚瑟。我在Python工作。对于我可以使用什么来获得以下功能有什么建议吗?
发布于 2017-06-23 21:54:45
此任务称为共同引用解析。为了解析您提到的复杂案例,您需要使用一个共同引用解析系统,其中大部分(free/OOS)都是用Java开发的。有几种方法可以轻松地从Python中使用它们。最著名的一个是这个斯坦福CoreNLP包装器:https://github.com/dasmith/stanford-corenlp-python。
发布于 2019-09-11 10:16:26
更新:
现在有了具有共同引用解析的Python本机工具,如:
这些引用主要是从这个不错的RASA (一个基于NLU的聊天机器人解决方案)教程中检索到的:https://github.com/RasaHQ/tutorial-knowledge-base
发布于 2019-09-13 07:06:15
就像其他人提出的,这是一个共同参考决议,这是一个积极的研究课题。
尝试使用拥抱面(Spacy)中的以下代码:
import spacy
nlp = spacy.load('en')
import neuralcoref
neuralcoref.add_to_pipe(nlp,greedyness=0.52)
doc = nlp("Tell Sam that he will have to leave without Arthur, as he is sick.")
print(doc._.coref_resolved)你可以调整algo的贪婪来获得更多的分辨率(代词的替换)。请记住,增加贪婪可能会给您带来错误的解决方案,这将取决于您的用例。
https://stackoverflow.com/questions/44714142
复制相似问题