[[TopPage]]

***nltkでtwitterのログを処理する。 [#d3e1dcf3]
+TwitterLog20100805 を自分のディレクトリにコピーする
	cp -r /home/maeda/TwitterLog/20100805/ .
+参考サイト http://d.hatena.ne.jp/nokuno/20100123/1264239192
+日本語テキストを読み込むサンプルプログラム
	#! /usr/bin/env python
	#encoding: utf-8
	import nltk
	raw = open('./sample.mecab').read()
	words = raw.split();
	print len(words)
	text = nltk.Text(words)
	gen = text.generate(300)
	print gen
+bigrams
	#!/usr/bin/python
	#encoding: utf-8
	import nltk
	
	raw = open('sample.dat').read()
	words = raw.split();
	bigrams = nltk.bigrams(words)
	fd = nltk.FreqDist(bigrams)
	for w in fd:
	        if fd[w]==100 :
	                break;
	        print w[0],w[1],fd[w]
	
	#文字化けする
	cfd = nltk.ConditionalFreqDist(bigrams)
	print cfd['私']
+24時間x60分=1440ファイルを分かち書きにする


***ディレクトリ下の*.datファイルを読み込み、その中からtweetを抽出する。(筆跡:Ashihara) [#s4de06db]
--事前処理として.dat内の制御文字を削除する必要がある。
---コマンド
	find . -name "*.dat" | xargs sed -i "s/^M//g"
---^Mは[Ctrl]+[v] + [Ctrl] + [M]で入力する。直接入力してはいけない。
	[Ctrl]+[v] + [Ctrl] + [M]
---他の制御文字が含まれている場合もある。適宜除去する必要がある。
--tweetの抽出
---データは生データを読み込む。それをsplit()でリストにする。
---splitされたリストの要素中に'2010'の要素が必ず一つのtweetに存在し、その後はtweet内容となる。
---これを利用し、index関数で'2010'が存在する箇所の添字を取得、それ以降の要素を全て結合しtweetとする。
---一つのtweetに対し一つずつ改行しつつファイルに書き込む。tweetList.txtというファイルが生成される。
---このtweetList.txtをmecabにかける。今回はコマンドラインから直接実行した。
---この処理は制御文字を削除しない限り、失敗する。以下ソースコード。
---出力が完全ではないかもしれません。
    #vim fileencoding:utf-8 
    import commands
    import codecs
    list = commands.getoutput('ls *.dat')
    fileList = list.split("\n")
    datList = []
    for file in fileList:
            for dat in codecs.open(file,'r','utf-8'):
                    datList.append(dat.encode('utf-8'))
    tweetList = []
    swaplist = []
    tw = str()
    for dats in datList:
            swaplist = dats.split()
            index = swaplist.index('2010')#2010以下がtweet
            tw = ""
            for tweet in swaplist[index + 1:]:
                    tw += tweet
            tweetList.append(tw)
    f = open('tweetList.txt', 'w')
    for tweet in tweetList:
            f.write(tweet+'\n')
    f.close()
***復習問題 [#qecaa592]
-"TwitterLog20100805-1600.dat" のファイルを読み込み、コメントだけを「Comment.txt」ファイルに書き出すプログラムを書け
--^M を削除すること
-必要な知識
--ファイル読み込み
	#!/usr/bin/env python
	for line in open('TwitterLog20100805-1600.dat', 'r'):
	    print line
--ファイル書き込み
	strs = "abc";
	f = open('Comment.txt', 'w')
	f.writelines(strs)
	f.close()
--"TwitterLog20100805-1600.dat" を読み込み "Comment.txt" にそのまま書き込む
	#!/usr/bin/env python
	
	f = open('Comment.txt', 'w')
	for line in open('TwitterLog20100805-1600.dat', 'r'):
	        print line
	        f.writelines(line)
	f.close()
--split 関数を利用して、タブで区切り、4番目の要素(つぶやきの内容)を"Comment.txt"に出力する
	#!/usr/bin/env python
	
	f = open('Comment.txt', 'w')
	for line in open('TwitterLog20100805-1600.dat', 'r'):
	        print line
	        items = line.split("\t")
	        print items[3]
	        f.writelines(items[3])
	f.close()
--置換処理