『入門ソーシャルデータ』1章メモ ( #social_data )

入門 ソーシャルデータ ―データマイニング、分析、可視化のテクニック

入門 ソーシャルデータ ―データマイニング、分析、可視化のテクニック

Pythonを触ってみることにした原因の『入門ソーシャルデータ』1章に関する覚書きです。

まだ環境構築で四苦八苦しているので、改めて落ち着いて取り組みたいですが…。

環境

  • Windows 7 Professional SP1 (64bit)
  • ActivePython 2.7.2.5

覚書き

出力文字のエンコード

まず、ファイルに書き出したマルチバイト文字が、正しく表示されないところでつまづきました。

これは、ひたすら hoge.encode('utf-8') してから書き出すことで解決しました。

Unicode型と文字列型まわりがよく分かってないので、把握する必要があるようです)

NLTKのインストール

easy_installでNLTKが入らないことが本の脚注に書いてありましたが、現行バージョンならいけるのではないかと思い、easy_installでNLTKとpyYamlのインストールを試みました。しかし、import nltk をしたらエラーが出て、やはりインストールに失敗することが分かりました。

>>> import nltk
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named nltk

というわけで、一旦NLTKとpyYamlをアンインストールしました。NLTKは、インストールしたはずのファイルを消そうとしたところ、見つかりませんでした。ひょっとしたら、ダウンロードすらできてなかったのかも。pyYamlは、それっぽいフォルダがあったので、物理的に削除しました。

その後、pipを使って、NLTKを無事にインストールできました。NLTKの最新版は、http://pypi.python.org/packages/source/n/nltk/ で確認しました。pyYAMLも自動で一緒にインストールされました。

今度は import nltk でエラーが出なくなって、めでたしめでたし。

日本語のトークン化

上手くいっていません。

次のページを参考にして、必要なパッケージをダウンロードしました。…というか、必要なのはjeitaだそうですが、全部インストールしました(ただし、rte.zipはタイムアウトでエラーになりました)。

import nltk
nltk.download()

NLTK Downloader
---------------------------------------------------------------------------
    d) Download   l) List    u) Update   c) Config   h) Help   q) Quit
---------------------------------------------------------------------------
Downloader> d

Download which package (l=list; x=cancel)?
  Identifier> all

しかし、簡単な文章をUTF-8のテキストファイルとして保存して、読み込ませ、トークンを「/」で区切ろうとしたところ、上手くいきません。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "{PYTHONHOME}\lib\site-packages\nltk\corpus\reader\plaintext.py", line 73, in raw
    return concat([self.open(f, sourced).read() for f in fileids])
  File "{PYTHONHOME}\lib\site-packages\nltk\corpus\reader\util.py", line 421, in concat
    raise ValueError('concat() expects at least one object!')
ValueError: concat() expects at least one object!

util.pyを確認すると、渡しているテキストのサイズ(len関数の値)が0になってエラーが飛んでいるようです。なんで0になるんだ?って話ですが、未解決です。(あとで再チャレンジ)

グラフ化

できたといえばできたのですが、図があまりきれいじゃなくてションボリ。。。

GVedit(Graphvizのdotファイルを読み込んで図を描画するアプリ)を使ってみましたが、横にビローンと長い図になってしまいますね。これはしょうがないことなんでしょうか…? 世界さんのblockdiag使いたいなぁ。

今のところ、こんな感じです。サテハテ。