MeCab の解析結果からラティスを作成する
MeCab の解析結果からラティスを作成するスクリプトを書いてみました。N-best 解を集計して Graphviz の dot ファイルを出力するものです。
github.com
以下のように実行すると、MeCab での解析結果が png 形式の画像ファイルとして出力されます。実行には MeCab, PHP のほかに Graphviz のインストールが必要です。
$ echo 'すもももももももものうち。' | ./mecab-nbest-prob.sh -N 10 | php nbest2dot.php | dot -Tpng -o lattice.png
上記の実行例では、以下の png ファイルが得られます*1。各ノードは形態素を表し、エッジは形態素間の連接を表します。各ノードの括弧内の数字は、左側が単語生起コスト、右側は最小の累積コストです。エッジに付けられた数字は連接コストです。
N-best 解のコストを表示する処理については、下記のブログ記事が大変参考になりました*2。
MeCab で N-Best 解の累積コストを出力する - あらびき日記
本来 MeCab では、出力フォーマットを指定することでコストを出力できるはずなのですが、現在は実装上の問題により、誤った値を出力してしまうようです。参照先のブログ記事では、一度形態素解析を実行してから、その結果を用いた制約付き解析を行うことで、正しいコストを出力するという対処方法が示されています。