Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

環境

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away