マルコフテーブルを集計する
自分のだと{"単語",["次の単語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