NLTK词语lemmatizing

时间:2013-07-16 18:21:47

标签: python nlp nltk stemming lemmatization

我正在尝试使用NLTK对单词进行词形还原。

我现在能找到的是,我可以使用stem包获得一些结果,比如将“汽车”改为“汽车”,将“女人”转换为“女人”,但我不能对某些词语进行词形还原用“确认”这样的词缀。

在“确认”上使用WordNetLemmatizer()时,它返回“确认”并使用.PorterStemmer(),它返回“确认”而不是“确认”。

有谁能告诉我如何消除词语的词缀?
比如,当输入为“确认”时,输出为“确认”

1 个答案:

答案 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')]