Ubuntu14.04でmecabの辞書にWikipediaとはてな単語を追加

Ubuntu14.04にmecabの辞書に、Wikipediaとはてなの単語を追加する。

以下のサイトを参考にさせていただきました。
(ぶっちゃけ以下のサイトだけで完結します・・・)

MeCabのユーザー辞書にWikipediaとはてなの単語を追加する

目次

  1. CSV変換用のスクリプトの用意
  2. Vagrantへの割当メモリを増やす

1. CSV変換用のスクリプトの用意

ココらへんは上のサイトをそのまま進める。

まずは辞書に追加するデータを取得。

# Wikipedia
wget http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-all-titles-in-ns0.gz
gunzip jawiki-latest-all-titles-in-ns0.gz
# はてな
wget http://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv
nkf -w --overwrite keywordlist_furigana.csv

このデータをCSVに変換するスクリプトを作成し、実行する。
スクリプトは参考サイトを丸ごと・・・

vim makedic.rb
ruby makedic.rb

すると、以下のエラーが出た。

invalid multibyte char (US-ASCII)

日本語のような非ASCII文字が入ってる出るエラーらしい。
元のスクリプトの最初に以下の行を追加。

# encoding: utf-8

再度実行するとCSVファイルが作成された(Pythonで作った場合)。
このCSVを辞書に登録する。

mecabの辞書登録は本家サイト見るといいかも。

medabのインストール先は以下のコマンドで検索。

locate mecab-dict-index
locate mecab/dic/ipadic

以下のコマンドで辞書を追加。

/usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -u custom.dic -f utf-8 -t utf-8 custom.csv

# 以下が表示された
reading onomasticon.csv ... 1694597
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted (core dumped)

メモリが足りないらしい・・・

2. Vagrantへの割当メモリを増やす

Vagrantへの割当メモリを増やす前に、現在のメモリを見てみる。

free -m

# 以下が表示された。
 total used free shared buffers cached
 Mem: 489 135 354 0 2 26
 -/+ buffers/cache: 106 383
 Swap: 0 0 0

一度仮想環境からログアウトし、Vagrantfileを修正する。

vim Vagrantfile

以下のようにvb.customizeを追記した(config.vm.providerも)。

Vagrant.configure(2) do |config|
    config.vm.box = "ubuntu1404"
    config.vm.provider :virtualbox do |vb|
        vb.customize ["modifyvm", :id, "--memory", 1024]
    end
end

設定を再読み込み。

vagrant reload

再度仮想環境へログイン。
メモリを確認する。増えてる増えてる。

free -m

# 以下が表示された
total used free shared buffers cached
Mem: 993 193 800 0 11 67
-/+ buffers/cache: 113 879

再度辞書を追加する。
今度は上手くいった!

/usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -u custom.dic -f utf-8 -t utf-8 custom.csv

# 以下が表示された
reading onomasticon.csv ... 1694597
emitting double-array: 100% |###########################################|
done!

使ってみよう!

mecab
人工無脳
人工 名詞,一般,*,*,*,*,人工,ジンコウ,ジンコー
無 接頭詞,名詞接続,*,*,*,*,無,ム,ム
脳 名詞,一般,*,*,*,*,脳,ノウ,ノー
EOS
mecab -u onomasticon.dic
人工無脳
人工無脳 名詞,一般,*,*,*,*,人工無脳,*,*
EOS

できた!

参考

MeCabのユーザー辞書にWikipediaとはてなの単語を追加する

mecab – 形態素解析のために Wikipedia とはてなキーワードからユーザー辞書を生成し利用する – Qiita

Vagrant で Virtualbox 仮想マシンのメモリ割り当てを増加させる

コメント

タイトルとURLをコピーしました