Help us understand the problem. What is going on with this article?

Mecabのシステム辞書・ユーザ辞書の利用方法について

More than 3 years have passed since last update.

はじめに

 オープンソースの日本語形態素解析器: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にしておく方法を記述します。

  1. システム辞書をUTF-8化
  2. 辞書のインストール
  3. 辞書の更新手順

システム辞書を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」に変更して上書き保存する。

Makefile
<省略>
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辞書のどちらのシステム辞書を切り替えて使用できるようにします。
 そのための手順は以下のとおりとなります。

  1. IPA辞書を退避
  2. NEologd辞書をコンパイル
  3. IPA辞書の復元
  4. デフォルトのシステム辞書設定

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

デフォルトのシステム辞書設定

 デフォルトで使用するシステム辞書のディレクトリを指定します。

/usr/local/etc/mecabrc
dicdir =  /usr/local/lib/mecab/dic/ipadic

 一時的にシステム辞書を変更する場合は、以下のコマンドでMeCabを起動します。

$ mecab -d /usr/local/lib/mecab/dic/neologd

参考サイト

MeCabのコマンドライン引数一覧とその実行例
mecab-ipadic-neologdがすごいという話

hiro0217
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away