【问题标题】:How to create the negative of a sentence in nltk如何在 nltk 中创建句子的否定句
【发布时间】:2014-05-21 03:57:41
【问题描述】:

我是 NLTK 的新手。我想创建一个句子的否定句(通常是现在时)。例如,是否有一个函数可以让我转换: “我跑”到“我不跑”

“她跑”到“她不跑”。

我想我可以使用 POS 来检测动词及其前面的代词,但我只是想知道是否有更简单的内置函数

【问题讨论】:

    标签: python nlp nltk


    【解决方案1】:

    不,没有。更重要的是它是一个相当复杂的问题,可以成为研究的主题,而不是“简单的内置功能”可以解决的问题。这样的操作需要对句子进行语义分析,比如“我认为我可以跑得更快”这三个动词中的哪个应该被否定?我们知道“思考”,但对于算法,它们是一样的。甚至检测你应该使用“do”还是“does”的情况也不是那么容易。考虑“玛丽和简走在路上”和“简走在路上”,如果没有解析树,您将无法区分单数/复数问题。总而言之,没有,也不可能是任何简单的解决方案。您可以设计任何您想要的启发式方法(其中之一是提议的基于 POS 的否定),如果失败,请开始该领域的研究。

    【讨论】:

      【解决方案2】:

      您应该使用解析器来查找句子谓词的头部(动词)。

      如果您假设原始句子在语法上是正确的,您可以通过依赖原来的中心动词。

      如果它是一个辅助1,将其替换为它的否定对应物( > 不是 > 不会 > 没有等)。如果它不是助动词,则添加 support-do 的正确否定形式:ddn't 如果中心动词是过去形式(即,walked ),如果它是非第三人称单数现在形式(即,think),don't,并且 doesn't 如果是第三人称单数现在形式(即,runs)。紧跟支持性的-do 使用原始中心动词的基本形式(walkthinkrun )。

      一个更难解决的问题是 ShaiCohen 在他的回答中所讨论的问题。请注意,您不必总是更换这些物品。在很多情况下你不应该这样做。例如:我是在办公室看到某人的人 > 我不是在办公室看到某人的人

      看看Contextors API

      1 注意看起来像助动词的词汇动词。 她有一条狗……

      【讨论】:

        【解决方案3】:

        除了上一个答案中讨论的挑战之外,还有 negative polar-items 带来的挑战,这些词项需要前面的非肯定元素。考虑以下句子:

        a. I didn’t see anyone at the office
        b. * I saw anyone at the office
        c. I saw someone at the office  
        

        (a) 的肯定形式不是 (b) 而是 (c),其中 anyone 被替换为 someone

        负极性项目在释义任务的上下文中也提出了挑战,例如将句子的声音从主动变为被动,反之亦然。您可以在帖子中阅读有关此主题的更多信息:Voice Alternation and Negative Polarity Items

        【讨论】:

          猜你喜欢
          • 2018-08-12
          • 2015-10-25
          • 1970-01-01
          • 2018-04-26
          • 2023-03-10
          • 2013-02-10
          • 2012-12-15
          • 2017-03-14
          • 1970-01-01
          相关资源
          最近更新 更多