質問

NLTKを使用して、次のコマンドで始まるテキスト文字列から名詞を抽出しています:

tagged_text = nltk.pos_tag(nltk.Text(nltk.word_tokenize(some_string)))

英語で問題なく動作します。 ドイツ語でも簡単に機能させる方法はありますか

(自然言語プログラミングの経験はありませんが、これまでのところ素晴らしいPython nltkライブラリを使用できました。)

役に立ちましたか?

解決

Natural言語ソフトウェアは、コーパスとコーパスが提供する統計を活用することで魔法をかけます。ドイツ語を正しくトークン化するために、ドイツ語コーパスについてnltkに伝える必要があります。 EUROPARL コーパスがあなたを助けてくれると信じています。

nltk.corpus.europarl_raw およびこの回答の設定例。

また、この質問に" nlp"のタグを付けることを検討してください。

他のヒント

パターンライブラリには、ドイツ語の文と結果には品詞タグが含まれます。以下は彼らのドキュメントからコピーされています:

from pattern.de import parse, split
s = parse('Die Katze liegt auf der Matte.')
s = split(s)
print s.sentences[0]

>>>   Sentence('Die/DT/B-NP/O Katze/NN/I-NP/O liegt/VB/B-VP/O'
     'auf/IN/B-PP/B-PNP der/DT/B-NP/I-PNP Matte/NN/I-NP/I-PNP ././O/O')

SSTSタグセットが必要な場合は、オプションパラメータ tagset =" STTS" を設定できます。

品詞(POS)のタグ付けは、特定の[自然]言語に非常に固有です。 NLTKには多くの異なるタガーが含まれており、これらは異なる手法を使用して、特定のトークン内の特定のトークンのタグを推測します。これらのタガーのほとんど(すべてではありません)は、「トリックを行う」ためのメインまたは唯一のデバイスとして、ある種の統計モデルを使用します。このようなタガーには、「トレーニングデータ」が必要です。言語のこの統計的表現を構築し、トレーニングデータはコーパスの形式で提供されます。

NTLK"配布"それ自体には、これらのコーパスの多くと「コーパスリーダー」のセットが含まれます。さまざまな種類のコーパスを読み取るためのAPIを提供します。 NTLK固有の状況はわかりません。これにドイツ語コーパスが含まれているかどうかはわかりません。ただし、無料のコーパスを見つけて、適切なNTLKコーパスリーダーを満たす形式に変換する必要があります。これを使用して、ドイツ語のPOSタガーをトレーニングできます。

独自のコーパスを作成することもできますが、それは骨の折れる仕事の地獄です。大学で働く場合は、学生に賄andを贈ったり、学生に強制する方法を見つけなければなりません;-)

おそらく、スタンフォードPOSタガーを使用できます。以下は私が書いたレシピです。私がコンパイルしたドイツ語NLPのpythonレシピがあり、 http://htmlpreview.github.io/?https://github.com/alvations/DLTK/blob/master/docs/index.html

#-*- coding: utf8 -*-

import os, glob, codecs

def installStanfordTag():
    if not os.path.exists('stanford-postagger-full-2013-06-20'):
        os.system('wget http://nlp.stanford.edu/software/stanford-postagger-full-2013-06-20.zip')
        os.system('unzip stanford-postagger-full-2013-06-20.zip')
    return

def tag(infile):
    cmd = "./stanford-postagger.sh "+models[m]+" "+infile
    tagout = os.popen(cmd).readlines()
    return [i.strip() for i in tagout]

def taglinebyline(sents):
    tagged = []
    for ss in sents:
        os.popen("echo '''"+ss+"''' > stanfordtemp.txt")
        tagged.append(tag('stanfordtemp.txt')[0])
    return tagged

installStanfordTag()
stagdir = './stanford-postagger-full-2013-06-20/'
models = {'fast':'models/german-fast.tagger',
          'dewac':'models/german-dewac.tagger',
          'hgc':'models/german-hgc.tagger'}
os.chdir(stagdir)
print os.getcwd()


m = 'fast' # It's best to use the fast german tagger if your data is small.

sentences = ['Ich bin schwanger .','Ich bin wieder schwanger .','Ich verstehe nur Bahnhof .']

tagged_sents = taglinebyline(sentences) # Call the stanford tagger

for sent in tagged_sents:
    print sent

ドイツの注釈付きTIGER CorpusをNLTKで使用するために変換する方法についてのブログ投稿を書きました。 こちらをご覧ください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top