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