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