【mecab】hatenaキーワードとwikipediaのタイトルからオリジナルの辞書を作る
mecabデフォルトの辞書では以下のようにちょっと専門用語などが入ってくると解析が不十分
$ mecab
クラウド
クラ 名詞,固有名詞,一般,*,*,*,クラ,クラ,クラ
ウド 名詞,一般,*,*,*,*,ウド,ウド,ウド
EOS
hatenaキーワードやwikiからもっと多くの単語を取り込むことで精度を上げる
wikipediaの辞書をダウンロード
$ curl -L http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz | gunzip > jawiki-latest-all-titles-in-ns0
はてなキーワードのリスト取得
$ curl -L http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv | nkf -w > keywordlist_furigana.csv
$ vi store_wikipedia_and_hatena_to_csv.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
さっきダウンロードしてきたファイルをCSVに出力。
$ ruby store_wikipedia_and_hatena_to_csv.rb
実行するとcustom.csvが作成される
ユーザー辞書を作成する
custom.csvを元に mecab-dict-index コマンドでユーザー辞書 custom.dic を作ります。
$ /usr/lib/mecab/mecab-dict-index -d /usr/lib/mecab/dic/ipadic -u custom.dic -f utf-8 -t utf-8 custom.csv
reading custom.csv ... 1720131
emitting double-array: 100% |###########################################|
done!
これでユーザー辞書は完成
作成した辞書を使ってみる
$ mecab -u custom.dic
クラウド
クラウド 名詞,一般,*,*,*,*,クラウド,*,*,wikipedia
EOS
今度はクラウドが名詞として認識された!
システムとして作成した辞書を使うなら/etc/mecabrcのuserdicに指定しておくこと