[[TopPage]] +参考サイト 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 ***ディレクトリ下の*.datファイルを読み込み、その中からtweetを抽出する。(筆跡:Ashihara) [#s4de06db] --事前処理として.dat内の制御文字を削除する必要がある。 ---コマンド:find . -name "*.dat" | xargs sed -i "s/^M//g" ---^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()