stanford POS tagger をPythonで呼び出すまとめ
Stanford POS tagger といえば、最大エントロピー法を利用したPOS Taggerだが(知ったかぶり)、これはjavaで書かれている。
それはいいとして、Pythonで呼び出すには、すでになかなか便利な方法が用意されている。Pythonの自然言語処理パッケージのnltkを使えばいいのだ。
で、stanford POS taggerの公式ホームページにもそのことが書いてあるんだけど、これには注意が必要。なぜなら、nltkバージョンが違っていて、最新版では動かないからだ。
なので、最新版では以下のようなやり方で呼び出さないといけない。
※nltkのバージョンは2.0.4を使った。自分のnltkのバージョンがnltk.__version__ で確認できる。
>>> from nltk.tag.stanford import POSTagger >>> st = POSTagger("./stanford-postagger-2012-11-11/models/wsj-0-18-left3words.tagger","./stanford-postagger-2012-11-11/stanford-postagger.jar") >>> st.tag(("I am student.").split()) [('I', 'PRP'), ('am', 'VBP'), ('student.', 'NN')]
2行目ではPOSTaggerクラスを呼び出している。この時、第一引数でstanford POS taggerのタグつけモデルを選択、第二引数でstanford pos taggerが存在する場所を指定してやる。そして、インスタンスとしてstに代入。
使うときはstのメソッドtagを呼び出せばいい。
何度もしつこく書くが、nltkはバージョンは非常にシビアである。ちょっとバージョンが異なるだけで、仕様が違うので、よーく公式ページを確認しないといけない。