today_rainy's blog

ガジェットやらプログラムやらを地道に弄くる。

CaboChaのインストールと見せかけたMeCab from Python on raspbian

Python on RaspberryPIで形態素解析やりたくて、
色々調べた結果、係り受け解析ができるCaboChaをインストールTRY。
CaoboCha: Yet Another Japanese Dependency Structure Analyzer
qiita.com

qiita.com


失敗したら最悪これで行こう。。。developer.yahoo.co.jp


今回参考にしたページは
Lubuntu - だいたい15分でCaboChaマシン(2015年6月版) - Qiita

説明が面倒なので、詳細は参考ページにお任せ。もう全部いっぺんにインスコ

$ sudo apt-get install build-essential devscripts dh-make autotools-dev fonts-migmix mecab mecab-ipadic-utf8 libmecab-dev

とりあえずCaboChaの前段であるMecabちゃんを動かしたいけど、

$ python
Traceback (most recent call last):
  File "test_mecab.py", line 5, in <module>
    import MeCab
ImportError: No module named MeCab

そもそもMeCabなんて見えてないっぽい。。。どうやらバインディングとやらで
mecabpythonで使うためのmecab-pythonが必要だけど、pipで上手く入らない。。。

$  sudo pip install mecab-python
 MeCab_wrap.cxx:149:20: fatal error: Python.h: No such file or directory

# 怒られた、、、python関連の環境追加して再トライ
$ sudo apt-get install python-dev
$  sudo pip install mecab-python
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for Ada/C/ObjC but not for C++ [enabled by default]
    MeCab_wrap.cxx: In function ‘PyObject* _wrap_Lattice_newNode(PyObject*, PyObject*)’:
    MeCab_wrap.cxx:5161:39: error: ‘class MeCab::Lattice’ has no member named ‘newNode’
 (以下、似たようなエラが続く・・・詰まった)

# MeCabとのVersionが不一致かと思い、合わせてみるもなんか違うSSL要因で失敗の様子
$ sudo pip install mecab-python-0.993
/usr/local/lib/python2.7/dist-packages/pip-7.1.2-py2.7.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
  Could not find a version that satisfies the requirement mecab-python-0.993 (from versions: )
No matching distribution found for mecab-python-0.993

# InsecurePlatformWarningというエラーはちょいちょ見るので、これを解決させてみよう
$ sudo apt-get install python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev
$ sudo pip install requests[security]

# 再トライも、そんなパッケージねぇ!と怒られる
$ sudo pip install mecab-python-0.993
Collecting mecab-python-0.993
  Could not find a version that satisfies the requirement mecab-python-0.993 (from versions: )
No matching distribution found for mecab-python-0.993


# うるせぇ、じゃぁ自分でやるよ!
$ wget http://mecab.googlecode.com/files/mecab-python-0.993.tar.gz
$ tar zxvf mecab-python-0.993.tar.gz
$ cd mecab-python-0.993
$ sudo python setup.py install

#
#                                 ,.へ
#  ___                             ム  i
# 「 ヒ_i〉                            ゝ 〈
# ト ノ                           iニ(()
# i  {              ____           |  ヽ
# i  i           /__,  , ‐-\           i   }
# |   i         /(●)   ( ● )\       {、  λ
# ト-┤.      /    (__人__)    \    ,ノ  ̄ ,!
# i   ゝ、_     |     ´ ̄`       | ,. '´ハ   ,!
#. ヽ、    `` 、,__\              /" \  ヽ/
#   \ノ ノ   ハ ̄r/:::r―--―/::7   ノ    /
#       ヽ.      ヽ::〈; . '::. :' |::/   /   ,. "
#        `ー 、    \ヽ::. ;:::|/     r'"
#     / ̄二二二二二二二二二二二二二二二二ヽ
#     | 答 |     コ ロ ン ビ ア       │|
#     \_二二二二二二二二二二二二二二二二ノ
#

$ python
>>> import sys
>>> import MeCab
>>> m = MeCab.Tagger("-Ochasen")
>>> print m.parse("今日もしないとね")
今日	キョウ	今日	名詞-副詞可能		
も	モ	も	助詞-係助詞		
し	シ	する	動詞-自立	サ変・スル	未然形
ない	ナイ	ない	助動詞	特殊・ナイ	基本形
と	ト	と	助詞-接続助詞		
ね	ネ	ね	助詞-終助詞		
EOS

疲れたので今日はここまで。2時間ほど。。。


追記:
寝る前にマルコフ連鎖で文章っぽいものを生成しているページを発見したので、ちょこちょこっとmecab-python風に書きなおしたらすぐ動いた。スゴイ簡単。でもイミフな文章だなぁ。kenkiti.hatenadiary.jp

$ python mecab_markov.py
 吾輩はここで聞くとそれは時々ぷうぷうと煙を見たかとんと見当がつかぬ。ただ彼の真中があったかとんと見当がいわゆる人間という話であった所である。第一毛をもって装飾されべきはずの掌に載せられたかとんと見当が今でも薄暗いじめじめしている。この時妙なものを吹く。ただ彼の上で一番獰悪なものだとそれは猫にもなかったがつかぬ。この書生というものだ。掌には書生というのがいわゆる人間中であろう。 どこで一番獰悪なものの真中があったから時々ぷうぷうと煙を捕えている。そうしてその当時はまだ無い。この書生の掌に載せられた事は書生というものだ。掌の上であろう。ただ彼のは時々我々を吹く。この頃知ったのがこんな片輪には書生というものを見た。掌に載せられた所でニャーニャー泣いていた事だけは何という考もだいぶ逢った。名前は書生の顔を吹く。しかしその穴のは何という話で生れた。何でも薄暗いじめじめしたばかりである。掌の上であったの見た感じがあまりに突起して人間の見始であったのが人間のがない