Windows 版 Mecab で半角カナが混入していると文字化けする
Mecab 0.97 Windows 版を、とある目的で結構使ったりしていますが、最近結構はまってます。
恐らく Windows 版というよりは SJIS の文字コード帯域にからむバグ(仕様?)だと思うんですけど、半角カナつまりは、SJIS の文字コードで言うと、
(= HALFWIDTH IDEOGRAPHIC FULL STOP 〜 HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK)
までの領域の文字コードが解析対象の文字列に混在していると形態素解析に失敗するようです。
もうちょっと文字コードについてわかりやすい図を用意しました。ずばり http://ash.jp/code/codetbl1.htm のキャプチャです。w
さて、形態素解析の失敗例はこんな感じ。例えば 「aaa・bbb」(※実際は・は半角文字) と入力した場合
次に 「アアアンイイイ」(※実際はンが半角文字) と入力した場合
次に 「アアアンあイイイ」(※実際はンが半角文字) と入力した場合
ちょっとした検証では、なんだか半角カナのコードの後に初めて出現する 0x833F - 0x835E の範囲の 2byte 系文字で失敗しているような気がしますが、時間が無くてあまり深くは検証してません・・・ (┳ω┳)
↓ 問題が発生しそうな文字は以下の赤線の部分。他の領域にも同様の問題が存在するかも??
コメントやシェアをお願いします!
ありりん
この記事読んで、Mecab知らなかったのでググってみました。ヾ('ω'*)ノ
おもしろいっすね。特に辞書に無い言葉を推測するところがいいっすね。
判定させる文字をUTF-8に変更して、
Mecabの文字コードをUTF-8に設定するとか。←すでに試してますよね、きっと。。。
半角をすべて全角に変換するとかってのは、半角カナ廃れてれば幸いと思ってたら、
考えてみると携帯でよく使われてるんですよね半角カナ。