White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

マルコフテーブルを集計する

自分のだと{"単語",["次の単語A","次の単語A","次の単語B"]}ってなってるので、
それを数値化するスクリプトを書いた。

#!/usr/bin/python
# -*- coding: sjis -*-

def readMarkovTable():
	import json
	file = open("markovtable",'r')
	mt = json.read(file.read())
	file.close()
	return mt
	
if __name__ == "__main__":
	mt = readMarkovTable()
	for mt_a in mt:
		#for mt_aa in mt_a:
			#print hex(ord(mt_aa)),
		try:
			print unicode(mt_a,"euc_jp").encode('sjis')+":"
			worddict = {}
			for mt_a2 in mt[mt_a]:
				if worddict.has_key(mt_a2)== False :
					worddict[mt_a2] = 1
				else:
					worddict[mt_a2] += 1
					#print unicode(mt_a2,"euc_jp").encode('sjis'),
			for w in worddict:
				w2 = w
				#for w2a in w2:
				#	print hex(ord(w2a)),
				try:
					w2 = unicode(w2,'euc_jp').encode('sjis')
				except:
					pass
				print ">"+w2 + ":" + str(worddict[w])
		except:
			continue
		print ""

なぜかマルコフテーブルはasciiエンコードでセットされてる上、他のエンコードに変えようとするとたまに変な文字が出てエンコードに失敗するので例外を設置。
文字コード管理はすげー疲れた・・

入力例

{"さすが":["に","に","に","に","に","に","に","に","に","に","に","に","に","に","に","に","に"],"こっち":["は","は","は","は"]}

出力例

さすが:
>に:17

こっち:
>は:4