他の言語を処理させるNLTKのPOSタグ付け関数および関数化関数に渡すことはできません。
各言語のトレーニングコーパスを取得し、NLTKを使用して自分のPOS-taggersを訓練し、言語ごとに二語彙ベースの解決策を見つけ出すことが1つの解決策です。
イタリア語、フランス語、スペイン語、ドイツ語(および他の多くの言語)の両方のタスクに対して既に単一の停止ソリューションがあるので、それは残念です。TreeTagger。それは、英語のPOSタガーやレマタイザーと同じくらい最先端の技術ではありませんが、まだまだ良い仕事です。
あなたが望むのは、システムにTreeTaggerをインストールし、Pythonから呼び出せるようにすることです。ここではそれを可能にするGitHub repo by miottoがあります。
次のスニペットは、すべてを正しく設定したことをテストする方法を示しています。ご覧のとおり、私はPOSタグをつけることができ、1つの関数呼び出しでlemmatizeすることができます。英語とフランス語で簡単にやりとりすることができます。
>>> 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、ではないので)、私は、問題に関するブログ記事を書いて、できるだけ早くそれへのリンクをこの答えを更新しますので、されているように。
EDIT: Here is the above-mentioned blog post.
私はタイのためにこのタガーを試していましたが、うまくいきません。それは私にNCNMとして長い文字列を与えます。代わりにトークン列を取らなければならないのですか? – aceminer
はい、タガーを使用する前に、タイ語の単語分割を実行する必要があります。 – NQD