2017-06-13 7 views
0

私は最近、ドイツ語テキストのセンチメント分析プロジェクトに取り掛かりましたが、結果を改善するためにステマーを使用する予定です。Python NLTKにおける感情分析のためのドイツ語ステミング

NLTKにはドイツのSnowball Stemmerが付属していますが、すでに使用しようとしていますが、結果は不明です。多分それはこのようにすべきですが、言語学者ではなくコンピュータ科学者であるため、私は動詞の形が異なる幹につながってしまう問題があります。

"suchen"(検索する)という単語をとります。これは第1人の単数は「such」、第三者singularは「sucht」に由来します。

私も知っているが、ドイツ語のリーマライザは、私が知る限りNLTKに統合されていません。 GermaNetがありますが、NLTKの統合は中止されたようです。

要点:私は、同じ時制の中の普通の動詞では、変わった動詞の形を同じ形にしたいと思います。これが私の目標にとって有益な要件でない場合は、理由を教えてください。そうであれば、この目標を達成するのに役立つ追加のリソースを知っていますか?

編集:忘れてしまったのは、ソフトウェアは教育目的や研究目的に自由に使用できることです。

答えて

2

コンピュータ科学者として、あなたは間違いなくこの言語的な問題に取り組むために正しい方向を見ています。ステミングは、通常、かなり単純化されており、レキシコンサイズを縮小するために情報検索タスクに使用されますが、通常はより洗練された言語分析には十分ではありません。補題は、ステミングのユースケースと部分的に重複するが、例えば、動詞の変奏曲をすべて同じルート形式(補題)に書き換えること、および名詞として「仕事」を、動詞として「仕事」を区別することを含むレマタイザーの実装と品質)。そのためには、通常、POSタグや構文木などの情報を少し必要とするため、かなり長い時間がかかり、通常は大量のデータを処理するIRタスクには適さなくなります。

GermaNetに加えて(無料だったので、実際に試したことはありませんでしたが、アクセスを取得するために同意する必要があります)、そこにSpaCyがあります見て:https://spacy.io/docs/usage/

非常にインストールして使用するのは簡単です。使用してドイツのものをダウンロードした後、Webサイトの指示をインストールを参照してください:

python -m spacy download de 

その後:

>>> import spacy 
>>> nlp = spacy.load('de') 
>>> doc = nlp('Wir suchen ein Beispiel') 
>>> for token in doc: 
...  print(token, token.lemma, token.lemma_) 
... 
Wir 521 wir 
suchen 1162 suchen 
ein 486 ein 
Beispiel 809 Beispiel 
>>> doc = nlp('Er sucht ein Beispiel') 
>>> for token in doc: 
...  print(token, token.lemma, token.lemma_) 
... 
Er 513 er 
sucht 1901 sucht 
ein 486 ein 
Beispiel 809 Beispiel 

あなたが見ることができるように、残念ながらそれは(あなたの具体的な例には非常に良い仕事をしていません私は数字が何を表しているのか分かりません(つまり、字句IDでなければなりませんが、他の情報はこれで得られます)。しかし、おそらくあなたはそれを与えて、それがあなたを助けるかどうかを知ることができます。

+0

お返事ありがとうございます。お返事いただければ幸いです。 – Florian

関連する問題