僕の世界観を変えてみる

文系男子が趣味でプログラミングを勉強していくブログです。他にも日常で起きたどうでもいいことや愚痴を書いていきたいです。座右の銘は和を以て貴しとなすです。仲良くやろうよ。

【python3】Mecabをpythonで使えるようにするまで【Mac編】

f:id:htmllifehack:20181123211904j:plain

macでもmecabをインストールしてみました。

これはこれでまた手こずりましたね。

ってことでmacでの手順も書こうと思います。

mecabのインストール

macはhomebrewでmecabをインストールできる。

$ brew install mecab
$ mecab
|

mecabと入力するとmecabが起動するので適当に文章を打ってみて解析されるか確認する。

ちなみにmacのターミナル上だと文字化けはしなかった。

mecab-python3のインストール

mecabをpython3で使うためにはmecab-python3をインストールする必要がある。

>$ pip install mecab-python3

が、ここでもwindowsのときと同様のsetup.pyのエラーが発生。

ちょっと長いけど全文

Collecting mecab-python3
  Using cached https://files.pythonhosted.org/packages/25/e9/bbf5fc790a2bedd96fbaf47a84afa060bfb0b3e0217e5f64b32bd4bbad69/mecab-python3-0.7.tar.gz
Building wheels for collected packages: mecab-python3
  Running setup.py bdist_wheel for mecab-python3 ... error
  Complete output from command /usr/local/Cellar/python/3.6.4/bin/python3.6 -u -c "import setuptools, tokenize;__file__='/private/var/folders/cp/w773f5l10hj8yfgkffyjwzb40000gn/T/pip-install-hr26lidg/mecab-python3/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /private/var/folders/cp/w773f5l10hj8yfgkffyjwzb40000gn/T/pip-wheel-nks130t_ --python-tag cp36:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.macosx-10.12-x86_64-3.6
  copying MeCab.py -> build/lib.macosx-10.12-x86_64-3.6
  running build_ext
  building '_MeCab' extension
  creating build/temp.macosx-10.12-x86_64-3.6
  clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/Cellar/mecab/0.996/include -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python3/3.6.4/Frameworks/Python.framework/Versions/3.6/include/python3.6m -c MeCab_wrap.cxx -o build/temp.macosx-10.12-x86_64-3.6/MeCab_wrap.o
  xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
  error: command 'clang' failed with exit status 1
  
  ----------------------------------------
  Failed building wheel for mecab-python3
  Running setup.py clean for mecab-python3
Failed to build mecab-python3
Installing collected packages: mecab-python3
  Running setup.py install for mecab-python3 ... error
    Complete output from command /usr/local/Cellar/python/3.6.4/bin/python3.6 -u -c "import setuptools, tokenize;__file__='/private/var/folders/cp/w773f5l10hj8yfgkffyjwzb40000gn/T/pip-install-hr26lidg/mecab-python3/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/cp/w773f5l10hj8yfgkffyjwzb40000gn/T/pip-record-mat08_bb/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    creating build
    creating build/lib.macosx-10.12-x86_64-3.6
    copying MeCab.py -> build/lib.macosx-10.12-x86_64-3.6
    running build_ext
    building '_MeCab' extension
    creating build/temp.macosx-10.12-x86_64-3.6
    clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/Cellar/mecab/0.996/include -I/usr/local/include -I/usr/local/opt/openssl/include -I/usr/local/opt/sqlite/include -I/usr/local/Cellar/python3/3.6.4/Frameworks/Python.framework/Versions/3.6/include/python3.6m -c MeCab_wrap.cxx -o build/temp.macosx-10.12-x86_64-3.6/MeCab_wrap.o
    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
    error: command 'clang' failed with exit status 1
    
    ----------------------------------------
Command "/usr/local/Cellar/python/3.6.4/bin/python3.6 -u -c "import setuptools, tokenize;__file__='/private/var/folders/cp/w773f5l10hj8yfgkffyjwzb40000gn/T/pip-install-hr26lidg/mecab-python3/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/cp/w773f5l10hj8yfgkffyjwzb40000gn/T/pip-record-mat08_bb/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/cp/w773f5l10hj8yfgkffyjwzb40000gn/T/pip-install-hr26lidg/mecab-python3/

よくわからないけどとにかくmecab-python3がインストールできない。

error: command 'clang' failed with exit status 1で検索しても答えは見つからず。

mecab-ipadic-neologdをインストールするといいという記事をどこかでみたので試してみる。

git clone でmecab-ipadic-neologdをインストールする

$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

xcrunがない?

どうやらCommandLineToolsに付随する機能らしく、そもそもCommandLineToolsもないのでインストールする。

※CommandLineToolsとはコマンドで操作するツールのことらしい。 ターミナルとどう違うのか疑問だ。

CommandLineToolsのインストール

$ xcode-select --install
xcode-select: note: install requested for command line developer tools

ターミナル上ではなくデスクトップ画面でインストールが開始される。

コマンドを見てわかるようにxcodeの何からしい。

xcodeをインストールしてあれば一緒に入っているという記事も見かけたがそうではないようだ。

ということはもしかしたらmecab-python3がインストールできなかったのもxcrunがなかったからかも?

再度mecab-ipadic-noelogd をインストール

$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git

Cloning into 'mecab-ipadic-neologd'...
remote: Enumerating objects: 75, done.
remote: Counting objects: 100% (75/75), done.
remote: Compressing objects: 100% (74/74), done.
remote: Total 75 (delta 5), reused 55 (delta 0), pack-reused 0
Unpacking objects: 100% (75/75), done.
Checking out files: 100% (65/65), done.

成功したようなので続けてインストールする。

$ ./install-mecab-ipadic-neologd

インストールの途中でDo you want to install neologd? [yes:no]が出てくるのでyesとうつ必要がある。

Usage:
  $ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd 

-dオプション?引数?でneologdのパスを指定できるようだ。

mecab-python3 install

これで準備完了。

mecab-python3をインストールする。

$ pip install mecab-python3

Collecting mecab-python3
  Using cached https://files.pythonhosted.org/packages/25/e9/bbf5fc790a2bedd96fbaf47a84afa060bfb0b3e0217e5f64b32bd4bbad69/mecab-python3-0.7.tar.gz
Building wheels for collected packages: mecab-python3
  Running setup.py bdist_wheel for mecab-python3 ... done
  Stored in directory: /Users/shoot/Library/Caches/pip/wheels/4c/07/3a/5f22ccc9f381f3bc01fa023202061cd1e0e9af855292f005dd
Successfully built mecab-python3
Installing collected packages: mecab-python3
Successfully installed mecab-python3-0.7

使ってみる

import MeCab

s = '吾輩は猫である 名前はまだない。9日に'

t = MeCab.Tagger('-Owakati -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd ')

result = t.parse(s)

print(result)
吾輩は猫である    ワガハイハネコデアル  吾輩は猫である   名詞-固有名詞-一般      
名前  ナマエ   名前  名詞-一般       
は ハ は 助詞-係助詞        
まだ  マダ  まだ  副詞-助詞類接続      
ない  ナイ  ない  形容詞-自立    形容詞・アウオ段    基本形
。 。 。 記号-句点       
9日    ココノカ    9日    名詞-固有名詞-一般      
に ニ に 助詞-格助詞-一般     
EOS

まとめ

xcrunのところはつまづきましたがwindowsよりは簡単に設定できたかなって感じです。

さて、これで文章の自動生成でもやってみようかなって思っているわけですが、

janomeのほうが使い勝手がよい可能性もあります。

janomeってのはmecabをもとに作られたpythonようライブラリなんでpipで簡単にインストールできます。

まあ締めの部分なんで長くは書きませんがもしかしたらここまでやっておいてjanomeに変えるかもしれません(笑)

またmecabかjanomeで何か作ったら記事にしようかなと思います。