NLTK词语lemmatizing

nob*_*ben 4 python nlp stemming nltk lemmatization

我试图用词语进行词形还原NLTK.

我现在能找到的是,我可以使用这个stem包得到一些结果,比如将"汽车"改为"汽车",将"女人"改为"女人",但是我不能用"确认"等词缀对某些词进行词形还原.

当使用WordNetLemmatizer()"确认"时,它返回"确认"并使用.PorterStemmer(),它返回"确认"而不是"确认".

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

Cht*_*ect 8

词形还原不会(也不应该)为"确认"返回"确认".前者是动词,而后者是名词.另一方面,波特的词干算法只使用一组固定的规则.所以,你唯一的办法是在源头改变规则.(不是解决问题的正确方法).

您正在寻找的是衍生相关的"确认"形式,为此,您的最佳来源是WordNet.您可以在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')]
Run Code Online (Sandbox Code Playgroud)