『入門ソーシャルデータ』1章メモ ( #social_data )
入門 ソーシャルデータ ―データマイニング、分析、可視化のテクニック
- 作者: Matthew A. Russell,奥野陽(監訳),佐藤敏紀(監訳),瀬戸口光宏(監訳),原川浩一(監訳),水野貴明(監訳),長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/11/26
- メディア: 大型本
- 購入: 18人 クリック: 779回
- この商品を含むブログ (42件) を見る
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使いたいなぁ。
今のところ、こんな感じです。サテハテ。