Nlp 否定句的算法

Nlp 否定句的算法,nlp,text-processing,linguistics,negation,Nlp,Text Processing,Linguistics,Negation,我想知道是否有人熟悉算法句子否定的尝试 例如,给定一个像“This book is good”这样的句子,提供任意数量的替代句子,意思相反,比如“This book is not good”甚至“This book is bad” 显然,以高精度完成这项工作可能超出了当前NLP的范围,但我相信在这方面已经做了一些工作。如果有人知道任何作品,可以给我指一些论文吗?当然,最天真的方法是在{am,are,is}之后加上“not”。不过,我不知道这在您的环境中如何工作,它可能只适用于类似谓词的句子。对于

我想知道是否有人熟悉算法句子否定的尝试

例如,给定一个像“This book is good”这样的句子,提供任意数量的替代句子,意思相反,比如“This book is not good”甚至“This book is bad”


显然,以高精度完成这项工作可能超出了当前NLP的范围,但我相信在这方面已经做了一些工作。如果有人知道任何作品,可以给我指一些论文吗?

当然,最天真的方法是在{am,are,is}之后加上“not”。不过,我不知道这在您的环境中如何工作,它可能只适用于类似谓词的句子。

对于简单的句子,根据英语语法规则查找副词或形容词,如果只有一个意思,则替换反义词。否则,请使用正确的英语否定规则来否定动词(即:is->is not)

高级算法:

  • 查找每个单词的类型(名词、动词、形容词、副词、连词等)
  • 从字型序列推断句子结构(你的句子是:冠词、名词、动词、形容词/副词;这是一个简单的句子。)
  • 对于简单的句子,选择一个倒装词并倒装。要么使用反义词,要么否定动词

  • 对于更复杂的句子,如带有从句的句子,您需要进行更复杂的分析,但对于简单的句子,这应该是不可行的。

    一阶逻辑也有类似的过程。通常的算法是将
    P
    映射到
    not P
    ,然后执行有效的翻译以将
    not
    移动到方便的地方,例如:

    Original:    (not R(x) => exists(y) (O(y) and P(x, y)))
    Negate it:   not (not R(x) => exists(y) (O(y) and P(x, y)))
    Rearrange:   not (R(x) or exists(y) (O(y) and P(x, y)))
                 not R(x) and not exists(y) (O(y) and P(x, y))
                 not R(x) and forall(y) not (O(y) and P(x, y))
                 not R(x) and forall(y) (not O(y) or not P(x, y))
    
    用同样的英语,你会否定“如果这里不下雨,那么有一些活动是户外活动,可以在这里进行”到“不是……的情况”,最后变成“不下雨,所有可能的活动不是户外活动,就是不能在这里进行”


    自然语言比一阶逻辑复杂得多,当然。。。但是如果你能将句子解析成可以识别“not”、“and”、“or”、“exists”等词的句子,那么你应该能够进行类似的翻译。

    虽然我不知道有哪项工作专门研究自动生成否定句,我想一个好的开始应该是阅读和研究语言学工作。这本书是一个很好的介绍

    我认为你会遇到的一个问题是,否定一个句子所传达的所有信息是非常困难的。例如,以:

    John fixed the vase that he broke.
    
    即使您将此更改为约翰没有修理他打碎的花瓶,也有一种说法,即有一个花瓶是约翰打碎的

    同样地,简单地否定句子约翰并没有停止使用药物,因为约翰停止使用药物仍然表明约翰在某一点上使用过药物。更彻底的否定是约翰从不吸毒


    您可能想了解一些现有的自然语言处理(NLP)工作是MacCartney和Manning 2007的。在本文中,他们使用乔治·拉科夫的自然逻辑概念和桑切斯·巴伦西亚的单调性演算来创建自动确定一个句子是否包含另一个句子的软件。你可能会使用他们的一些检测非蕴涵性的技术来人为地构造否定句和矛盾句。

    我建议你检查一下。你可以用它来查找一个单词的反义词,这样你就可以用“不好”替换“坏”,因为坏是好的反义词。有一个到wordnet的简单python接口。

    使用NTLK和一个简短的writeup-进行了很好的演示。

    只需在任何语句的末尾添加“…NOT!”,即可否定它;)或者在奥威尔/1984的意义上,在任何形容词前加上“un”前缀。。。“这本书不好”:-)你能提供一些关于你的使用目标的更多信息吗?我真的在寻找更多关于这一主题的学术论文的链接,如果有的话。我认为你在这项作业中将会遇到巨大的问题。你不仅需要能够提取可以否定的单词,还需要识别句子的承载部分。例如,“约翰,因为他醒着,读他的好书”。这里被否定的部分是什么?“约翰,因为他没有醒,所以没有读他的坏书”?当然,最天真的方式是,不要在{am,are,is not}之后加上“not”{am,are,is not}也许他没有修理那个不存在的花瓶,他没有打碎?想想看,他是个女人吗?或在他把花瓶修好之后,他真的打破了花瓶而不是把它修好了吗?此外,如果断章取义地说“约翰从未吸毒”,这句话可能意味着有人试图隐瞒什么。例如,如果CNN的一个大标题突然说“XYZ从来没有和山羊发生过关系”,那就有点暗示有人声称。也许最彻底的否定是把句子改写成完全不同的“约翰很快乐”。否定句和消极情绪是两码事。这是一句带有负面情绪的肯定句:“这部电影糟透了。”这是一句带有正面情绪的否定句:“这部电影不亚于我所看过的最伟大的电影。”@汤米,我不同意你的观点。“这部电影很糟糕”是“这部电影很好”的一个有效注解。i、 糟糕是“不好”的有效同义词,正如你上面的帖子中的“坏”一样。