4

で単語の見出し語化を試みていますNLTK

私が今見つけたのは、stemパッケージを使用して、「車」を「車」に、「女性」を「女性」に変換するなどの結果を得ることができるということですが、「確認」などの接辞を含むいくつかの単語について見出し語化を行うことはできません。

WordNetLemmatizer()on "acknowledgement"を使用すると "acknowledgement" を返し、 を使用.PorterStemmer()すると "acknowledge" ではなく "acknowledg" を返します。

単語の接辞を削除する方法を誰か教えてもらえますか?
たとえば、入力が「確認」の場合、出力は「確認」になります。

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 に答える