我正在尝试使用NLTK
对单词进行词形还原。
我现在能找到的是,我可以使用stem
包获得一些结果,比如将“汽车”改为“汽车”,将“女人”转换为“女人”,但我不能对某些词语进行词形还原用“确认”这样的词缀。
在“确认”上使用WordNetLemmatizer()
时,它返回“确认”并使用.PorterStemmer()
,它返回“确认”而不是“确认”。
有谁能告诉我如何消除词语的词缀?
比如,当输入为“确认”时,输出为“确认”
答案 0 :(得分:7)
词形还原不会(也不应该)为“确认”返回“确认”。前者是动词,而后者是名词。另一方面,波特的词干算法只使用一组固定的规则。所以,你唯一的办法是在源头改变规则。 (不是解决问题的正确方法)。
您正在寻找的是衍生相关的“确认”形式,为此,您的最佳来源是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')]