この記事では、MacにMeCabをインストールして、PythonでMeCabを使用できるような環境を整えます。
目次
1. MeCabとは
MeCabは、日本語の文章に対する形態素解析を行うオープンソースのライブラリです。高速で、高精度な形態素解析が可能であり、商用利用も可能なライセンスで提供されています。
2. MeCabのインストールと確認
MeCabのインストール
まず、MeCabをインストールします。
■zsh
brew install mecab
IPA辞書をインストール
次に、MeCabが使用する形態素解析のための辞書をインストールします。ここでは、IPA辞書を使用します。
■zsh
brew install mecab-ipadic
インストールの確認
インストールができたかを確認するため、ターミナルで以下のように入力します。
■zsh
mecab
インストールに成功していれば、標準入力から文章が入力できるようになります。以下のように試しに文章を入れてみると、形態素解析が実行されることがわかります。
■zsh
MeCabのインストールに成功しました。 MeCab 名詞,固有名詞,組織,*,*,*,* の 助詞,連体化,*,*,*,*,の,ノ,ノ インストール 名詞,一般,*,*,*,*,インストール,インストール,インストール に 助詞,格助詞,一般,*,*,*,に,ニ,ニ 成功 名詞,サ変接続,*,*,*,*,成功,セイコウ,セイコー し 動詞,自立,*,*,サ変・スル,連用形,する,シ,シ まし 助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 。 記号,句点,*,*,*,*,。,。,。 EOS
拡張辞書をインストール
mecab-ipadic-NEologdをインストールします。mecab-ipadic-NEologdは、MeCabのための拡張辞書であり、新語や固有名詞、スラングなどの多くの単語が追加されています。
動作に必要なライブラリをインストール
必要なライブラリは以下です。
- mecab
- mecab-ipadic
- git
- curl
- xz
xzを追加でインストールします。mecabとmecab-ipadicは先程インストール済みです。gitとcurlは通常Macにはデフォルトでインストールされているはずですが、不足したライブラリがある場合は適宜追加します。
■zsh
brew install xz
リポジトリをクローンする
辞書のもとになるデータの配布と更新は、GitHub経由で行います。初回は以下のコマンドでcloneします。
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
上記でクローンしたリポジトリに移動します。
cd mecab-ipadic-neologd
最新版の辞書をインストールする
以下のコマンドを実行して、最新版の辞書をインストールします。
■zsh
./bin/install-mecab-ipadic-neologd -n
MeCabがデフォルトで使用する辞書を変更する
MeCabがデフォルトで使用する辞書をmecab-ipadic-NEologdに変更します。
デフォルト辞書を変更するには、mecabrcファイルを編集します。
著者の環境では、/usr/local/etc/mecabrcに配置されています。デフォルトでは、ファイルの内容は以下のように記載されています。
■txt
; ; Configuration file of MeCab ; ; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $; ; dicdir = /usr/local/lib/mecab/dic/ipadic ; userdic = /home/foo/bar/user.dic ; output-format-type = wakati ; input-buffer-size = 8192 ; node-format = %m\n ; bos-format = %S\n ; eos-format = EOS\n
dicdirがデフォルト辞書を指定しています。ここをmecab-ipadic-NEologdに書き換えて保存します。
■txt
; ; Configuration file of MeCab ; ; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $; ; ; dicdir = /usr/local/lib/mecab/dic/ipadic dicdir = /usr/local/lib/mecab/dic/mecab-ipadic-neologd ; userdic = /home/foo/bar/user.dic ; output-format-type = wakati ; input-buffer-size = 8192 ; node-format = %m\n ; bos-format = %S\n ; eos-format = EOS\n
mecab-ipadic-neologdが使えていることを確認する
「ポケモンGO」という新語が認識されていることがわかります。
■zsh
❯ mecab ポケモンGOは面白い ポケモンGO 名詞,固有名詞,一般,*,*,*,ポケモンGO,ポケモンゴー,ポケモンゴー は 助詞,係助詞,*,*,*,*,は,ハ,ワ 面白い 形容詞,自立,*,*,形容詞・アウオ段,基本形,面白い,オモシロイ,オモシロイ
3. PythonからMeCabを使えるようにする
Pythonパッケージのインストール
PythonからMeCabを使用するために、mecab-python3パッケージをインストールします。
■zsh
pip install mecab-python3
環境変数を設定する
PythonからMeCabを使用するためには、環境変数の設定が必要です。zshを使用している場合は、~/.zshrcにパスを設定します。
export MECABRC=/usr/local/etc/mecabrc
実行してみる
以下のように表示されれば、正しく使えている。
■python
import MeCab mecab = MeCab.Tagger('-Owakati') print(mecab.parse('ポケモンGOが面白い'))
ポケモンGO が 面白い
4. Python実行時にエラーが発生したときの対応
発生した事象
筆者の環境では、pythonで以下のコマンドを実行したところエラーが発生した。mecabrcが見つからないというエラーが発生した。
■python
import MeCab mecab = MeCab.Tagger('-Owakati') print(mecab.parse('ポケモンGOが面白い'))
[ifs] no such file or directory: /Users/.../lib/python3.10/site-packages/unidic/dicdir/mecabrc
原因
原因を確認したところ、mecab-python3のバージョンが新しいことが原因であった。今回インストールしたのは、mecab-python3-1.0.6であった。
ver1.0以上のmecab-python3では、デフォルト辞書がunidicになっており、unidicを使用しない場合、上記のエラーが発生するようである。
対応策
Mecab.Tagger作成時に、以下のようにmecabrcと辞書のパスを指定すれば良い。
■python
import MeCab mecab = MeCab.Tagger('-r /usr/local/etc/mecabrc -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd -Owakati') print(mecab.parse('ポケモンGOが面白い'))
ポケモンGO が 面白い