MeCab 辞書には、以前の記事でご紹介した「ユーザ辞書」と「システム辞書」の2種類があります。ユーザ辞書への単語の追加は、手軽な反面、解析速度が落ちるといったデメリットもあります。そこで今回は、MeCab の「システム辞書」に単語を追加する方法をご紹介します。また、最近話題の新語辞書 mecab-ipadic-neologd もシステム辞書に追加してみました。
作業の流れ
MeCab のシステム辞書は1つのみ、というルールがあるため、IPA辞書のソースディレクトリに、追加したい単語のCSVファイルを配置して、システム辞書を作成します。また、追加する単語のコストは、mecab-ipadicのモデルファイル使った自動推定機能を使います。
もくじ
下準備
MeCab と IPA辞書をインストールしておきます。
nkf コマンドのインストール
IPA辞書の文字コードを、UTF-8 に変換するため、nkf コマンドをインストールしておきます。CentOS7系の場合は、EPELリポジトリからインストールします。
・EPELリポジトリの追加
1 2 3 |
sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm sudo rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7 |
・nkf コマンドのインストール
1 |
sudo yum -y install nkf |
・EPELリポジトリの無効化
sudo vi /etc/yum.repos.d/epel.repo
1 2 3 4 5 6 7 |
[epel] name=Extra Packages for Enterprise Linux 7 - $basearch (略) ↓↓↓ 以下を変更 ↓↓↓ enabled=1 ↓ enabled=0 |
作業用ディレクトリの作成
MeCabシステム辞書作成の作業用ディレクトリを作成します。必須の手順ではありませんが、再度単語をシステム辞書に追加する時のために、場所を決めて残しておくと後々楽が出来ます。
場所はどこでも構いません。私はホームディレクトリの直下に作成しました。
1 |
mkdir ~/mecab_work |
※これ以降の手順は、作業用ディレクトリに移動して行ってください。
1 |
cd ~/mecab_work/ |
IPA辞書の文字コードを UTF-8 に変換
IPA辞書の文字コードは、EUC_JP なのですが、そのままだと扱いづらいため UTF-8 に変換しておきます。
・IPA 辞書のダウンロードと解凍
1 2 |
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz tar xvzf mecab-ipadic-2.7.0-20070801.tar.gz |
・IPA 辞書の文字コードを EUC_JP から UTF-8 に変換
1 |
nkf --overwrite -Ew mecab-ipadic-2.7.0-20070801/* |
・後でコスト計算に使うため、一度辞書ファイルを作成してインストールします。※ make は不要です。実行しないでください。
1 2 3 4 |
cd mecab-ipadic-2.7.0-20070801/ /usr/local/libexec/mecab/mecab-dict-index -f utf-8 -t utf-8 ./configure sudo make install |
・作業用ディレクトリに戻ります。
1 |
cd ~/mecab_work/ |
追加する単語のCSVファイルの作成
CSVファイルのフォーマットは、ユーザ辞書の追加で使うものと同じです。コストは自動推定機能を使って算出しますので、空欄にしておきます。
・CSVファイルの作成
vim tabemono_nocost.csv
1 |
焼肉定食,,,,名詞,一般,*,*,*,*,焼肉定食,ヤキニクテイショク,ヤキニクテイショク,(追加単語) |
※CSVファイルの文字コードは、必ず「UTF-8」で作成してください。
mecab-ipadic のモデルファイルの設置
コストの自動推定機能を使うのに必要な mecab-ipadic のモデルファイルをダウンロードして解凍します。※最近ダウンロード先のURLが変わったようです。(2015年6月17日現在)
1 2 3 |
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.model.bz2 bzip2 -d mecab-ipadic-2.7.0-20070801.model.bz2 |
・モデルファイル文字コードも EUC_JP のため UTF-8 に変換します。
1 |
nkf --overwrite -Ew mecab-ipadic-2.7.0-20070801.model |
・ファイルの先頭付近に「euc-jp」の記述がありますので、これも「utf-8」に変更します。
vim mecab-ipadic-2.7.0-20070801.model
1 2 3 |
charset: euc-jp ↓ charset: utf-8 |
コストの自動推定
MeCab に付属の mecab-dict-index コマンドを使って、コストを自動推定します。
引数の指定方法は以下の通りです。
1 2 3 4 5 6 |
mecab-dict-index \ -m <モデルファイル> -d <IPA辞書が入っているディレクトリ> \ -u <コスト推定済のCSVファイルの保存先> -f utf8 -t utf8 \ -a <作成した追加単語のCSVファイル(コスト無し)> |
上記をふまえて、コスト推定済のCSVファイルを作成します。
※ mecab-dict-index コマンドは、フルパスで実行します。
1 2 3 4 5 6 |
/usr/local/libexec/mecab/mecab-dict-index \ -m mecab-ipadic-2.7.0-20070801.model \ -d mecab-ipadic-2.7.0-20070801 \ -u tabemono.csv \ -f utf8 -t utf8 \ -a tabemono_nocost.csv |
以下のような表示がされれば、自動推定が成功しています。
1 2 3 |
mecab-ipadic-2.7.0-20070801.model is not a binary model. reopen it as text mode... reading tabemono_nocost.csv ... done! |
確認してみると「焼肉定食」のコストは、5078でした。
1 2 3 4 |
$ cat tabemono.csv 焼肉定食,1285,1285,5078,名詞,一般,*,*,*,*,焼肉定食,ヤキニクテイショク,ヤキニクテイショク,(追加単語) |
システム辞書の作成とインストール
・コスト推定済のCSVファイルを、IPA辞書のソースディレクトリに移動します。
1 |
mv tabemono.csv mecab-ipadic-2.7.0-20070801/ |
・システム辞書を作成
1 2 |
cd mecab-ipadic-2.7.0-20070801/ /usr/local/libexec/mecab/mecab-dict-index -f utf-8 -t utf-8 |
IPA辞書と一緒に、追加したCSVファイルも合わせて、コンパイルされている様子が確認できると思います。
1 2 3 |
reading ./Verb.csv ... 130750 reading ./tabemono.csv ... 1 ←追加したCSVファイル emitting double-array: 100% |###########################################| |
・最後に作成したシステム辞書をインストールします。
1 |
sudo make install |
システム辞書の動作確認
システム辞書に追加した単語「焼肉定食」が使われるかを確認します。
1 2 3 4 5 6 7 |
echo '焼肉定食が食べたい' | mecab 焼肉定食 名詞,一般,*,*,*,*,焼肉定食,ヤキニクテイショク,ヤキニクテイショク,(追加単語) が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 食べ 動詞,自立,*,*,一段,連用形,食べる,タベ,タベ たい 助動詞,*,*,*,特殊・タイ,基本形,たい,タイ,タイ EOS |
ちゃんと使われているようですね。
新語辞書 mecab-ipadic-neologd の追加
最近話題の MeCab 用の新語辞書 mecab-ipadic-neologd もシステム辞書に追加してみます。
mecab-ipadic-neologd は単体でもインストールできますが、作者の方によると、IPA辞書(ipadic)も併用するのがオススメとのことです。
Web上の文書の解析をする際には、この辞書と標準のシステム辞書(ipadic)を併用することをオススメします。
mecab-ipadic-NEologd : Neologism dictionary for MeCab より引用
・作業用ディレクトリに移動します
1 |
cd ~/mecab_work/ |
・mecab-ipadic-neologd のダウンロード(辞書ファイルのみ使います)
1 |
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git |
・辞書ファイルの解凍
1 |
xz -dkv mecab-ipadic-neologd/seed/mecab-user-dict-seed.*.csv.xz |
・辞書ファイルを、IPA辞書のソースディレクトリに移動します。
1 2 |
mv mecab-ipadic-neologd/seed/mecab-user-dict-seed.*.csv mecab-ipadic-2.7.0-20070801/ |
・mecab-ipadic-neologd 辞書を使った時に、辞書名が表示されるようにしてみました。(必須ではありません)
1 2 |
sed -i 's/$/,mecab-ipadic-neologd/g' mecab-ipadic-2.7.0-20070801/mecab-user-dict-seed.*.csv |
・再度システム辞書を作成してインストールします。
1 2 3 |
cd mecab-ipadic-2.7.0-20070801/ /usr/local/libexec/mecab/mecab-dict-index -f utf-8 -t utf-8 sudo make install |
・確認します。
1 2 3 4 5 6 7 8 |
echo 'CentOSにApacheをインストール' | mecab CentOS 名詞,固有名詞,一般,*,*,*,CentOS,セントオーエス,セントオーエス,mecab-ipadic-neologd に 助詞,格助詞,一般,*,*,*,に,ニ,ニ Apache 名詞,固有名詞,一般,*,*,*,Apache,アパッチ,アパッチ,mecab-ipadic-neologd を 助詞,格助詞,一般,*,*,*,を,ヲ,ヲ インストール 名詞,一般,*,*,*,*,インストール,インストール,インストール EOS |
CentOS や Apache の読み方まで登録されています。素晴らしいですね(^^)/
終わりに
MeCab と Twitter API を使った簡単なWEBサービスを作ってみました。まだまだ作り途中ですが、もしよければお試しください。
▽ TWKEY - ツイートマイニングツール
https://twkey.apar.jp/