はじめに
Sudachi の辞書ソースにはつかわれていない、あるいは何につかわれているかがあまり説明されていないカラムがいくつかあります。何回かにわけてそういったカラムについて説明していきます。今回は小ネタです。(その1、その2)
14カラム目の話
今回は14カラム目 (0はじまりで) のお話です。このカラムはユーザー辞書のドキュメントには「分割タイプ」とあり、A、B、C、アスタリスク (*) いずれかの値を記述するように書かれています。このカラムのあと15カラム目が A 単位分割情報、16カラム目が B 単位分割情報になっています。それぞれじぶんがA単位に分割されたときの A 単位語のリスト、B 単位に分割されたときの B 単位語のリストです。
Sudachi の解析は分割されない状態でおこなわれます。べつのいい方をすると TRIE に登録されている語1だけで辞書引きし、ラティスを作成、最適なパスが選ばれます。この最適パスとしてえられた形態素列が C 単位モードの出力結果になります2。
B 単位モード、A 単位モードで出力する際は、この C 単位モードの形態素列にふくまれるそれぞれの語にたいして、B 単位分割情報、A 単位分割情報を参照して分割がおこなわれます (LatticeNodeImpl.java)。つまり、自分が A、B、C どの単位の語であるかに関係なく、B 単位分割情報や A 単位分割情報をもっていればその形態素列に分割されるわけです。
あらためてかんがえると A 単位分割情報や B 単位分割情報があれば分割タイプの情報は不要です。そのため分割タイプの情報は辞書の内部構造には記録されていません。というわけで、このカラムは辞書ソースをパーズするときのエラーチェックのみにつかわれています3。
ではよい Sudachi life を。
-
左連接 ID に-1を指定すると TRIE から除外されます。 ↩
-
厳密にいうと最適パスにたいして
PathRewritePlugin
で書き換えがおこなわれたあとの形態素列です。 ↩ -
分割タイプに A が指定されているのに A 単位分割情報や B 単位分割情報があるとエラーになります。(CsvLexicon.java) ↩