PythonとJuman++で分かち書きをするよ

自然言語処理JUMAN++

どうも、この前導入した新しい形態素解析器のJuman++ですが、マニュアルを見る限り、どうやら単体では分かち書きを出力できるようにはなっていないようです。というわけで、今回はJuman++とPythonを用いて分かち書きを行うプログラムを書いたので、ここで載っけておこうと思います。

本来ならGitHubとかにのせるべきなんでしょうが、デフォルトで分かち書きができるとかだととても恥ずかしいのでひっそりとここだけで完結しておきます。

プログラムの実行した準備として、Python3が動く環境とJuman++とpythonラッパーのインストールをよろしくお願いします。



OS : Ubuntu 16.04 LTS
Python : 3.5.2
Juman++ : 1.01


1. 書いたコード

今回書いたコードは以下のとおりです。

単純に分かち書きを行うならもう少しシンプルにかけますが、今回は対象とする品詞を制限する機能を付けたかったので、少しだけ長くなっています。

2. 使い方

では、次に使い方ですが、そこまで長いものではないので、読み飛ばしても大丈夫だと思います。

説明の都合上、ここでは上記のコードを「main.py」というファイルに記述しているとします。また、分かち書きにしたい元の文章が書かれているテキストファイルを「input.txt」とします。この条件では、以下のコマンドで分かち書きを実行することができます。

これで、プログラムが走ります。出力結果はデフォルトなら「out.txt」に記述されているはずです。

このコードでは、実行引数を持たせることで、解析対象とする品詞を限定することができます。限定するための引数は”-t”と”-e”で指定することができます。”-t”では、対象とする品詞を選べます(何も指定しなければすべての品詞が対象)。また、”-e”では対象にする品詞を選べます(デフォルトでは”未定義語”と”特殊”を対象外にしている)。つまり、このどちらも引数に持たせない場合だと、(なかなか気持ち悪い仕様ではありますが、)未定義語と特殊の品詞をもつ形態素は出力から除外されるということです。以下にいくつか実行例を載せておきます。

上記の実行引数以外に、出力ファイルのパスを変更する”-o”(デフォルトでは、”./out.txt”)と、分かち書きをする際に形態素の間に挿入される文字の変更ができる”-s”(デフォルトでは半角スペース)を用意しました。必要に合わせて使ってください。

おわりに

さて、今回はJumann++を使った分かち書きコードを載せました。別に難しいことは全くしていないので、上記のような残念コードではなく、自分にあうように自作してみればいいと思います。


JUMAN++ – KUROHASHI-KAWAHARA LAB

2016-11-15自然言語処理JUMAN++