いくつかの方法で処理する必要のあるフランス語のテキストがあります。そのために、私はする必要があります:
私が見る限り、NLTKのwordnet lemmatizerは英語でのみ機能します。 「voudrais」などを与えると「vouloir」が返ってくるものが欲しいです。また、アポストロフィが原因で適切にトークン化できません。どんなポインタでも大歓迎です。 :)
ここ は、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ステマー はフランス語をステミングできるようです。それをテストしてみましょう:
>>> 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'
ご覧のとおり、一部の結果は少し疑わしいものです。
あなたが望んでいたものではありませんが、それは出発点だと思います。
私が見つけた最良の解決策はスペイシーです、それは仕事をするようです
インストールするには:
pip3 install spacy
python3 -m spacy download fr_core_news_md
使用するには:
import spacy
nlp = spacy.load('fr_core_news_md')
doc = nlp(u"voudrais non animaux yeux dors couvre.")
for token in doc:
print(token, token.lemma_)
結果:
voudrais vouloir
non non
animaux animal
yeux oeil
dors dor
couvre couvrir
詳細については、ドキュメントをチェックアウトしてください: https://spacy.io/models/fr && https://spacy.io/usage
たぶんTreeTaggerで?私は試していませんが、このアプリはフランス語で動作します
http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/
http://txm.sourceforge.net/installtreetagger_fr.html
テキストで機械学習アルゴリズムを実行している場合は、Wordトークンの代わりにn-gramを使用できます。厳密に見出し語化ではありませんが、n個の類似した文字のシリーズを検出し、同じ意味の単語を集めることは驚くほど強力です。
私はsklearnの関数CountVectorizer(analyzer='char_wb')
を使用していますが、特定のテキストについては、単語の袋よりもはるかに効率的です。
フランスの銀行でテキストマイニングプロジェクトを行っている場合は、パッケージcltkをお勧めします。
install cltk
from cltk.lemmatize.french.lemma import LemmaReplacer
詳細については cltk