てきとう

ワーワーゆうとります

マルコフよ

動機
「マルコフって多分ロシア人だろうな」と想像をふくらませて勝手に似顔絵描いて「アンドレア・マルコフ」というフルネームまで想像していた所
wikipediaで検索したらマルコフさんが「アンドレイ・マルコフ」っていう名前だった。驚きを隠せない。想像と一文字違い!!
これはもう何かの運命だ。だから、今さらですけどマルコフ連鎖でそれっぽい文章を作ってみたい。
っていうか遊びたい。
今回OSはCentOS上で、言語はpython(2.5)でやるよー

用意

このへんを使うみたいです。
最初はMeCabだけ入れていましたが、「係り受け」を解析するにはCaboChaが必要なんだって。
で、CaboChaをインストールしようとサイト確認したら、TinySVMとyamchaも必要ですとの事。
なのでいれた順番にメモします。


MeCab Ver 0.97
事前にインストールされていましたが、pythonから使うのでpythonバインディングだけいれました。
ここhttp://sourceforge.net/projects/mecab/files/mecab-python/から最新の0.98をDLしてきて解凍、解凍されたディレクトリに移動して

python setup.py install

入ったか確認

# python
>>> import MeCab
>>> m = MeCab.Tagger()
>>> print m.parse("色々あったけど、私は元気です。")
色々 副詞,助詞類接続,*,*,*,*,色々,イロイロ,イロイロ
あっ 動詞,自立,*,*,五段・ラ行,連用タ接続,ある,アッ,アッ
た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
けど 助詞,接続助詞,*,*,*,*,けど,ケド,ケド
、 記号,読点,*,*,*,*,、,、,、
私 名詞,代名詞,一般,*,*,*,私,ワタシ,ワタシ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキ
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。 記号,句点,*,*,*,*,。,。,。
EOS

動いた!こいつ…動くぞ!


TinySVM Ver 0.09
学習させるのに必要らしい。日本製。色々説明のページを見てみましたが頭が悪くてわかりませんでした。
理系ってかっこいいね。とりあえずインストールする。

wgetしてきてtarで解凍し、解凍されたディレクトリに移動。

# ./configure
# make
# make check
# make install

やんごとなきインストールが完了致しました。


yamcha Ver 0.33
cabocha入れるなら入れてね!と言われたので、入れます。何をするのかというと、調べても狼牙風風拳の事ばっかり出てきました。
画像検索の結果なんか彼一色です。だいたい一回戦で死ぬくせに。
本家サイトに「text chunker」って書いてあったので、めかぶと同じ感じに文章を単語で区切ってくれるんじゃないでしょうか。
こちらもwgetしてきてtarで解凍し、解凍されたディレクトリに移動。

# ./configure
# make
# make check
# make install

で、あっさり完了。


CaboCha Ver 0.53
日本語係り受け解析器。日本一だそうです。
係り受け、修飾する・されるの関係。これなら文系の僕にもわかるぞ!これ、進研ゼミでやった所だ!という気持ちになりました。
これを使うと、より自然な日本語文章が作れるようです。

こちらもwgetしてきてtarで解凍し、解凍されたディレクトリに移動。

# ./configure --with-morphological-analyzer=mecab --with-mecab-config=/usr/bin/mecab-config --with-chasen-config=/usr/local/bin/yamcha-config
# make
# make check
# make install

インストールは無事に終了。
よし、これをpythonで使うぞ

解凍したcabochaディレクトリの中にあるpythonディレクトリに移動して

# python setup.py build

running build
running build_py
creating build
(中略)
CaboCha_wrap.cxx:1209: error: invalid conversion from ‘const char*’ to ‘char*’
CaboCha_wrap.cxx:3263: error: invalid conversion from ‘const char*’ to ‘char*’
error: command 'gcc' failed with exit status 1

あら・・・。助けてgoogle先生。そして先人の皆様。
そうしたら、ありました!
[Python] CaboCha の Python バインディングのインストールでエラーになったら試してみる価値のあること 
http://d.hatena.ne.jp/knaka20blue/20081229/1230543630

ありがとうございます先人の方!とても助かりました!

無事ビルドできたので

python setup.py install

これで大丈夫だ、と思って入ってるか確認したら

# python
>>> import CaboCha
Traceback (most recent call last):
File "", line 1, in
File "CaboCha.py", line 5, in
import _CaboCha
ImportError: libcabocha.so.2: cannot open shared object file: No such file or directory

libcabocha.so.2がないよ!と言われたのでfindでlibcabocha.so.2を探す。
/user/local/にいたので、/usr/lib/にファイルをコピー。

# python
>>> import CaboCha
>>> import sys
>>> c = CaboCha.Parser(sys.argv)
>>> sentence = "色々あったけど、私は元気です。"
>>> print c.parseToString(sentence)
色々あったけど、私は元気です。
EOS

…あれ?なんか違う…
とりあえず今日はここまで。