4

我正在尝试对带有NLTK.

我现在可以找到的是,我可以使用该stem包获得一些结果,例如将“汽车”转换为“汽车”,将“女性”转换为“女人”,但是我无法对带有“确认”之类的词缀的词进行词形还原。

当使用WordNetLemmatizer()on "acknowledgement" 时,它返回 "acknowledgement",而 using.PorterStemmer()时,它返回 "acknowledge" 而不是 "acknowledge"。

谁能告诉我如何消除词缀?
说,当输入是“确认”时,输出是“确认”

4

1 回答 1

8

词形还原不会(也不应该)为“确认”返回“确认”。前者是动词,后者是名词。另一方面,Porter 的词干提取算法只是使用一组固定的规则。因此,您唯一的方法是从源头更改规则。(不是解决问题的正确方法)。

您正在寻找的是“确认”的派生相关形式,为此,您最好的来源是 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')]
于 2013-07-16T21:12:41.397 回答