【问题标题】:Finding relations between Pronouns and Nouns in sentences在句子中查找代词和名词之间的关系
【发布时间】:2017-11-26 14:28:52
【问题描述】:

我正在从事一个 NLP 项目,我需要通过示例说明以下功能。说有一句话

告诉山姆,因为他病了,他必须离开,没有亚瑟。

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

【问题讨论】:

  • 请求您添加您尝试过的代码。
  • 我还没有编写任何代码,因为我不明白我必须使用什么。我查看了 nltk-chunkers 以尝试通过使用正则表达式 将代词分组到更接近名词的位置,该表达式将匹配一个名词后跟一个代词。但这并不适用于所有情况。
  • 这里给出的例子不是很好,因为它可以通过多种方式阅读: - 告诉山姆,因为山姆生病了,山姆必须离开,没有亚瑟 - 告诉山姆,山姆必须离开没有 Arthur 就像 Sam 生病了 事实上,这种结构中的任何句子都具有相同的效果。

标签: python nlp semantics part-of-speech


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    更新:

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

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

    【讨论】:

      【解决方案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)
      

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

      【讨论】:

        猜你喜欢
        • 2020-12-07
        • 1970-01-01
        • 2014-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-12
        • 2023-03-14
        • 2021-07-21
        相关资源
        最近更新 更多