2014.04.17 Development

前の記事でmecabとmecab-pythonをmacに入れてみたので、csvファイルを読んでmecabにかけてみる。

csvは普通にexcelで作る。こんなかんじでいいや。
data.csvという名前で保存した。

id,name
1,すもももももももものうち
2,いちごパイカスタードパフェ
3,ラムネマンゴーココナッツパフェ

あとはcsv読み込んでmecabかけるpythonを書く。
pythonは正直あんまりわかってないから間違ってるかもしれないけど、一応動く。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import MeCab
import csv

csvFile=open('data.csv','rU')

csvFile.next() # 先頭行は今回見出し行だから飛ばす

csvReader=csv.reader(csvFile)
for row in csvReader:
    rowId=row[0]
    sentence=row[1]

    print '-'
    print 'id : '+rowId
    print 'sentence : '+sentence
    try:
        t=MeCab.Tagger()
        m=t.parseToNode(sentence)
        while m:
            if m.surface=='':
                m=m.next
                continue

            print 'surface : ' + m.surface
            print 'feature : '+m.feature
            m = m.next
    except RuntimeError, e:
        print "RuntimeError:", e;

実行する。

$ python example.py
-
id : 1
sentence : すもももももももものうち
surface : すもも
feature : 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
surface : も
feature : 助詞,係助詞,*,*,*,*,も,モ,モ
surface : もも
feature : 名詞,一般,*,*,*,*,もも,モモ,モモ
surface : も
feature : 助詞,係助詞,*,*,*,*,も,モ,モ
surface : もも
feature : 名詞,一般,*,*,*,*,もも,モモ,モモ
surface : の
feature : 助詞,連体化,*,*,*,*,の,ノ,ノ
surface : うち
feature : 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
-
id : 2
sentence : いちごパイカスタードパフェ
surface : いちご
feature : 名詞,一般,*,*,*,*,いちご,イチゴ,イチゴ
surface : パイカスタードパフェ
feature : 名詞,一般,*,*,*,*,*
-
id : 3
sentence : ラムネマンゴーココナッツパフェ
surface : ラムネマンゴーココナッツパフェ
feature : 名詞,固有名詞,組織,*,*,*,*

動いた。

動いたけど、あんまり分解できてないのがわかる。
「すもももももももものうち」はきっちり分解できてるけど、「いちごパイカスタードパフェ」は「いちご」と「パイカスタードパフェ」にしかわけれてない。パイカスタードパフェっていう一般名詞は無いと思うけど辞書に入ってるのかな。
「ラムネマンゴーココナッツパフェ」に至っては1個の固有名詞ってことになってる。

これではイマイチ。
次はmecabのオプションを見てみよう。細かく分ける方法があるかも。