我正在尝试过滤文本文件中的单词。如果文件中有“比较”和“最高级”两个词,我想将它们转换为“正”。

例如-'最棒的'->'最棒的'等。

我为此使用“模式”模块。举例来说,

from pattern.en import comparative, superlative
print comparative('bad')


给出-> worse可以正常工作。
但是,如果我这样做:

from pattern.en import comparative, superlative, positive
print positive('worse')


它给出'False'

我做错了吗?有没有办法找出“比较”和“最高级”的单词并打印出它们的肯定单词?

最佳答案

这是一个误解:positive()函数无法执行您所想的。

据我所知,pattern.en模块仅提供从形容词的正形式生成比较和最高级的功能,而没有逆函数(将形式分析为正形式的比较/最高级)。
有一个lemma()函数,您可以期望这样做,但不幸的是,它仅适用于动词。

您发现的positive()功能属于情感检测;它试图判断给定句子是否具有正极性。

那么,你现在怎么办?
我看到两种可能性:您要么切换到支持形容词的词形化(例如SpaCy)的其他库,要么尝试基于pattern.en模块中的代码构建一个简单的形容词词形器。

如果您选择第二个选项,请查看inflect module中的最后80行代码。我建议您首先尝试捕获不规则的情况(使用此处给出的表的倒置),然后除去-er / -est后缀。可能有很多特殊情况(例如iy中的heavierheavy)。
自己尝试一下,如果遇到问题,请在此处提出新问题!

09-25 19:39