LoginSignup
23

More than 5 years have passed since last update.

MeCab の辞書に業界内で使う独自の用語を登録する

Last updated at Posted at 2014-11-25

すでに前回 Wikipedia とはてなキーワードからユーザー辞書を生成する話を書きましたから、基本的にはこの内容を真似れば良いです。今回は補足という意味で簡単な例を手順として掲載しておきます。

MeCab 辞書への単語追加方法としては二つの方法があります

  • システム辞書への追加
  • ユーザ辞書への追加

システム辞書はあまり変更したくないので、基本的にユーザー辞書を作成し、これに用語を登録していく形で運用します。

CSV ファイルに用語を書き加えていく

次のように 1 行 1 単語として独自用語を書き加えていきます。

On-PreSt
Dr.Cowbell

Ruby で語彙の長さを計算し辞書のソースを作る

前回利用した Ruby スクリプトをそのまま流用すれば良いでしょう。これは単語の長さから自動的に重みを計算してくれます。

require 'csv'

original_data = {
  'my.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 =~ /_\(/

      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

他の IT 系キーワードもあわせて利用したいなら、前回のスクリプトに my.csv のみ追加すれば良いかと思います。

辞書のソースから MeCab ユーザー辞書を生成する

生成された custom.csv を見ると次のように行ができているかと思います。

On-PreSt,,,-9050,名詞,一般,*,*,*,*,On-PreSt,*,*,custom
Dr.Cowbell,,,-12649,名詞,一般,*,*,*,*,Dr.Cowbell,*,*,custom

これを元にユーザー辞書を生成します。

/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
#=> reading custom.csv ... 1191420
#   emitting double-array: 100% |###########################################|

#=> done!

あとはこのユーザー辞書を使えば企業独自の用語なども正確に解析することができるようになります。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23