LoginSignup
10
11

More than 5 years have passed since last update.

【形態素解析】Mecabに新しい辞書を追加する方法

Last updated at Posted at 2015-04-21

環境

Mac
Mecabインストール済

手順

1 キーワードファイルをダウンロードし、CSVファイルを作成

1-1 キーワードファイルダウンロード

# はてなキーワード
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

1-2 名詞を抜き出して CSV ファイルにする

sample.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

其の後、sample.rbを実行する

ruby sample.rb

2 ユーザー辞書を作成し、追加する

こうして出来た CSV ファイルを元に mecab-dict-index コマンドでユーザー辞書 custom.dic を作ります。

/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

ここで、custom.dicができていることを確認してください。

其の後、ターミナルで、/usr/local/lib/mecab/dic/ipadicに移動し、

$ sudo vi dicrc

を実行し、

最後に、custom.dicのディレクトリを作成します。

userdic = 「作成した辞書のディレクトリの場所」

を入れます。

結果

以下のコードを実装してみます。

sample01.py
#coding:utf-8
import MeCab
tagger = MeCab.Tagger("-Ochasen")
result = tagger.parse("クラウド")
print result

はじめ、辞書を追加しない際には、「クラウド」が、

クラ  クラ  クラ  名詞-固有名詞-一般      
ウド  ウド  ウド  名詞-一般

なっていたのに対し、

クラウド        クラウド    名詞-一般

になりました。

これができていれば完了です。
お疲れさまでした。

10
11
0

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
10
11