101010

プログラミング備忘録とともに、ポエムってます。

Python3でMeCabを使えるようにする

f:id:araemonz:20190114235453p:plain

PythonでMeCabを使えるようにするためには、バインディングという作業が必要のようです。 mecab-python3をインストールするだけで、バインディング作業が完了するようなので、早速インストールしてみました。

pip install mecab-python3

しかし、下記のようにエラーが出てしまいました。

Collecting mecab-python3
  Using cached https://files.pythonhosted.org/packages/ac/48/295efe525df40cbc2173748eb869290e81a57e835bc41f6d3834fc5dad5f/mecab-python3-0.996.1.tar.gz
Installing collected packages: mecab-python3
  Running setup.py install for mecab-python3 ... error
    Complete output from command /Users/hoge/.pyenv/versions/3.7.1/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/ww/9t84g7g97552vzggl__9j3h00000gn/T/pip-install-6m4r9l3_/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/ww/9t84g7g97552vzggl__9j3h00000gn/T/pip-record-4qqpv1oi/install-record.txt --single-version-externally-managed --compile:
    /Users/hoge/.pyenv/versions/3.7.1/lib/python3.7/distutils/dist.py:274: UserWarning: Unknown distribution option: 'long_description_content_type'
      warnings.warn(msg)
    running install
    running build
    running build_py
    running build_ext
    building '_MeCab' extension
    swigging MeCab.i to MeCab_wrap.cpp
    swig -python -shadow -c++ -I/usr/local/Cellar/mecab/0.996/include -o MeCab_wrap.cpp MeCab.i
    unable to execute 'swig': No such file or directory
    error: command 'swig' failed with exit status 1
    
    ----------------------------------------
Command "/Users/hoge/.pyenv/versions/3.7.1/bin/python3.7 -u -c "import setuptools, tokenize;__file__='/private/var/folders/ww/9t84g7g97552vzggl__9j3h00000gn/T/pip-install-6m4r9l3_/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/ww/9t84g7g97552vzggl__9j3h00000gn/T/pip-record-4qqpv1oi/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/ww/9t84g7g97552vzggl__9j3h00000gn/T/pip-install-6m4r9l3_/mecab-python3/

swigというコマンドが見つからないエラーです。swigとは、C言語やC++で書かれたライブラリをPythonやRuby, Javaなどのプログラミングで利用できるようにするためのツールのようです。 https://ja.wikipedia.org/wiki/SWIG

brew install swigでswigをインストールします。 再びpip install mecab-python3で試したら、無事インストールできました。

せっかくですので、MeCabを使ってこのブログのタグクラウドを作ってみました。タグクラウドはブログの下部に表示しています。 仕組みはページごとのtitleタグを読み取って、MeCabで分かち書きに分解します。分解された文字の中から、名詞のみを抽出して、その単語をキーとしたハッシュを作ります。ハッシュの値には、ページタイトルとURLを配列で格納します。それをjsonとして書き出すことにしました。あとは、jQueryで読み込めば、Ajax式のタグクラウドとして表示できました。