双稀疏主题模型(Dual-Sparse Topic Model)编程实现中的细节 Java

本文深入探讨了双稀疏主题模型,一种针对短文本挖掘的主题模型,旨在挖掘聚焦话题和词汇。文章回顾了从单稀疏模型到双稀疏模型的发展历程,详细介绍了模型的原理、参数更新策略及Java实现细节。

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

本文作者:合肥工业大学 电子商务研究所 钱洋 email:1563178220@qq.com 。
内容可能有不到之处,欢迎交流

未经本人允许禁止转载

论文来源

Lin T, Tian W, Mei Q, et al. The dual-sparse topic model: mining focused topics and focused terms in short text[C]//Proceedings of the 23rd international conference on World wide web. ACM, 2014: 539-550.

论文来自于机器学习顶会WWW。该篇文章于14年发表。

相关介绍

单稀疏模型

在2009年,Chong WangDavid M. Blei在NIPS发表一篇论文,将变量选择引入主题模型中。如下为其论文:

Wang C, Blei D M. Decoupling sparsity and smoothness in the discrete hierarchical dirichlet process[C]//Advances in neural information processing systems. 2009: 1982-1989.

即传统的概率主题模型或者非参模型(如HDP)等的基本假设都是:每个主题包含的单词数即为语料的所有单词数(维度相等)但在实际中,能够描述每个话题的单词数量往往是有限的

例如,描述篮球的可能有NBA、运动员、球星、训练、总冠军等词汇。而与篮球无关的一些词汇如音乐等可能无法表述该话题。

为此,需要对主题词分布进行约束。为达到此目的,作者引入稀疏性先验,即“spike and slab” prior。该先验相当于在Dirichlet上上加入二项分布,来控制主题是否包含该词
在这里插入图片描述

双稀疏模型

Chong Wang主要是在主题词上面加入了稀疏性。但考虑到短文本,其也存在稀疏性问题,即短文本关注的话题往往是有限的,仅仅几个话题。为此,Lin等人再次使用Spike and Slab先验对文档主题进行建模,提出了双稀疏主题模型。
在这里插入图片描述

模型推理

针对双稀疏主题模型,作者使用的是Collapsed Variational Bayes Inference。相当于标准变分推断来说,该算法相当于对更多的变量进行的积分。
如下为作者模型的推理公式:
在这里插入图片描述
在这里插入图片描述

Java编程实现的细节

在编程实现时,无非就是更新参数 α \alpha α,参数 β \beta β,参数 z z z

但在更新 α \alpha α,参数 β \beta β,必须进行对数处理,原因是Gamma函数(数值连乘),可能导致数值过大

对于Beta函数而言,转化成对数形式,可使用下面的函数:

	public static double log2betaf(double a,double b){
		double beta = logOn2Gamma(a) + logOn2Gamma(b) - logOn2Gamma(a+b);
		return beta;
	}
	//调用Java数值分析计算包lingpipe-4.1.0.jar
	public static double logOn2Gamma(double value) {
		return com.aliasi.util.Math.log2Gamma(value);
	}

另外,需要格外注意的是:通过指数变化将数值由对数再次转化成真实值时,需要注意double类型的最大范围(2的1024次方)。所以,一旦超过这个值,我们就取Double.MAX_VALUE进行计算。

如下为其Java处理方式:

if (FuncUtils.exponential2(log_a1) > 1024) {
	a_mk[d][k] = Double.MAX_VALUE/(Double.MAX_VALUE + FuncUtils.exponential2(log_a0));
}else {
	a_mk[d][k] = FuncUtils.exponential2(log_a1)/(FuncUtils.exponential2(log_a1) + FuncUtils.exponential2(log_a0));
}

完整代码请关注:https://github.com/soberqian/TopicModel4J

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值