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

私のmacbrewで入れた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ファイルができあがりました!