LDA模型困惑度计算出现的问题

在使用JGibbLDA实现LDA模型时,遇到困惑度计算异常情况。随着主题数的增加,困惑度perp值不是按预期减少或呈现抛物线趋势,而是增大。通过读取theta、phi文件构建矩阵,并根据tassign文件处理测试集词表,计算每篇文本词概率pwi及 pwd,最终得到困惑度perp。目前困惑度的变化与理论不符,需要进一步排查错误原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LDA程序使用的是JGibbLDA
读theta文件,构造theta二维矩阵。
读phi文件,构造phi二维矩阵。
读tassign文件,得到每篇文本的词数Nd,继而得到测试集的总词数Nsum;并根据tassign文件构造每篇文本所有词组成的词表。
编程实现,根据tassign文件构造测试集每篇文本中所有词组成的词表,根据该词表(Map形式,存储的是每篇文本所有出现的词的词id(词不排重)),得到每一篇文本的词id(index),从而根据此前构造好的theta二维矩阵、phi二维矩阵,分别得到double dt=theta[m][k]、double tw=phi[k][index]。则,一篇文本中第i个词wi的概率为pwi。 一篇文本的所有词的概率为pwd。构造困惑度的分子,即所有文本的词的概率的 log值pwM 。
因此,可以得到LDA模型的困惑度 perp = Math.exp(-pwM / Nsum)。
但是,依据上述编程思想得到的困惑度 perp值,随主题数的增加而增大(主题数设置的是20、40、60、80、100、120),并没有随主题数的增加产生抛物线或者减小。不知道是哪里出了错,望大神指教。



        //计算困惑度
	public double computePerplexity() throws IOException{
		testFileLDAtassignpath="."+File.separator+"testFile"+File.separator+"LDA的文件"+File.separator+"测试文本集LDA格式.txt.model-final.tassign";
		testFileLDAthetapath="."+File.separator+"testFile"+File.separator+"LDA的文件"+File.separator+"测试文本集LDA格式.txt.model-final.theta";	
		testFileLDAphipath="."+File.separator+"testFile"+File.separator+"LDA的文件"+File.separator+"测试文本集LDA格式.txt.model-
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值