小文字かな辞書エントリの混入問題
概要
システム辞書 SKK-JISYO.akaza に小文字かな(拗音・促音)で始まる不正なエントリが 1,359件 混入していた。これにより、変換時に不正な分節が選択され誤変換が発生する。
例: 「じゅうらんしゃじけん」→「自ゅうらんしゃじけん」(銃乱射事件)
発生メカニズム
1. Wikipedia の読みがなにカタカナが混じる
Wikipedia の記事には以下のような表記がある:
コロンバイン高校銃乱射事件(コロンバインこうこうじゅうらんしゃじけん、英: ...)
2. 読みがな除去の正規表現がカタカナに非対応
wikipedia_extracted.rs の読みがな除去パターンはひらがなのみを対象としていた:
[(\(][\u3041-\u309F、]+[))]
「コロンバイン」はカタカナなのでパターンにマッチせず、括弧内の読みがながテキストに残る。
3. vibrato が読みがなを不正にトークナイズ
残った「こうこうじゅうらんしゃじけん」を vibrato がトークナイズすると:
こう(既知語)こうじ(既知語: 麹、工事 等)ゅうらんしゃじけん← 小文字ゅ始まりの未知語
vibrato が こうじ を貪欲にマッチした結果、残りが小文字かな始まりになる。
4. vocab → 辞書への混入
Wikipedia 中に31回出現するため wfreq の閾値(16)を超え、vocab に登録される。最終的にシステム辞書に ゅうらんしゃじけん /ゅうらんしゃじけん/ として入る。
5. 変換時の分節崩壊
ユーザーが「じゅうらんしゃじけん」と入力すると、辞書に ゅうらんしゃじけん があるため「じ」+「ゅうらんしゃじけん」に分節され、「自ゅうらんしゃじけん」と変換される。
修正内容
修正1: 読みがな除去パターンのカタカナ対応
wikipedia_extracted.rs の正規表現をカタカナも含むように変更:
# Before
[(\(][\u3041-\u309F、]+[))]
# After
[(\(][\u3041-\u309F\u30A0-\u30FF、]+[))]
修正2: vocab 生成時のバリデーション
vocab.rs に小文字かな始まりのエントリを弾くフィルタを追加。読みがな除去で漏れた場合の安全策:
- ぁぃぅぇぉゃゅょっ(小文字ひらがな)
- ァィゥェォャュョッ(小文字カタカナ)
で始まるエントリを vocab 生成時にスキップする。
影響範囲
辞書の不正エントリ 1,359件が次回の corpus-stats リビルドで解消される見込み。