はじめに
オープンソースの日本語形態素解析器:MeCabの辞書を利用する方法を備忘録として記録します。
MeCabの辞書には、システム辞書とユーザ辞書があります。
システム辞書の方が処理が早いと言われており、ユーザ辞書を使用する機会は少ないと思われる。
また、MeCab用の新語辞書・固有表現に強いシステム辞書:mecab-ipadic-NEologdが公開されている。mecab-ipadic-NEologdは、毎週2回(月曜日と木曜日)に一般サイト(はてなキーワードや郵便番号データやSNS,ニュース記事など)から情報を収集して更新されている。
参考サイト:
MeCab公式サイト
MeCabの辞書をカスタマイズする
mecab-ipadic-neologd - GitHub
環境
OS:Red Hat Enterprise Linux 7.2
MeCab:0.996
MeCabのシステム辞書インストール
MeCab本体のインストールは既に完了している状態から始める。
MeCabの公式ページにおいて、MeCab用の辞書が公開されておりIPA 辞書を使用するのが推奨されている。公開されているIPA辞書は、文字コードがEUC-JPで提供されており、公式な手順では辞書のコンパイル時にUTF-8に毎回変換して使用する手順となっている。
しかしながら、外字などのUnicode環境固有コードを含む文字を辞書に登録する場合などに不自由があるため、コンパイル前のCSVファイルをUTF-8にしておく方法を記述します。
- システム辞書をUTF-8化
- 辞書のインストール
- 辞書の更新手順
システム辞書をUTF-8化
IPA 辞書から辞書ファイルをダウンロードして、パソコン上(自分の場合はWindowsです)で解凍します。
解凍したら、mecab-ipadic-2.7.0-20070801フォルダ配下のcsvファイルおよびdefファイルをテキストエディタで開き、エンコードをUTF-8,改行コードをLFに変更して上書きする。
mecab-ipadic-2.7.0-20070801フォルダ配下のMakefileファイル開き、「-f EUC-jp」から「-f utf8」に変更して上書き保存する。
<省略>
matrix.bin char.bin sys.dic unk.dic:
$(mecab_dict_index) -d . -o . -f utf8 -t utf8
echo To enable dictionary, rewrite /usr/local/etc/mecabrc as \"dicrc = /usr/local/lib/mecab/dic/ipadic\"
<省略>
変換後は、必要に応じて再度圧縮しておく。
辞書のインストール
以下のコマンドで辞書のインストールを行います。
$ tar xvf mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801/
$ ./configure
$ make
$ sudo make install
辞書の更新手順
システム辞書に追加したい場合は、既存のCSVファイルに追記するか、新規でCSVファイルを追加します。
辞書のコンパイルは、mecab-ipadic-2.7.0-20070801フォルダ配下にあるCSVファイルをすべてコンパイルしてくれます。
$ make clean
$ make
$ sudo make install
システム辞書の格納先
システム辞書は以下のディレクトリに格納されます。システム辞書の保存先は、/usr/local/bin/mecab-config
ファイルを編集することで、コンパイル時の格納先を変更できるようです。
/usr/local/lib/mecab/dic/ipadic
ユーザ辞書の追加
ユーザ辞書は、システム辞書と同一のフォーマットでCSVファイルを作成します。mecab-dict-index
コマンドでバイナリ形式に変換してからユーザ辞書の登録を行います。
ユーザ辞書の作成
文字コードをutf-8でユーザ辞書:user.csvを作成し、以下のコマンドでユーザ辞書をコンパイルします。
$ cd /tmp/MeCab/
$ /usr/local/libexec/mecab/mecab-dict-index -d /usr/local/lib/mecab/dic/ipadic/ -u user.dic -f utf-8 -t utf-8 user.csv
$ cp -p user.* /usr/local/lib/mecab/dic/userdic/
ユーザ辞書の登録
MeCabの設定ファイル:/usr/local/etc/mecabrc
に以下の形式で定義を追加する。また、ユーザ辞書はカンマで区切って指定することで複数認識させることができます。
userdic = /usr/local/lib/mecab/dic/userdic/user.dic,/usr/local/lib/mecab/dic/userdic/user2.dic
MeCab起動時にコマンドラインでユーザ辞書を指定する場合は、-u
オプションを指定します。
$ mecab -u /usr/local/lib/mecab/dic/userdic/user.dic
mecab-ipadic-NEologdのオフラインインストール
外部サイトに接続できない環境でインストール手順を整理しておきます。
mecab-ipadic-NEologdをダウンロードします。
ダウンロードした資源は、文字コードがUTF-8になっているため、そのまま使用します。
また、1つのサーバ(MeCab)にて、IPA辞書とNEologd辞書のどちらのシステム辞書を切り替えて使用できるようにします。
そのための手順は以下のとおりとなります。
- IPA辞書を退避
- NEologd辞書をコンパイル
- IPA辞書の復元
- デフォルトのシステム辞書設定
IPA辞書を退避
既存のIPA辞書を退避します。
mv /usr/local/lib/mecab/dic/ipadic /usr/local/lib/mecab/dic/ipadic_bak
NEologd辞書をコンパイル
mecab-ipadic-neologd-master.zip
をIPA辞書をコンパイルした際に使用したディレクトリに格納します。mecab-ipadic-2.7.0-20070801
ディレクトリが存在していることを前提で記述します。
$ unzip mecab-ipadic-neologd-master.zip
$ cd mecab-ipadic-neologd-master/seed/
$ xz -dv *.csv.xz
$ mv *.csv ../../mecab-ipadic-2.7.0-20070801/
$ cd ../../mecab-ipadic-2.7.0-20070801/
$ ./configure
$ make clean
$ make
$ su
# sudo make install
# mv /usr/local/lib/mecab/dic/ipadic /usr/local/lib/mecab/dic/neologd
IPA辞書を復元
既存のIPA辞書を復元します。
mv /usr/local/lib/mecab/dic/ipadic_bak /usr/local/lib/mecab/dic/ipadic
デフォルトのシステム辞書設定
デフォルトで使用するシステム辞書のディレクトリを指定します。
dicdir = /usr/local/lib/mecab/dic/ipadic
一時的にシステム辞書を変更する場合は、以下のコマンドでMeCabを起動します。
$ mecab -d /usr/local/lib/mecab/dic/neologd