如何在nltk中创建句子的否定

Seb*_*eki 5 python nlp nltk

我是NLTK的新手.我想创造一个句子的否定(通常是现在时).例如,是否有一个允许我转换的功能:'我跑'到'我不跑'

要么

'她跑'到'她不跑'.

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

lej*_*lot 7

不,那里没有.更重要的是,它是一个非常复杂的问题,可以成为研究的主题,而不是"简单的内置函数"可以解决的问题.这样的操作需要对句子进行语义分析,想一想例如"我认为我可以跑得更快",哪三个动词应该被否定?我们知道"思考",但对于算法它们是一样的.即使是检测你是否应该使用"做"或"做"的情况并不容易.考虑"玛丽和简走在路上"和"简走在路上",没有解析树,你将无法区分单数/复数问题.总而言之,没有,也不可能是任何简单的解决方案.您可以设计任何您想要的启发式(其中一种是基于POS的否定),如果失败,请在此区域开展研究.


小智 3

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

如果您认为原始句子在语法上是正确的,您可以通过依赖原始中心动词的属性来克服一致性问题( don'tdoes not )。

如果它是助动词1,则将其替换为其否定对应项(was > was notwill > won'thave > Havent等)。如果它不是助动词,请添加正确的否定形式supported- do:如果中心动词是过去形式(即walked),则添加did not;如果是非第三人称单数则添加do n’t现在形式(即,think),并且does not if 采用第三人称单数现在形式(即,running)。紧接着支持性的-do使用原始中心动词的基本形式(walkthinkrun)。

一个更难解决的问题是 ShaiCohen 在他的回答中讨论的内容。请注意,您并不总是需要更换这些物品。有很多情况你不应该这样做。例如:我是在办公室见过某人的人>我不是在办公室见过某人的人。

查看Contextors API

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