mecabにはてなキーワードのタイトルリストを追加する

mecabにwikipediaのタイトルリストを追加するの続き。
今回は、はてなキーワードの辞書を作成してみる。

やり方は前回とほぼ一緒だけど、辞書用のCSVを作成するところで若干前回のスクリプトを弄る必要がある。

1. はてなキーワードのタイトルリストをダウンロードして解凍

最新のタイトルリストがここから取得できる

$ wget http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv

2. はてなキーワードのタイトルリストをCSVに変換して、辞書ファイルに変換

ダウンロードしたCSVを、mecabに取り組む前にmecab用のCSV形式に変換。
今回は前回作ったスクリプトを拡張して作ってみたので、辞書ファイルへの変換まで一括で行ってしまう。

$fp = fopen(TARGET_FILE, "r");
while (!feof($fp)) {
    $line  = fgets($fp);
    $line  = mb_convert_encoding($line, 'utf-8','eucjp-win');
    $tmp   = explode("\t",$line);
    $tmp   = array_map("trim",$tmp);

    $title = $tmp[1];
    $hira  = ($tmp[0]) ? $tmp[0] : $tmp[1];
    $kana  = mb_convert_kana($hira,'C','utf8');
    
    if (preg_match('/^\./',$title)) {
        continue;
    }
    elseif (preg_match('/^[0-9]{1,100}$/',$title)) {
        continue;
    }
    elseif (preg_match('/[0-9]{4}./',$title)) {
        continue;
    }
    if (strlen($title)) {
        $line   = array();
        $line[] = $title;
        $line[] = 0;
        $line[] = 0;
        $line[] = $this->_cost(-36000,-400 * (strlen($title)^1.5));
        $line[] = '名詞' ;
        $line[] = '固有名詞';
        $line[] = '*';
        $line[] = '*';
        $line[] = '*';
        $line[] = '*';
        $line[] = $hira;
        $line[] = $kana;
        $line[] = $kana;
        $line[] = 'hatena_word';
        file_put_contents(TARGET_CSV_FILE,$this->_makeCsvString($line) . "\n",FILE_APPEND);
    }
}
fclose($fp);

コストの算出方法も前回と一緒。
作成した辞書ファイルは、前回同様ユーザー辞書の部分に設定。

これで完了。

使ってみるとこんな感じ。

$ echo 天下一武道会に出場 | mecab
天下一武道会    名詞,固有名詞,*,*,*,*,てんかいちぶどうかい,テンカイチブドウカイ,テンカイチブドウカイ,hatena_word
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
出場    名詞,サ変接続,*,*,*,*,出場,シュツジョウ,シュツジョー
EOS

こっちも更新しました。
php.mod-mecab-dic – github