4

我正在做一个 NLP 项目,我需要一个示例说明的以下功能。说有一句话

告诉山姆,因为他病了,他将不得不离开亚瑟。

在此声明中,第一个he必须标记为 Sam,第二个标记he为 Arthur。我在 Python 中工作。关于我可以用来获得以下功能的任何建议?

4

3 回答 3

7

此任务称为共指解析。为了解析您提到的复杂案例,您需要使用共指解析系统,其中大部分(免费/OOS)是用Java开发的。有几种方法可以轻松地从 Python 中使用它们。最著名的之一是这个 Standford CoreNLP 包装器:https ://github.com/dasmith/stanford-corenlp-python

于 2017-06-23T21:54:45.670 回答
3

更新:

现在有具有共指解析的 Python 原生工具,例如:

这些参考资料主要来自这个不错的 RASA(基于 NLU 的聊天机器人解决方案)教程:https ://github.com/RasaHQ/tutorial-knowledge-base

于 2019-09-11T10:16:26.537 回答
3

像其他人建议的那样,这是共指解析,这是一个 NLP 活跃的研究课题。

尝试从 huggingface(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)

您可以调整算法的贪心度以获得更多分辨率(代词替换)。请记住,增加贪心可能会给您带来不正确的解决方案,这取决于您的用例。

于 2019-09-13T07:06:15.707 回答