juman++

JUMAN++で未定義語が認識された場合に発生する可能性のあるバグとその対処法

JUMAN++を使っているときに発生したバグ。

環境

JUMAN++ Ver1.02

症状1

「未定義語のうち、アルファベットとして認識された単語+動詞、形容詞などの単語」の組み合わせで、動詞、形容詞などの単語が名詞+他の単語として認識されてしまう。

$ echo  apple食べる| jumanpp
apple apple apple 未定義語 15 アルファベット 3 * 0 * 0 "品詞推定:名詞"
食 しょく 食 名詞 6 普通名詞 1 * 0 * 0 "代表表記:食/しょく 漢字読み:音 カテゴリ:抽象物 ドメイン:料理・食事"
べる べる べる 名詞 6 人名 5 * 0 * 0 "自動獲得:Wikipedia Wikipedia人名 Wikipedia名"

「食べる」が「食」+「べる」として認識されてしまっている。

対処法

・アルファベットと動詞、形容詞などの単語の間にスペースを入れる。

$ echo  apple 食べる| jumanpp
apple apple apple 未定義語 15 アルファベット 3 * 0 * 0 "品詞推定:名詞"
\  \  \  特殊 1 空白 6 * 0 * 0 "代表表記: / "
食べる たべる 食べる 動詞 2 * 0 母音動詞 1 基本形 2 "代表表記:食べる/たべる ドメイン:料理・食事"

症状2

「半角記号+半角スペース+動詞、形容詞などの単語」の組み合わせで、動詞、形容詞などの単語が名詞+他の単語として認識されてしまう。

$ echo  ? 使う| jumanpp
?\  ?\  ?\  未定義語 15 その他 1 * 0 * 0 "品詞推定:名詞"
使 つかい 使 名詞 6 普通名詞 1 * 0 * 0 "代表表記:使い/つかいv 送り仮名引っ込み 連用形名詞化:形態素解析"
う う う 名詞 6 普通名詞 1 * 0 * 0 "代表表記:鵜/う カテゴリ:動物"
@ う う う 名詞 6 普通名詞 1 * 0 * 0 "代表表記:雨/う 漢字読み:音 カテゴリ:抽象物"
@ う う う 名詞 6 普通名詞 1 * 0 * 0 "代表表記:卯/う カテゴリ:場所-機能;時間"

「使う」が「使」+「う」として認識されてしまっている。

対処法

・全角記号を使う

$ echo  ? 使う| jumanpp
? ? ? 特殊 1 記号 5 * 0 * 0 NIL
\  \  \  特殊 1 空白 6 * 0 * 0 "代表表記: / "
使う つかう 使う 動詞 2 * 0 子音動詞ワ行 12 基本形 2 "代表表記:使う/つかう"

・スペースを消す

$ echo  ?使う| jumanpp
? ? ? 特殊 1 記号 5 * 0 * 0 NIL
使う つかう 使う 動詞 2 * 0 子音動詞ワ行 12 基本形 2 "代表表記:使う/つかう"

さいごに

JUMAN++はあくまで日本語形態素解析システムであり、アルファベットや半角記号などが入ることは想定外だと思われます。しかし、こういう想定外の使い方をしてしまう人はいます。このことから、例外処理やデバッグは大切だということが再確認できました。