import math
def compute_entropy(word_list):
wdict={}
tot_cnt=0
for w in word_list:
if w not in wdict:
wdict[w] = 0
wdict[w] += 1
tot_cnt+=1
ent=0.0
for k,v in wdict.items():
p=1.0*v/tot_cnt
ent -= p * math.log(p)
return ent
def count_substr_freq():
fp = open("./video.corpus")
str_freq={}
str_left_word={}
str_right_word={}
tot_cnt=http://www.funshionp.com/
for line in fp:
line=line.strip('n')
st = line.decode('utf-8')
l=len(st)
for i in range(l):
for j in range(i+1,l):
if j - i 0:
left_word=st[i-1]
else:
left_word='^'
if j < l-1: right_word=st[j+1] else: right_word='%' str_left_word[w].append(left_word) str_right_word[w].append(right_word) tot_cnt+=1 for k,v in str_freq.items(): if v >= 10:
left_ent=compute_entropy(str_left_word[k])
right_ent=compute_entropy(str_right_word[k])
print "%st%ft%ft%f"%(k,v*1.0/tot_cnt,left_ent,right_ent)
if __name__ == "__main__":
count_substr_freq()
视频
0.000237
轴承
0.000184
北京
0.000150
中国
0.000134
高清
0.000109
搞笑
0.000101
新闻
0.000100
上海
0.000100
美女
0.000092
演唱
0.000085
音乐
0.000082
——
0.000082
第二
0.000080
少女
0.000078
最新
0.000074
广场
0.000070
世界
0.000070
现场
0.000066
娱乐
0.000066
大学
0.000064
公司
0.000064
舞蹈
0.000063
电视
0.000063
教学
0.000060
我们
0.000060
国语
0.000059
经典
0.000056
字幕
0.000055
宣传
0.000053
钢管
0.000051
游戏
0.000050
电影
0.000049
演唱会
0.000046
日本
0.000045
小学
0.000045
快乐
0.000044
超级
0.000043
第三
0.000042
宝宝
0.000042
学生
0.000042
广告
0.000041
培训
0.000041
视频
0.000040
美国
0.000040
爱情
0.000039
老师
0.000038
动画
0.000038
教程
0.000037
广州
0.000037
学院
0.000035