どうせ和布蕪るなら、続き (mecab-ipadic-neologd の部分活用からの派生 … 「!」「?」の扱い)

アカデミックな話になるかもしんない。

前回の決断は「mecab-ipadic-neologd の全活用は目的に合わんので取捨選択する」ということであった。

して結局チマチマほとんど一つずつ検証しているわけなんだけれど、ちょっとね、「neologd 有無如何によらず釈然としない」ものがあった:

1.txt が neologd なし、2.txt は neologd あり
 1 --- 1.txt	2019-10-09 18:47:16 +0900
 2 +++ 2.txt	2019-10-09 18:58:30 +0900
 3 @@ -1,4 +1,6 @@
 4  【	記号,括弧開,*,*,*,*,【,【,【
 5 -乗り込め	動詞,自立,*,*,一段,連用形,乗り込める,ノリコメ,ノリコメ
 6 -!!】	名詞,サ変接続,*,*,*,*,*
 7 +乗り込め	動詞,自立,*,*,五段・マ行,命令e,乗り込む,ノリコメ,ノリコメ
 8 +!	記号,一般,*,*,*,*,!,!,!
 9 +!	記号,一般,*,*,*,*,!,!,!
10 +】	記号,括弧閉,*,*,*,*,】,】,】
11  EOS

この差異は、 neologd が追加している以下エントリ:

1 !,5,5,1817,記号,一般,*,*,*,*,!,!,!
2 ?,5,5,1977,記号,一般,*,*,*,*,?,?,?

の影響である。(【】 はオリジナルの IPA 辞書にいる。)

もっと詳しく言うと、 mecab には unk.def というフォールバックのための辞書が存在していて:

 1 DEFAULT,5,5,4769,記号,一般,*,*,*,*,*
 2 SPACE,9,9,8903,記号,空白,*,*,*,*,*
 3 KANJI,1285,1285,11426,名詞,一般,*,*,*,*,*
 4 KANJI,1283,1283,17290,名詞,サ変接続,*,*,*,*,*
 5 KANJI,1293,1293,17611,名詞,固有名詞,地域,一般,*,*,*
 6 KANJI,1292,1292,12649,名詞,固有名詞,組織,*,*,*,*
 7 KANJI,1289,1289,17340,名詞,固有名詞,人名,一般,*,*,*
 8 KANJI,1288,1288,15295,名詞,固有名詞,一般,*,*,*,*
 9 SYMBOL,1283,1283,17585,名詞,サ変接続,*,*,*,*,*
10 NUMERIC,1295,1295,27386,名詞,数,*,*,*,*,*
11 ALPHA,1285,1285,13398,名詞,一般,*,*,*,*,*
12 ALPHA,1293,1293,18706,名詞,固有名詞,地域,一般,*,*,*
13 ALPHA,1292,1292,13835,名詞,固有名詞,組織,*,*,*,*
14 ALPHA,1289,1289,18188,名詞,固有名詞,人名,一般,*,*,*
15 ALPHA,1288,1288,15673,名詞,固有名詞,一般,*,*,*,*
16 ALPHA,3,3,15235,感動詞,*,*,*,*,*,*
17 HIRAGANA,1285,1285,13069,名詞,一般,*,*,*,*,*
18 HIRAGANA,1283,1283,20223,名詞,サ変接続,*,*,*,*,*
19 HIRAGANA,1293,1293,17882,名詞,固有名詞,地域,一般,*,*,*
20 HIRAGANA,1292,1292,14761,名詞,固有名詞,組織,*,*,*,*
21 HIRAGANA,1289,1289,18060,名詞,固有名詞,人名,一般,*,*,*
22 HIRAGANA,1288,1288,14787,名詞,固有名詞,一般,*,*,*,*
23 HIRAGANA,3,3,16989,感動詞,*,*,*,*,*,*
24 KATAKANA,1285,1285,9461,名詞,一般,*,*,*,*,*
25 KATAKANA,1293,1293,13661,名詞,固有名詞,地域,一般,*,*,*
26 KATAKANA,1292,1292,10922,名詞,固有名詞,組織,*,*,*,*
27 KATAKANA,1289,1289,13581,名詞,固有名詞,人名,一般,*,*,*
28 KATAKANA,1288,1288,10521,名詞,固有名詞,一般,*,*,*,*
29 KATAKANA,3,3,14138,感動詞,*,*,*,*,*,*
30 KANJINUMERIC,1295,1295,27473,名詞,数,*,*,*,*,*
31 GREEK,1285,1285,7884,名詞,一般,*,*,*,*,*
32 GREEK,1293,1293,12681,名詞,固有名詞,地域,一般,*,*,*
33 GREEK,1292,1292,8573,名詞,固有名詞,組織,*,*,*,*
34 GREEK,1289,1289,12697,名詞,固有名詞,人名,一般,*,*,*
35 GREEK,1288,1288,10029,名詞,固有名詞,一般,*,*,*,*
36 CYRILLIC,1285,1285,7966,名詞,一般,*,*,*,*,*
37 CYRILLIC,1293,1293,12600,名詞,固有名詞,地域,一般,*,*,*
38 CYRILLIC,1292,1292,8492,名詞,固有名詞,組織,*,*,*,*
39 CYRILLIC,1289,1289,12615,名詞,固有名詞,人名,一般,*,*,*
40 CYRILLIC,1288,1288,9866,名詞,固有名詞,一般,*,*,*,*

これに落ちるかどうかが変化している。

オリジナルの IPA 辞書にも全角の方の「!」「?」は登録されているので、テキストが『【乗り込め!!】』だった場合は neologd 有無で結果は変化しない。

MeCab は文字列の合致だけで辞書から引いているわけではなくて、日本語としての形態のコンテキストに応じて引っ張ってくるわけである。だから、形態要素A の後ろに何が来るかによって判定が変わるわけだ。つまり neologd なしの場合は「サ変接続」が後ろに続くので「一段,連用形」(「乗り込め する」と繋がる、かのように判断している)、ありの場合は「記号」が後ろに続くのでつまりは文の終わりとみなして「五段・マ行,命令e」だと判断するわけだ。

いやいや…。

「言語学、日本語学」としての定義は知らないよ。けどさぁ。!、? って「一般」としなくてもいいんじゃないのかなって気がしてきたんだわ。「句点」にしちゃえばいいんじゃね? 少なくとも実用的にはそれがベストなんではないのか。実際やってみた:

1 !,8,8,-202,記号,句点,*,*,*,*,!,!,!
2 ?,8,8,-202,記号,句点,*,*,*,*,?,?,?
1.txt がオリジナル、2.txt は「句点」追加
 1 --- 1.txt	2019-10-09 18:47:16 +0900
 2 +++ 3.txt	2019-10-09 19:26:03 +0900
 3 @@ -1,4 +1,6 @@
 4  【	記号,括弧開,*,*,*,*,【,【,【
 5 -乗り込め	動詞,自立,*,*,一段,連用形,乗り込める,ノリコメ,ノリコメ
 6 -!!】	名詞,サ変接続,*,*,*,*,*
 7 +乗り込め	動詞,自立,*,*,五段・マ行,命令e,乗り込む,ノリコメ,ノリコメ
 8 +!	記号,句点,*,*,*,*,!,!,!
 9 +!	記号,句点,*,*,*,*,!,!,!
10 +】	記号,括弧閉,*,*,*,*,】,】,】
11  EOS

まぁほんとに記号的に『!!おすすめでっす!!』という書き方だって別に警察につかまるわけじゃないけどね、それって別に句読点だって同じ。私も「、、、えーっと。」なんてことを結構やる。のでこれを気にしたって仕方ない。

うん、こうしておこう、ワタシの辞書では。