mecabに辞書を追加してみた話
せっかく前回のエントリでmecabを利用できるようにしたので、優秀な形態素解析くんになってほしく辞書を追加しました。
追加する方法はほぼ以下の記事の通りです。
テキトーにワークディレクトリを用意しておきます。
# mkdir dicMaker # cd dicMaker
まずは「はてな」のワードを落とします。
curl -L http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv | iconv -f euc-jp -t utf-8 > keywordlist_furigana.csv
次にWikipediaのワードを落とします。
curl -L http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz | gunzip > jawiki-latest-all-titles-in-ns0
さすがのWikipedia。1分半ほど時間かかりました。
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 9255k 100 9255k 0 0 104k 0 0:01:28 0:01:28 --:--:-- 146k
落としてる間に、先ほどの記事の通りRubyのソースを書きます。
名前はテキトーにdicMaker.rbとしておきました。
require 'csv' original_data = { wikipedia: 'jawiki-latest-all-titles-in-ns0', hatena: 'keywordlist_furigana.csv' } CSV.open("custom.csv", 'w') do |csv| original_data.each do |type, filename| next unless File.file? filename open(filename).each do |title| title.strip! next if title =~ %r(^[+-.$()?*/&%!"'_,]+) next if title =~ /^[-.0-9]+$/ next if title =~ /曖昧さ回避/ next if title =~ /_\(/ next if title =~ /^PJ:/ next if title =~ /の登場人物/ next if title =~ /一覧/ title_length = title.length if title_length > 3 score = [-36000.0, -400 * (title_length ** 1.5)].max.to_i csv << [title, nil, nil, score, '名詞', '一般', '*', '*', '*', '*', title, '*', '*', type] end end end end
はてな、WikipediaのキーワードCSVが用意できたら早速Rubyを実行してみます。
# ruby dicMaker.rb
するとcustom.csvが出来上がります。
超簡単です。ynakayamaさんありがとう!
ここまでは本当に記事のとおりです。
ynakayamaさんの記事では以下のコマンドでした。
/usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic -u custom.dic -f utf-8 -t utf-8 custom.csv
私のmacにbrewで入れたmecabさんは以下のようになりました。
/usr/local/Cellar/mecab/0.996/libexec/mecab/mecab-dict-index -d /usr/local/Cellar/mecab/0.996/lib/mecab/dic/ipadic -u custom.dic -f utf-8 -t utf-8 custom.csv
PATH通してあげればいいんでしょうけど面倒なのでそのままにしてます。
とりあえず無事dicファイルができあがりました!