Blog

2014.04.24 / Development

前回は「ラムネマンゴーココナッツパフェ」をmecabが単語に分けてくれない、という問題が未解決。

mecabのオプションでそれっぽいのがないかなと見てみる。

$ mecab -h

を見ながらそれっぽいのを探してみたが、–levelがそれっぽいかなと思ったけど違う感じだし、–level 1と2で–margnalとか–nbest使ったら?って言われるからそっちも試してみるが正直うまくいかない。ラムネマンゴーココナッツパフェはラムネマンゴーココナッツパフェのまま。

そこで色々調べているとChasenとKakasiとMeCabの形態素解析・わかち書きの比較っていうサイトが出て来て、ブラウザ上でそれぞれを試せるのだけど、Chasenならラムネマンゴーココナッツパフェを分割できることが確認できたのでChasenを次は入れてみる。

mecabは保留。

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のオプションを見てみよう。細かく分ける方法があるかも。

2014.04.14 / Development, Lab

GoProをプログラムから制御してみた。GoProはHero3 plus black edition。Macは10.9.2。

ライブラリを調べてみる。
pythonのライブラリ
https://github.com/joshvillbrandt/GoProController
Node.jsのライブラリ
https://www.npmjs.org/package/gopro
が出て来た。

pythonはmacに最初から入ってるから、と思って動かしてみるけど何かライブラリが足りないっぽくてエラー出るし、作者はUbuntuで動くようにしか作ってないみたいだし、頑張ってMacで動くようにする前にNodeのほうを試す。
Node.jsは前に入れたのが入ってるし。

nodeモジュールをインストールする。

$ npm install gopro

exampleフォルダには、4つくらいサンプルがあるから動かしてみる。

$ cd node_modules/gopro/examples
$ node status.original.js

http://10.5.5.9/bacpac/se?t=jambikassu

ReferenceError: body is not defined

エラーが出た。

status.jsを開いて見るとパスワードを入れる必要があるみたいので書き換える。

var cam = new Camera('10.5.5.9', 'mypasswd')

new Camera()の第2引数を自分でgoproに設定したwifiパスワードに書き換える。

再度実行。

$ node status.js

http://10.5.5.9/bacpac/se?t=kosegopropasswd

status byte 0 0
status byte 1 100
status byte 2 1
status byte 3 0
status byte 4 4
status byte 5 0
status byte 6 65533
status byte 7 0
status byte 8 82
status byte 9 1
status byte 10 0
status byte 11 1
status byte 12 11
status byte 13 2
status byte 14 1
status byte 15 1
camera status { ready: true }

正常なステータスが帰って来てるっぽい。

ここまでは簡単だったので他のサンプルも動かしてみる。

2014.04.06 / Lab

スクリーンショット 2014-04-06 00.07.12

HTMLのテキストに何か面白いことができないか試す。マウスの軌跡がびょんびょんすると蟻の巣みたくなる。
View

2014.04.02 / Development

日本語形態素解析をしてみたい、ということでMacにMeCabとmecab-pythonを入れた。

環境はMac OS X 10.9.2 Marvericks
MeCabは0.996

macportsとかhomebrewとかは今回は無し

1 MeCabのインストール

http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html#download
でダウンロードURLを確認

$ cd ~/Downloads
$ curl -O https://mecab.googlecode.com/files/mecab-0.996.tar.gz
$ tar zxfv mecab-0.996.tar.gz
$ cd mecab-0.996
$ ./configure
$ make
$ make check

2 MeCab用の辞書のインストール

http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html#download
でダウンロードURLを確認

$ cd ~/Downloads
$ tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
$ cd mecab-ipadic-2.7.0-20070801
$ ./configure --with-charset=utf8
$ make
$ sudo make install

3 MeCabのインストール確認

$ mecab
すもももももももものうち
すもも	名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
うち	名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

いけた

4 mecab-pythonのインストール

https://code.google.com/p/mecab/downloads/list
でダウンロードURLを確認

$ curl -O https://mecab.googlecode.com/files/mecab-python-0.996.tar.gz
$ tar zxfv mecab-python-0.996.tar.gz
$ cd mecab-python-0.996

READMEを読む

$ python setup.py build
$ su
$ python setup.py install

とあるのでやる

error: command 'cc' failed with exit status 1

とか言われるのでググる
MarvericksにしてPILのインストールがコケる件 – Qiita http://qiita.com/noblejasper/items/797849a6c3c603016166

xcode-select --install

をする、なおらず

mecab-pythonをMacにインストールする – Qiita http://qiita.com/wwacky/items/e1e3b7cbfa3c4da4d877
を見る

$ export CFLAGS=-Qunused-arguments
$ export CPPFLAGS=-Qunused-arguments

をするとよいようだ(内容はわかってない、とりあえずやってみる)

$ python setup.py build
$ python setup.py install

いけた

5 mecab-pythonのテスト

mecab-python-0.996にtest.pyがあるのでそれを実行する

$ python test.py
0.996
太郎	名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は	助詞,係助詞,*,*,*,*,は,ハ,ワ
この	連体詞,*,*,*,*,*,この,コノ,コノ
本	名詞,一般,*,*,*,*,本,ホン,ホン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二	名詞,数,*,*,*,*,二,ニ,ニ
郎	名詞,一般,*,*,*,*,郎,ロウ,ロー
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見	動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性	名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に	助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し	動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。	記号,句点,*,*,*,*,。,。,。
EOS

 	BOS/EOS,*,*,*,*,*,*,*,*
太郎 	名詞,固有名詞,人名,名,*,*,太郎,タロウ,タロー
は 	助詞,係助詞,*,*,*,*,は,ハ,ワ
この 	連体詞,*,*,*,*,*,この,コノ,コノ
本 	名詞,一般,*,*,*,*,本,ホン,ホン
を 	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
二 	名詞,数,*,*,*,*,二,ニ,ニ
郎 	名詞,一般,*,*,*,*,郎,ロウ,ロー
を 	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
見 	動詞,自立,*,*,一段,連用形,見る,ミ,ミ
た 	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
女性 	名詞,一般,*,*,*,*,女性,ジョセイ,ジョセイ
に 	助詞,格助詞,一般,*,*,*,に,ニ,ニ
渡し 	動詞,自立,*,*,五段・サ行,連用形,渡す,ワタシ,ワタシ
た 	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。 	記号,句点,*,*,*,*,。,。,。
 	BOS/EOS,*,*,*,*,*,*,*,*
EOS
EOS
filename: /usr/local/lib/mecab/dic/ipadic/sys.dic
charset: utf-8
size: 392126
type: 0
lsize: 1316
rsize: 1316
version: 102

できた