17
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

MeCabのデフォルト辞書を変更する【Mac】

概要

MeCabのデフォルト辞書をmecab-ipadic-NEologdに変更するために、自分の環境(macOS)でやったことのメモです。
多くの方がすでに書いてくださっているように、デフォルト辞書はmecabrcというファイルを編集すると変更できるのですが、自分の環境だとmecabrcが複数あってどれを編集すればよいか迷ったので、どのファイルを編集すべきかの調べ方も含めて、実際にうまくできた方法について書いています。

環境

  • OS
    • macOS Catalina 10.15.4
  • MeCab
    • mecab 0.996 (brewでインストール)
    • mecab-ipadic-NEologd

インストールは下記サイトの手順にほぼ倣いました。
https://qiita.com/taroc/items/b9afd914432da08dafc8

mecabのデフォルト辞書の更新

現在使っているmecabのバイナリソースの確認

brewでインストールしたmecabをちゃんと使っているか一応確認しました。

% which mecab
/usr/local/bin/mecab

% ls -l /usr/local/bin/mecab
lrwxr-xr-x  1 xxxx  yyyy  XX  M dd hh:mm /usr/local/bin/mecab -> ../Cellar/mecab/0.996/bin/mecab

/usr/local/Cellarの中を参照しているので、ちゃんとbrewでインストールしたものが使われているようです。

現在のデフォルト辞書の確認

ターミナルでmecab -Dとタイプし、現在のデフォルト辞書を確認しました。
filename:の部分から/usr/local/lib/mecab/dic/ipadic/sys.dicが使われていることがわかります。

% mecab -D
filename:   /usr/local/lib/mecab/dic/ipadic/sys.dic
version:    102
charset:    utf8
type:   0
size:   392126
left size:  1316
right size: 1316

一応、この状態で「インスタ映え」が正しく解析されないことも確認しておきました。
間違いとまでは言えないですが、「インスタ」と「映え」が別々の単語として認識されてしまっています。

% echo 'インスタ映え' | mecab
インスタ    名詞,一般,*,*,*,*,*
映え  名詞,一般,*,*,*,*,映え,ハエ,ハエ
EOS

mecabrcを探す

デフォルト辞書の参照先はmecabrcというファイルに記述されています。
そこでfindにより検索しました。
下記のようにいくつか候補が出てきました。

% sudo find / -name mecabrc
/usr/local/etc/mecabrc
/usr/local/Cellar/mecab/0.996/.bottle/etc/mecabrc
/System/Volumes/Data/usr/local/etc/mecabrc
/System/Volumes/Data/usr/local/Cellar/mecab/0.996/.bottle/etc/mecabrc

一瞬「どれだ?」と思ったのですが、軽く調べるとbrewでインストールした場合は/usr/local/etc/に設定ファイルが置かれていると、書いているところが多かったです。

参考
https://ichibariki.hatenablog.com/entry/2017/01/09/150542
https://qiita.com/takaheraw@github/items/286cdb27887bd00e2245

一応、ちゃんとした根拠がないか調べてたら、mecab-config --sysconfdirでわかるという情報を見つけました。

参考
https://rooter.jp/data-format/mecab_install/

僕の環境でも実行してみたところ、やはり/usr/local/etcが格納先になっているようでした。

% /usr/local/Cellar/mecab/0.996/bin/mecab-config --sysconfdir
/usr/local/etc

ついでにですが、辞書ファイルの参照先も下記コマンドで調べることができました。

% /usr/local/Cellar/mecab/0.996/bin/mecab-config --dicdir
/usr/local/lib/mecab/dic

mecabrcの編集

/usr/local/etc/mecabrcをエディタで開き、dicdir =となっている部分を書き換えます。

% nano /usr/local/etc/mecabrc

#書き換え前
dicdir =  /usr/local/lib/mecab/dic/ipadic

#書き換え後
;dicdir =  /usr/local/lib/mecab/dic/ipadic
dicdir =  /usr/local/lib/mecab/dic/mecab-ipadic-neologd

編集後、mecab -Dでデフォルト辞書が変更されていることを確認します。

チェックのため、「インスタ映え」を形態素解析してみました。固有名詞として一単語で認識できていました。

% echo 'インスタ映え' | mecab             
インスタ映え  名詞,固有名詞,一般,*,*,*,インスタ映え,インスタハエ,インスタハエ
EOS

なおpythonからMeCabをつかうときのデフォルト辞書については、上記だけでは変更されませんでした。pythonに関しては、MECABRCという環境変数に参照すべきmecabrcのパスを代入することでデフォルト辞書を変えることが出来ました。詳細は別記事にまとめました。

おわりに

mecabのデフォルト辞書をmecab-ipadic-neologdに変更する方法に関して、自分の環境で行ったことをメモしました。
編集すべきmecabrcfindで検索したら候補が複数出てきて、一瞬困りました。
ネットの情報を信じて/usr/local/etc/mecabrcを決め打ちで編集してみるのでも良かったのですが、brewでインストールしたバイナリの設定ファイル置き場が本当に/usr/local/etcなのか少しだけ不安に感じてしまいました。そこで、折角の機会なので、自分の環境のmecabがどこの設定ファイルを読んでいるのか、mecab-configで一応調べてみました。結果、多少ですが、納得性の高い情報が得られたので良かったです。

本記事は以上です。
ここまでお読みいただきありがとうございました。

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
Sign upLogin
17
Help us understand the problem. What are the problem?