我正在尝试过滤文本文件中的单词。如果文件中有“比较”和“最高级”两个词,我想将它们转换为“正”。
例如-'最棒的'->'最棒的'等。
我为此使用“模式”模块。举例来说,
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
后缀。可能有很多特殊情况(例如i
→y
中的heavier
→heavy
)。
自己尝试一下,如果遇到问题,请在此处提出新问题!