14

最近、私は NLP に取り組み、テキストの分析にNLTKTextBlobを使用しようとしました。旅行者のレビューを分析するアプリを開発したいので、さまざまな言語で書かれた多くのテキストを管理する必要があります。POS タグ付けと見出し語化という 2 つの主な操作を行う必要があります。NLTK では、次のように文のトークン化に適切な言語を選択できる可能性があることを確認しました。

tokenizer = nltk.data.load('tokenizers/punkt/PY3/italian.pickle')

POS Tagging と Lemmatizer の言語を異なる言語で設定する正しい方法をまだ見つけていません。イタリア語、フランス語、スペイン語、ドイツ語などの英語以外のテキストに正しいコーパス/辞書を設定するにはどうすればよいですか? 「TreeBank」または「WordNet」モジュールをインポートする可能性があることもわかりましたが、それらをどのように使用できるかわかりません。それ以外の場合、それぞれのコーパスはどこにありますか?

アドバイスや参考にさせていただけませんか?私は NLTK の専門家ではないことに注意してください。

どうもありがとう。

4

2 に答える 2

10

別の多言語 POS タガーを探している場合は、RDRPOSTaggerを試してみてください。これは、堅牢で使いやすく、言語に依存しない、POS および形態学的タグ付け用のツールキットです。13 言語のパフォーマンス速度とタグ付け精度を含む実験結果については、このホワイト ペーパーを参照してください。RDRPOSTagger は、ブルガリア語、チェコ語、オランダ語、英語、フランス語、ドイツ語、ヒンディー語、イタリア語、ポルトガル語、スペイン語、スウェーデン語、タイ語、ベトナム語の事前トレーニング済みの POS および形態学的タグ付けモデルをサポートするようになりました。RDRPOSTagger は、40 の言語の事前トレーニング済みユニバーサル POS タグ付けモデルもサポートしています。

Python では、未加工のラベルなしテキスト コーパスを次のようにタグ付けするために、事前トレーニング済みのモデルを利用できます。

python RDRPOSTagger.py tag PATH-TO-PRETRAINED-MODEL PATH-TO-LEXICON PATH-TO-RAW-TEXT-CORPUS

例:python RDRPOSTagger.py tag ../Models/POS/German.RDR ../Models/POS/German.DICT ../data/GermanRawTest

RDRPOSTagger を使用してプログラミングする場合は、パッケージ内のRDRPOSTagger.pyモジュールのコード行 92 ~ 98 に従ってください。pSCRDRTagger次に例を示します。

r = RDRPOSTagger()
r.constructSCRDRtreeFromRDRfile("../Models/POS/German.RDR") #Load POS tagging model for German
DICT = readDictionary("../Models/POS/German.DICT") #Load a German lexicon 
r.tagRawSentence(DICT, "Die Reaktion des deutschen Außenministers zeige , daß dieser die außerordentlich wichtige Rolle Irans in der islamischen Welt erkenne .")

r = RDRPOSTagger()
r.constructSCRDRtreeFromRDRfile("../Models/POS/French.RDR") # Load POS tagging model for French
DICT = readDictionary("../Models/POS/French.DICT") # Load a French lexicon
r.tagRawSentence(DICT, "Cette annonce a fait l' effet d' une véritable bombe . ")
于 2015-11-22T04:01:51.460 に答える
7

NLTK の POS タグ付けおよび見出し語化関数に渡して、他の言語を処理させるオプションはありません。

1 つの解決策は、各言語のトレーニング コーパスを取得し、独自の POS タガーを NLTK でトレーニングしてから、言語ごとに、おそらく辞書ベースの見出し語化ソリューションを見つけることです。

ただし、イタリア語、フランス語、スペイン語、ドイツ語 (および他の多くの言語) の両方のタスクに対する単一のソリューションが既に存在するため、これはやり過ぎかもしれません: TreeTagger . 英語の POS タガーやレンマタイザーほど最新ではありませんが、それでも十分に機能します。

必要なのは、システムに TreeTagger をインストールして、Python から呼び出すことができるようにすることです。これは、まさにそれを可能にする miottoによる GitHub リポジトリーです。

次のスニペットは、すべてが正しく設定されていることをテストする方法を示しています。ご覧のとおり、1 回の関数呼び出しで POS タグ付けと見出し語化を行うことができ、英語でもフランス語でも同じように簡単に行うことができます。

>>> import os
>>> os.environ['TREETAGGER'] = "/opt/treetagger/cmd" # Or wherever you installed TreeTagger
>>> from treetagger import TreeTagger
>>> tt_en = TreeTagger(encoding='utf-8', language='english')
>>> tt_en.tag('Does this thing even work?')
[[u'Does', u'VBZ', u'do'], [u'this', u'DT', u'this'], [u'thing', u'NN', u'thing'], [u'even', u'RB', u'even'], [u'work', u'VB', u'work'], [u'?', u'SENT', u'?']]
>>> tt_fr = TreeTagger(encoding='utf-8', language='french')
>>> tt_fr.tag(u'Mon Dieu, faites que ça marche!')
[[u'Mon', u'DET:POS', u'mon'], [u'Dieu', u'NOM', u'Dieu'], [u',', u'PUN', u','], [u'faites', u'VER:pres', u'faire'], [u'que', u'KON', u'que'], [u'\xe7a', u'PRO:DEM', u'cela'], [u'marche', u'NOM', u'marche'], [u'!', u'SENT', u'!']]

この質問はよく聞かれるので (そして、インストール プロセスは非常に簡単ではないため、IMO から)、この問題に関するブログ投稿を書き、完了したらすぐにこの回答へのリンクを付けて更新します。

編集: これは上記のブログ投稿です。

于 2015-10-06T20:15:13.760 に答える