查找句子中代词和名词之间的关系

Finding relations between Pronouns and Nouns in sentences

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

Tell Sam that he will have to leave without Arthur, as he is sick.

在此语句中,第一个 he 必须标记为 Sam,第二个 he 必须标记为 Arthur。我在 Python 工作。关于我可以使用什么来获得以下功能有什么建议吗?

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

更新:

现在有 Python 个具有共指解析的本机工具,例如:

这些引用主要是从这个不错的 RASA(基于 NLU 的聊天机器人解决方案)教程中检索到的:https://github.com/RasaHQ/tutorial-knowledge-base

正如其他人所说,这是共指消解,是 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)

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