しろかい!

アプリ開発や機械学習などの開発Tips.

OpenNLPのPOSTaggerの使い方まとめ

Apache OpenNLPのPOSTagger(品詞タグ付け器)の使い方をまとめました.

f:id:shun9167:20150211204036p:plain

はじめに:Apache OpenNLPとは?

Javaで実装されたオープンソース自然言語処理NLP)ライブラリです.
形態素解析,品詞タグ付け,固有表現抽出や, 色々なアルゴリズムやモデルをサポートしています.
今回はそれらの機能のうち,品詞タグ付けについて扱います. 英語を始めとした西洋の言語をサポートしており,日本語には対応していません.

POSTaggerとは?

文を与えると,文中の各単語の品詞(part-of-speech; pos)を返してくれる(品詞タグをつけてくれる)ものです.
例えば,「The Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text.」という文を与えると,以下のようにタグ付けしてくれます.

The  DT
Apache  NNPS
OpenNLP NNP
library NN
is  VBZ
a   DT
machine NN
learning    NN
based   VBN
toolkit NN
for IN
the DT
processing  NN
of  IN
natural JJ
language    NN
text.   NN

文は以下のOpenNLP公式サイトから引用しました.
なお,品詞タグの意味については以下のページをご覧ください.

英語:Penn Treebank P.O.S. Tags
日本語:http://someya-net.com/wlc/POStagset.html

OpenNLPの入手

OpenNLPは上記の公式サイトからDLできます.

Apache OpenNLP - Download

DLして解凍すると色々ファイルが出てきますが,使用するのは以下の2つのみです.

lib/opennlp-maxent-3.0.3.jar
lib/opennlp-tools-1.5.3.jar

これらのファイルをクラスパスに通しておいてください.

モデルファイルの入手

品詞タグ付けを行うにはモデルファイルが必要です.
以下からDLして下さい.

OpenNLP Tools Models

DLするのは,「en-pos-maxent.bin」です.

サンプルコードを動かしてみる

サンプルコードをGistに置いといたので,それを動かしてみてください.
使用前に,MODEL_FILE_PATHを先程DLしたモデルファイルのパスに設定してください.
実行すると,上記で示したような実行結果が出力されます.

tagger.tag(sentence)メソッドでタグ付けができます.
渡す文は予め単語の配列にしておく必要があります.
返り値はタグを格納した配列で,単語の配列のインデックスと対応しています.

細かいことはソースコード中に書いてあるのでそちらをご覧ください.わずか30行のコードです^^