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はバージョンは非常にシビアである。ちょっとバージョンが異なるだけで、仕様が違うので、よーく公式ページを確認しないといけない。