我正在尝试使用 NLTK
对单词进行词形还原。
我现在能找到的是,我可以使用 stem
包来获得一些结果,例如将“cars”转换为“car”,将“women”转换为“woman”,但是我不能进行词形还原在某些带有词缀的单词上,例如“确认”。
在“确认”上使用 WordNetLemmatizer()
时,它返回“确认”,而使用 .PorterStemmer()
时,它返回“确认”而不是“确认”。
谁能告诉我怎么去掉词缀?
比如说,当输入是“确认”时,输出是“确认”
最佳答案
词形还原不会(也不应该)为“确认”返回“确认”。前者是动词,后者是名词。另一方面,波特的词干提取算法只使用一组固定的规则。因此,您唯一的方法就是从源头上更改规则。 (不是解决问题的正确方法)。
您正在寻找的是“确认”的派生相关形式,为此,您最好的来源是 WordNet。你可以查看这个online on WordNet .
有很多基于 WordNet 的库可供您使用(例如在 Java 中的 JWNL)。在Python中,NLTK应该可以得到你在网上看到的推导相关形式:
from nltk.corpus import wordnet as wn
acknowledgment_synset = wn.synset('acknowledgement.n.01')
acknowledgment_lemma = acknowledgment_synset.lemmas[1]
print(acknowledgment_lemma.derivationally_related_forms())
# [Lemma('admit.v.01.acknowledge'), Lemma('acknowledge.v.06.acknowledge')]
关于python - NLTK 单词词形还原,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684186/