PythonとMeCabさんで遊びます。

少し前から触れ始めたPythonで遊んで、MeCabを使ってみたのでメモを。


Mac OS XMeCabをインストールするところから。
以下の記事を参考にさせていただきました。
大切なものは目に見えない - mahataの日記


次にmecab-pythonをインストール。


とりあえず、サンプルコードを動かしてみる。

import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print m.parse ("今日もしないとね")
今日	コンニチ	今日	名詞-副詞可能		
も	モ	も	助詞-係助詞		
し	シ	する	動詞-自立	サ変・スル	未然形
ない	ナイ	ない	助動詞	特殊・ナイ	基本形
と	ト	と	助詞-接続助詞		
ね	ネ	ね	助詞-終助詞		
EOS

無事、解析されましたとさ!


人工知能に関する断想録
こちらの記事で、mecab-pythonの使い方について色々書かれてました。


見つつ「銀河鉄道の夜」にでてくる名詞の数を数えてみました。

# coding: utf-8
# vim: fileencoding=utf-8
import MeCab
import codecs

def getNoun(text):
  tagger=MeCab.Tagger("-Ochasen")
  node=tagger.parseToNode(text.encode('utf-8'))
  nouns={}
  while node:
    noun=node.feature.split(",")[0]
    if noun==r'名詞':
      nouns.setdefault(node.surface,0)
      nouns[node.surface]+=1
    node=node.next
  return nouns

text=codecs.open('gingatetsudono_yoru.txt','r','shift_jis').read()
nouns=getNoun(text)
for k,v in sorted(nouns.items(),key=lambda x:x[1]):
  if v>40: print k,v
どこ 43
ほんとう 45
鳥 45
何 46
一 47
二 53
たち 53
みんな 54
中 56
それ 58
ぼく 59
方 67
カムパネルラ 101
人 102
ん 102
ジョバンニ 190
の 208
よう 209

ノイズが結構ありますね。


文字列の比較に手惑いました。
u"名詞" と書くと
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
と怒られてしまう。
r"名詞" と、raw文字列とかいうものに指定してあげると上手くいきました。


本日はここまで、おやすみなさい。