目次
Kuromoji-CLIの使い方などについては過去のブログを御覧ください。
Issueだけ上げていたJSON出力対応をしました。 また、ラティス(後述)の出力対応もしました。
JSON出力
LinderaがJSON出力に対応してるのでそれを真似しました。
-o json
で指定していただくと、次のようなJSONが出力されます。
% echo "春眠暁を覚えず" | build/graal/kuromoji -o json
[
{
"text": "春眠",
"detail": [
"名詞",
"一般",
"*",
"*",
"*",
"*",
"春眠",
"シュンミン",
"シュンミン"
]
},
{
"text": "暁",
"detail": [
"名詞",
"一般",
"*",
"*",
"*",
"*",
"暁",
"アカツキ",
"アカツキ"
]
},
{
"text": "を",
"detail": [
"助詞",
"格助詞",
"一般",
"*",
"*",
"*",
"を",
"ヲ",
"ヲ"
]
},
{
"text": "覚え",
"detail": [
"動詞",
"自立",
"*",
"*",
"一段",
"未然形",
"覚える",
"オボエ",
"オボエ"
]
},
{
"text": "ず",
"detail": [
"助動詞",
"*",
"*",
"*",
"特殊・ヌ",
"連用ニ接続",
"ぬ",
"ズ",
"ズ"
]
}
]
Viterbiラティス出力
Kuromojiが内部でトークンをどのように切り出すかを計算するためのViterbiのラティスです。これをGraphvizというツールのDOTフォーマットのファイルとして出力できるメソッドがデバッグ用ですが、Kuromojiに用意されています。
こちらを呼び出して出力するオプション-v
(もしくは--viterbi
)を追加しました。
注意点として、このオプションを指定すると、DOTファイルが標準出力に出力され、トークンの結果は標準エラーに出力されます。
echo "春眠暁を覚えず" | build/graal/kuromoji -v > viterbi.dot
.dot
ファイル自体は画像ではないので、Graphvizのdot
コマンドにて画像ファイルに変換する必要があります。
dot -Tpng viterbi.dot -oviterbi.png
これで、PNGファイルが出来上がります。出来上がったファイルはこんな感じです。
画像を見ていただくと、緑色のパスがあるのがわかります。 こちらが、Kuromojiが実際に採用した形態素のリストです。それ以外のパスは不採用だったパスとなります。
ちなみに、macOSで1行で画像表示まで行うにはこんな感じで実行します。
open
コマンドでpreviewアプリを指定することで画像が表示できます。
Windowsは。。。わかりません、すみません。
% echo "春眠暁を覚えず" | build/graal/kuromoji -v -o json | dot -Tpng | open -f -a preview.app
まとめ
これ以前に複数辞書対応などもしていました。 今回は2つの出力形式を追加してみました。 特にViterbiラティス出力については、内部的にどのようなコスト計算で最終的な結果が出てきているかという理解に役立ちます。想定していない切れ方の場合は、そもそも想定している形態素になっていないか、コスト計算で不採用だったかなどを確認できますので、使ってみると面白いかもです。
comments powered by Disqus
See Also by Hugo
- KuromojiのCLIコマンドとpicocliとGraalVM
- Elasticsearchの新しいJavaクライアント(2024年3月版)
- GoでSlackのボットを作った話
- 仕事中のBGM環境
- ローマ字入力のゆれと読み(JapaneseCompletionAnalyzerその2)