【Mac】【Python 3.6.1】mecab/IPA辞書/mecab-python3インストール

Meabとは

MeCabはオープンソースの形態素解析エンジンで、奈良先端科学技術大学院大学出身、現GoogleソフトウェアエンジニアでGoogle日本語入力開発者の一人である工藤拓によって開発されている。名称は開発者の好物「和布蕪(めかぶ)」から取られた。(Wikipediaから抜粋)機械学習で文章解析等でよく利用される機能です。たとえば、「今日は天気がよいね」という文章をmecab で実行した場合、下記のような回答を得ることができます。

mecab-python3を利用できるようにするまでの手順

1. mecab本体とIPA辞書を入れてmecab単体で動作すること
2. mecab-python3を入れてpythonでmecabを実行できるようにすること
まずはmecabを入れないとmecab-python3は動作しませんのでご注意ください。そして、mecabを利用するためには辞書が必要です。今回は一番メジャーなIPA辞書を利用します。mecabがプレステで辞書がプレステソフトみたいなものです。

Mecabを使えるようにする

ポイントはconfigureを実行するときにutf8の指定をして文字化け対策することです。

下記URLからMeCab本体IPA辞書ダウンロードして解凍します。
http://taku910.github.io/mecab/#download

MeCab本体のインストール

1. 解答したディレクトリに移動します。$cd mecab-0.996
2. ./configure --enable-utf8-onlyを実行してMakefileを生成します。
3. makeconfigureで作成されたMakefileを基にしてソースコードをコンパイルします。
4. make checkと入力してテストを行います。(All 3 tests passedが出てくればOK)
5. sudo make installでmecabをインストールします。
6. which mecabでmecabがどこにインストールされているか確認します。

mecabが読み込まれないとき

vi $HOME/.profileexport PATH=/usr/local/mecab/bin:$PATHを入れて. $HOME/.profileで反映します。

IPA辞書のインストール

mecabとほとんど同じインストール手順です。
1. 解答したディレクトリに移動します。$cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8 --enable-utf8-only
2. ./configure --enable-utf8-only --with-charset=utf8 --with-mecab-config=/usr/local/bin/mecab-configを実行してMakefileを生成します。
3. makeconfigureで作成されたMakefileを基にしてソースコードをコンパイルします。
4. sudo make installでIPA辞書をインストールします。

mecabのアンインストール

Makefileがあるならsudo make uninstallを実行するだけでは不完全です。mecabやipadicを検索して残っているのを削除します。
mdfind mecabmdfind ipdicなどを実行してアンインストールで消えていないファイルを削除します。

rm -rf /usr/local/libexec/mecab
rm -rf /usr/local/lib/mecab
rm -rf /usr/local/mecab
rm -rf /usr/local/lib/mecab/dic/ipadic
rm -rf /usr/local/mecab/lib/mecab/dic/ipadic

mecabの文字化け対策

1. mecabのアンインストール&mecabとipadic関連をすべて削除する
2. 新しくmecabとipadicをダンロードしてくる
3. utf8を指定してインストールします
4. mecab -Dでcharsetがutf8になっていることを確認する

前にインストールしたときに残っているファイルや前に実行したMakefileが残っていると文字化けが直りません。一旦全削除して新しいものをダウンロードしてからインストールしたほうがよいです。

Python3.6でmecab-python3を入れようとすると「python setup.py egg_info” failed with error code 1」エラーがでる

pip install mecab-python3
を実行すると
python setup.py egg_info" failed with error code 1
エラーが発生して先に進めない。

原因はsetup.pyがPython3.6に対応していないことが問題なので修正する必要がある。
エラー内容はmecab-configを認識していない。そのため必要な情報を取得できずにコケているだけである。

setup.pyを修正してpip install mecab-python3を動かせるようにする

pip install mecab-python3を使うためにはsetup.pyのmecab-configの部分を修正すればよい。
mecab-configの場所がわからない場合はwhich mecab-configでどの場所か把握する。

元のコードはこちら

#!/usr/bin/env python

from distutils.core import setup,Extension,os
import string

def cmd1(str):
return os.popen(str).readlines()[0][:-1]

def cmd2(str):
return string.split (cmd1(str))

setup(name = "mecab-python",
version = cmd1("mecab-config --version"),
py_modules=["MeCab"],
ext_modules = [
Extension("_MeCab",
["MeCab_wrap.cxx",],
include_dirs=cmd2("mecab-config --inc-dir"),
library_dirs=cmd2("mecab-config --libs-only-L"),
libraries=cmd2("mecab-config --libs-only-l"))
])

修正後がこちら

#!/usr/bin/env python

from distutils.core import setup,Extension,os

setup(name = "mecab-python",
version = '0.996',
py_modules=["MeCab"],
ext_modules = [
Extension("_MeCab",
["MeCab_wrap.cxx",],
include_dirs=['/usr/local/include'],
library_dirs=['/usr/local/lib'],
libraries=['mecab'])
])

ターミナル上で

mecab-config --version
mecab-config --inc-dir
mecab-config --libs-only-L

mecab-config --libs-only-l
最後のこのコマンドは複数表示されることもあるがmecabだけでOK。

上記コマンドを実行してパスを確認しながら修正する。

上記のように修正したあとに
python setup.py build
python setup.py install
pip install mecab-python3

これでできた!!