Hatena::ブログ(Diary)

グレーゲーム

2009-04-12

[]Rによるテキストマイニング入門

Rによるテキストマイニング入門

Rによるテキストマイニング入門

テキストマイニングの本。色んな事例を交えながら理論を解説する。

本書には「テキスト」という単語が276回出てきます.時間がある方は,一つずつ数えて下さい.そうでない方は,本書をお読み下さい.

と帯に書いてあったけど全文がデータで公開されてる訳ではない。


前半は主にRと使うライブラリについての解説。特にRにこだわってる訳じゃないし、MeCabもある程度は知っていたので読み飛ばした。後半でRの式がいっぱい出てくるけど、そこまで複雑でもなかったし、解説もわりと丁寧だったので特にRを知らなくても差し支えはなかった。


後半では実例を使った解説

  • インターネット上のクチコミ情報の分析
  • アンケートの自由記述文の分析
  • 沖縄観光のアンケートの分析
  • テキストの自動分類
  • 書き手の判断

どれも生のデータを用いてるので分かりやすかった。特にインターネット口コミ分析で、携帯電話を例にとったときに「黒船」「衝撃」「デザイン」「ビジネス」とかの名詞と「売れる」「使える」+「ない」が一緒に出てきたのが面白かった。


というわけで、MeCabバインドのダウンロード数で圧倒的不人気を誇るPythonでここまでを抽出する。とそのまえにPythonカッコイイよなあ。Python超クールだなあ。Python可愛いなあ。Python面白いなあ。大事な事なのでもう2、3度言っとくか。PythonカッコイイPythonカッコイイPythonカッコイイ。

# coding: utf-8

import MeCab

def func():
  fp = open("_blog.txt")
  text = fp.read()
  fp.close()
  m = MeCab.Tagger("")
  n = m.parseToNode(text)
  words = {}
  while n != None:
    term = n.feature.decode("utf-8").split(",")
    if term[0] == u"名詞" and term[1] != u"非自立" and term[1] != u"":
      word = n.surface.decode("utf-8")
      words.setdefault(word, 0)
      words[word] += 1
    n = n.next
  for k, v in sorted(words.items(), key=lambda x:x[1], reverse=True)[:10]:
    print "%d : %s"%(v, k)

func()

8 : Python

5 : -

4 : 分析

4 : 解説

4 : R

3 : テキスト

2 : アンケート

2 : データ

2 : インターネット

2 : 後半

データは嘘をつかない。