BTM主题模型构建及困惑度计算
def perplexity(argvs):
宋小宝2013电视剧prob_sum = 0#p(b)
model_dir = argvs[1]#模型的存储路径我又想要你了真的想你了
K = int(argvs[2])#主题个数
voca_pt = argvs[3]#词汇-id对应表路径
test_corpus = argvs[4]#测试集路径
voca = read_voca(voca_pt)#以字典形式存储词汇id
W = len(voca)#词汇个数
pz_pt = model_dir + 'k%d.pz' % K#主题概率的存储路径
pz = read_pz(pz_pt)
zw_pt = model_dir + 'k%d.pw_z' % K#主题词汇概率分布的存储路径
k = 0
topics = []
for l in open(zw_pt):
app1 = {}#以字典形式存储主题下词汇与其对应的概率值
vs = [float(v) for v in l.split()]形容雪
wvs = zip(range(len(vs)), vs)
wvs = sorted(wvs, key=lambda d:d[1], reverse=True)
for w,v in wvs:
app1[voca[w]] = v
topics.append((pz[k], app1))#存储到列表:主题-词汇-概率
print(topics)
k += 1
广州高考成绩查询bs = cidui(test_corpus)#获取测试集中的词对
count = 0#词对计数
for bi in bs:
prob_bi = 0
count += 1
w1 = bi.get_wi()延禧攻略一共多少集
w2 = bi.get_wj()
for i in range(len(topics)):#计算p(b)
prob_topic = topics[i][0]
prob_w1 = topics[i][1][voca[w1]]
prob_w2 = topics[i][1][voca[w2]]
prob_bi += prob_topic*prob_w1*prob_w2
prob_sum += math.log(prob_bi)
prep = p(-prob_sum/count)
廷禧攻略return prep
结合github中给出的代码,代码能⼒很弱,有没有⼈跟我讨论下⾥⾯的细节。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论