23
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

#概要
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で一応調べてみました。結果、多少ですが、納得性の高い情報が得られたので良かったです。

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

23
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?