28

何らかの方法で処理する必要があるフランス語のテキストがあります。そのためには、次のことが必要です。

  • まず、テキストを単語にトークン化します
  • 次に、それらの単語を見出し語化して、同じ語根を複数回処理しないようにします

私の知る限り、NLTK の wordnet lemmatizer は英語でのみ機能します。「voudrais」などを与えると「vouloir」を返すことができるものが欲しいです。また、アポストロフィのために適切にトークン化できません。任意のポインタをいただければ幸いです。:)

4

5 に答える 5

19

これは、 nltk開発者による古いが関連するコメントです。nltk の最も高度なステマーはすべて英語固有のもののようです。

nltk.stem モジュールには現在、Porter ステマー、Lancaster ステマー、および正規表現ベースのステマーの 3 つのステマーが含まれています。Porter ステマーと Lancaster ステマーはどちらも英語固有のものです。正規表現ベースのステマーは、任意の正規表現を使用するようにカスタマイズできます。したがって、正規表現ステマーを使用して、英語以外の言語用の単純なステマーを作成できるはずです。たとえば、フランス語の場合:

from nltk import stem
stemmer = stem.Regexp('s$|es$|era$|erez$|ions$| <etc> ')

ただし、言語固有の正規表現を自分で考え出す必要があります。より高度なステマーの場合、おそらく新しいモジュールを追加する必要があります。(これは良い学生プロジェクトかもしれません。)

正規表現ステマーの詳細については、次を参照してください。

http://nltk.org/doc/api/nltk.stem.regexp.Regexp-class.html

-エドワード

注: 彼が提供するリンクは無効になっています。現在の正規表現ステマーのドキュメントについては、こちらを参照してください。

最近追加されたSnowball Stemmer は、フランス語をステミングできるようです。テストしてみましょう:

>>> from nltk.stem.snowball import FrenchStemmer
>>> stemmer = FrenchStemmer()
>>> stemmer.stem('voudrais')
u'voudr'
>>> stemmer.stem('animaux')
u'animal'
>>> stemmer.stem('yeux')
u'yeux'
>>> stemmer.stem('dors')
u'dor'
>>> stemmer.stem('couvre')
u'couvr'

ご覧のとおり、一部の結果は少し疑わしいものです。

あなたが望んでいたものではありませんが、それは始まりだと思います.

于 2012-10-30T00:07:39.947 に答える
2

多分 TreeTagger で?試していませんが、このアプリはフランス語で動作します

http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/
http://txm.sourceforge.net/installtreetagger_fr.html

于 2014-02-25T16:25:27.890 に答える