環境
Mac OS 10.9.4
Python 2.7
Cabochaのインストール
CaboChaを使うのにはMeCabが必要
CRF++のインストール
執筆時での最新版は 0.58
http://crfpp.googlecode.com/svn/trunk/doc/index.html#download
解凍して
$ cd CRF++-0.58
$ ./configure
$ make
$ make install
$ cd python
$ sudo python setup.py install
MeCabのインストール
執筆時での最新版は 0.996
https://code.google.com/p/mecab/
Downloadsから
- mecab-0.996.tar.gz(mecab本体)
- mecab-python-0.996.tar.gz
- mecab-ipadic-2.7.0-20070801(辞書らしい)
をダウンロード,解凍.
$ cd mecab-0.996
$ ./configure
$ make
$ sudo make install
$ cd ..
$ cd mecab-python-0.996
$ sudo python setup.py install
$ cd ..
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure
$ make
$ sudo make install
Python.h: そのようなファイルやディレクトリはありません
とか言われた場合は
sudo apt-get install python2.7-dev
動かしてみる
$ mecab
坂本ですが
坂本? ????,????,*,*,*,*,*
?? ̾??,??ͭ̾??,?ȿ?,*,*,*,*
??が ????,????,*,*,*,*,*
EOS
文字化けしている.辞書の文字コードがデフォルトだとutf-8じゃないらしい.
mecab-ipadicのディレクトリに移動して,UTF-8にでコンフィグしなおしてみる.
make cleanしてからconfigureしなおすようにする
$ make clean
$ ./configure --with-charset=utf8
$ make
$ sudo make install
Ubuntuとかで
libmecab.so.2: cannot open shared object file: No such file or directory
とか言われたら、
sudo ldconfig
とすればいいっぽい
使ってみる.
$ mecab
坂本ですが
坂本 名詞,固有名詞,人名,姓,*,*,坂本,サカモト,サカモト
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
が 助詞,接続助詞,*,*,*,*,が,ガ,ガ
EOS
直った.
ちなみに,mecabの設定はmecabrcに書いてある.
$ sudo find / -name "mecabrc"
/usr/local/etc/mecabrc
$ sudo emacs /usr/local/etc/mecabrc
デフォルトだとこんな感じになっていた
;
; Configuration file of MeCab
;
; $Id: mecabrc.in,v 1.3 2006/05/29 15:36:08 taku-ku Exp $;
;
dicdir = /usr/local/lib/mecab/dic/ipadic
; userdic = /home/foo/bar/user.dic
; output-format-type = wakati
; input-buffer-size = 8192
; node-format = %m\n
; bos-format = %S\n
; eos-format = EOS\n
dicdirってのが辞書データのディレクトリらしい.
CaboCha のインストール
執筆時の最新版は 0.68
https://code.google.com/p/cabocha/
Downloadsからcabocha-0.68.tar.bz2をダウンロード,解凍して
$ cd cabocha-0.68
$ ./configure
$ make
$ sudo make install
$ cd pythin
$ sudo python setup.py install
MeCabで形態素解析してみる
pythonでの動作確認
import MeCab
mt = MeCab.Tagger("-Ochasen")
print mt.parse("坂本ですが")
坂本 サカモト 坂本 名詞-固有名詞-人名-姓
です デス です 助動詞 特殊・デス 基本形
が ガ が 助詞-接続助詞
EOS
品詞とか見る
なんか文字コードとかかなり気をつけないと行けないようでめんどうである.
# coding: utf-8
import MeCab
mt = MeCab.Tagger("mecabrc")
res = mt.parseToNode("坂本ですが")
while res:
print res.surface
print res.feature
res = res.next
BOS/EOS,*,*,*,*,*,*,*,*
坂本
名詞,固有名詞,人名,姓,*,*,坂本,サカモト,サカモト
です
助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
が
助詞,接続助詞,*,*,*,*,が,ガ,ガ
BOS/EOS,*,*,*,*,*,*,*,*
res.featureを","でsplitしてる実装が多かったけどそうるすしかないのかしら.まあ問題なさそうなのでそうしてみる.
# coding: utf-8
import MeCab
mt = MeCab.Tagger("mecabrc")
res = mt.parseToNode("坂本ですが")
while res:
print res.surface
arr = res.feature.split(",")
print "品詞: " + arr[0]
res = res.next
品詞: BOS/EOS
坂本
品詞: 名詞
です
品詞: 助動詞
が
品詞: 助詞
品詞: BOS/EOS
res.next じゃなくて res = res.next ってしないと当然無限ループする。Javaとか使ってるとハマる。
CaboChaを使ってみる
のを使ってみたらまた書きます.