2018年10月1日月曜日

mozc 用「カナ英辞書V2」の変換

Ubuntu にて「カタカナ英語変換」を使うにはコンパイルが必要とのことでちょっと面倒、「Google日本語入力強化辞書」というものが公開されておりこの中に入っている「カナ英辞書v2」をユーザー辞書として登録してやるのが一番かんたんなのですが、文字コードが UTF-16 LE だったり、「ゔ」が文字化けしていたりとそのまますんなり使うというわけにも行かないようです。そこでそれらを変換する PHP スクリプトを作成しました。

機能

  1. 文字コードを UTF-16 LE から UTF-8 に変換
  2. 「?」に化けた「 ゔ」を置換
  3. よみが記号や漢字などひらがな以外で始まる単語を除去
  4. よみ、単語、品詞が一致していてコメントだけが違っている単語を1つにまとめる
  5. よみの先頭に@を追加

使い方


カレントディレクトリに「カナ英辞書v2.txt」をおいて実行すると UTF-8 に変換した辞書を標準出力に出力しますのでリダイレクトして好きなファイルに保存してください。

$ php カナ英辞書v2-utf8.php > カナ英辞書v2-utf8.txt

ソース

/**
 * 使い方
 *
 * カレントディレクトリに「カナ英辞書v2.txt」をおいて実行するとUTF-8に変換した辞書を出力
 * $ php カナ英辞書v2-utf8.php > カナ英辞書v2-utf8.txt
 */

// ファイルを読み込む
$file = file_get_contents('カナ英辞書v2.txt');

// UTF-16 LE → UTF-8
$file = mb_convert_encoding($file, 'UTF-8', 'UTF-16LE');

// 文字化けした'ゔ'を修正
$file = str_replace('?', 'ゔ', $file);

// 行で分解
$lines = explode("\n", $file);

// よみ、単語、品詞が一致するものを除外して出力
$last = ['', '', '', ''];
foreach ($lines as $line) {
    $cols = explode("\t", $line);

    // ひらがな以外で始まるよみは無視
    $c = mb_substr($cols[0], 0, 1);
    if (($c < 'あ') || ($c > 'ん')) {
        continue;
    }

    // 前回の出力と一致しているか調べる
    for ($i = 0; $i <= 2; ++ $i) {
        if ($last[$i] != $cols[$i]) {
            break;
        }
    }
    if ($i > 2) {
        // よみ、単語、品詞が一致しているので無視
        continue;
    }
    $last = $cols;

    echo "@{$cols[0]}\t{$cols[1]}\t{$cols[2]}\t{$cols[3]}\n";
}

0 件のコメント: