LoginSignup
83
86

More than 5 years have passed since last update.

PythonからMeCab(とCaboCha)を使うまで

Last updated at Posted at 2015-01-20

環境

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を使ってみる

のを使ってみたらまた書きます.

83
86
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
83
86