MeCab システム辞書への単語追加(mecab-ipadic-neologd)

Linux
スポンサーリンク

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/

コメント

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