融合协变量信息的结构主题模型
文本数据是一种重要的社会科学研究对象。在日常生活中,大家或多或少都接触过文本数据,比如,所阅读的书籍报刊,应用软件发放的用户调查问卷,社交平台上的发言等。随着科技的迅猛发展,文本数据的可数字化使其存储和使用更为便捷,文本分析和文本挖掘成为热门领域。
在文本分析中,有一个重要的研究领域,即主题模型。最熟为人知的主题模型即LDA(Latent Dirichlet Allocation)主题模型,本文所介绍的结构主题模型(Structural Topic Model, STM)由2016年发表在Journal of the American Statistical Association上的论文《A Model of Text for Experimentation in the Social Sciences》提出,是LDA主题模型的一种拓展。
主题模型一般是一种无监督学习方法,旨在通过观测到的文档-词语数据,挖掘其背后所隐含的主题情况,建立文档-主题-词语的链接。本文的第一部分先介绍主题模型的一般思路;第二部分介绍结构主体模型(STM)的生成原理;第三部分介绍结构主题模型的估价方法——变分EM算法(Variational EM algorithm);第四部分将结合实例,介绍如何在R语言中使用结构主题模型进行估计;第五部分将进行总结,并给出模型的可应用场景。
主题模型
在介绍STM模型前,先简单的叙述LDA模型的基本原理。
潜在狄利克雷分配(Latent Dirichlet Allocation, LDA)是一种基于贝叶斯学习的话题模型,于2002年由Blei等发表在Journal of Machine Learning Research 3上的论文《Latent Dirichlet Allocation》中提出。
1.符号说明
2.贝塔分布与狄利克雷分布
3.LDA主题模型的生成过程
(1)生成文档的主题分布:
STM的模型原理
1.STM的提出
在LDA模型中,文档的主题分布是从狄利克雷分布中选取出来的,不同的主题之间不存在相关性,但是实际中,不同的主题之间是存在相关性的。另外,一些文档层级的协变量(例如:作者等),可能对主题的选取、主题下词语的选取有影响。STM模型可以有效地解决上述两个问题。
STM模型由Roberts等发表在Journal of American Statistical Association,Applications and Case Studies上的论文《A Model of Text for Experimentation in the Social Sciences》提出,其配套的R包由Roberts等发表在Journal of Statistical Software上的论文《stm: R Package for Structural Topic Models》提供具体使用方法。
2.STM的生成过程
STM模型的文本集合生成过程如下:
3.STM的模型解读
使用变分EM算法估计STM
展开该后验概率,可得其正比于:
1.变分EM算法的基本逻辑
由于概率函数中有很多隐变量,需要使用EM算法进行估计,但是由于概率函数过于复杂,而且对数正态分布与多项分布是非共轭的,所以使用近似变分EM算法进行估计。
定义右侧为ELBO(Evidence Lower BOund),需要最大化右侧函数最小化KL散度,对相关概率进行积分处理,可得该问题的ELBO为:
2.变分E步
3.M步
通过变分EM算法迭代,逐渐更新相关参数。值得一提的是,这个算法并不是收敛的,所以不同的初始化可能会得到不同的结果,所以合理的初始化方法也非常关键。接下来用R语言来分析STM模型的实例。
R包stm及实例展示
1.stm包实现——数据读入
对于此次所介绍的STM模型,R语言中有一个程序包stm可以系统地实现该模型。以数据集poliblogs2008.csv为例,该数据记录了2008年美国政客所发的博客,其基本情况如下表所示。
表1 数据集poliblogs2008基本情况
各列数据的意义如下:
数据的documents列表示文本的具体内容,表格中仅展示开头几个词语
docname列表示该行数据的名称
rating列表示政客的党派,为二分类变量,conservative为共和党,对应的liberal为民主党
day列表示博客发表的时间,取值从1-366
blog列为博客来源,为六分类变量,有“at”、“db”、“ha”、“mm”、“tp”、“tpm”六类
在该数据中,documents是所关注的文本数据;rating/day/blog三个变量,均可以作为文档协变量引入STM模型之中。
首先,将该数据读入Rstudio中,并使用stm包中的textProcessor()
函数对文档进行预处理工作,代码如下:
data <- read.csv(“R_code/poliblogs2008.csv”, encoding = “UTF-8”)
processed <- textProcessor(data$documents, metadata = data)
textProcessor()
函数对数据的documents列进行文本预处理,包括将所有字母转为小写、移除标点符号、移除停用词、移除数字、词干化等操作。
在完成文本预处理后,需要使用prepDocuments()函数
,建立完整的文档-协变量数据。代码如下:
out <- prepDocuments(processed$documents, processed$vocab, processed$meta, lower.thresh = 1)
processed$documents
表示的是经过预处理以后的文本数据;processed$vocab
表示的是词语构成的集合,集合大小对应模型中的参数;processed$meta
表示的是文档的协变量数据;lower.thresh
是一个参数,出现频率小于等于lower.thresh
的词语将会词语集合中删除。2.stm包实现——模型拟合
在对数据完成预处理后,需要使用STM模型进行估计,模型估计的核心函数为stm()
,代码如下:
poliblogPrevFit2 <- stm(
documents = out$documents,
vocab = out$vocab,
K = 20, # number of topics
prevalence =~ rating + s(day),
content =~ rating,
max.em.its = 15, # a maximum of 15 EM iterations
data = out$meta,
init.type = "Spectral" # Spectral Initialization
)
stm()
函数中,表示主题的数目,这里指定为20;prevalence
指的是主题偏好模型(topic prevalence model)指定的协变量;content
指的是词语偏好模型(topic content model)指定的协变量;由于时间day
是连续变量,故而使用spline
函数将其离散为十类;max.em.its
指的是最大迭代次数;ini.type
指的是初始化方法,这里可以使用谱初始化方法。如果对模型有不同的假设,可以更改prevalence
和content
参数后的变量。3.stm包实现——模型解读
stm包中,有很多可以帮助进行可视化的函数;例如,使用者可以使用labelTopics()
函数查看每个主题的核心词语。直接使用plot()
函数,绘制拟合结果,可以得到各个主题的占比及其主题词如下图所示。
从图中可以看出,某些主题的指向性较为明显,例如主题3主要与税收、经济有关;主题1、主题6、主题13、主题19主要与当年总统竞选活动相关。
同时,由于主题偏好模型与词语偏好模型本质是回归,故而可以通过可视化展现不同主题在不同协变量下的置信区间。下图所示为协变量rating在不同主题下的偏好。图中的三个位置为这三个政治家主要相关的主题。从图中可以看到,Sarah Palin更加倾向于Conservative,说明更多保守党的政客讨论了有关Sarah Palin的主题,事实上Sarah Palin是2008年保守党总统竞选人McCain的竞选伙伴;而民主党派政治家更倾向于讨论Obama相关的主题。值得一提的是,2008年的总统小布什虽然是保守党派的,但是在后期,很多保守党派政客与其政治观点不合,而倾向于民主党。
下图所示为与Sarah Palin相关的主题,随着时间的变化,该主题占比的变化情况,从图中可以看到,该主题的占比在后期出现了显著的增长,这是因为在2008年后半年有关总统竞选的讨论,导致了该主题的增长。
4.其他实例
在实例分析中,还有很多的优秀的示例。本文再介绍若干个原论文提到的STM模型分析结果。例如,作者对于1997年至2006年新闻媒体中有关中国的报道的主题、及其如何发生变化感兴趣,通过获取五个重要新闻媒体(新华社、法新社、美联社、BBC、日本经济新闻)从1997年至2006年有关中国的报道,通过STM模型进行建模分析。通过分析发现,在这一系列报告中,有一个主题与“疫情”相关,该主题在非典爆发及东亚禽流感爆发期间出现明显的突增。下图右侧展示了与该主题最相关的两篇文档,是法新社与新华社有关非典的报道。
下图的横轴与纵轴均代表的是STM模型输出的主题。在0.1显著性水平下,粗黑点表示新华社在对应的两个主题下存在相关性,例如“煤矿、化学药剂”主题与“安全事故”主题在新华社的报道中存在相关性;粗灰点表示BBC在对应的两个主题下存在相关性,例如“朝鲜”主题与“全球挑战”在BBC的报道中存在相关性;细黑点表示两个媒体在对应的两个主题上均存在相关性,例如“伊朗”主题和“朝鲜”主题在两个媒体的报道中均存在相关性。这样的可视化可以有效地观察到不同媒体在报道上的倾向性。
总结
本文主要讲述了STM模型的基本原理及其R语言实现。从实例中,可以看到,STM模型除了拥有LDA模型的功能以外,还能够很好的捕捉文档层级的协变量对主题的影响。
STM模型虽然功能强大,但是其估计的参数较多,比较适用于文本量较为可观的情况,如果样本量较少,可能比较难训练得到比较合理的结果。
参考文献
[1] 李航. 统计学习方法(第2版)[M]. 清华大学出版社, 2019.
[2] Blei D M , Ng A Y , Jordan M I . Latent Dirichlet Allocation[C]// Advances in Neural Information Processing Systems 14 [Neural Information Processing Systems: Natural and Synthetic, NIPS 2001, December 3-8, 2001, Vancouver, British Columbia, Canada]. 2001.
[3] Roberts M E , Stewart B M , Airoldi E M . A model of text for experimentation in the social sciences[J]. Publications of the American Statistical Association, 2016, 111(515):988-1003.
[4] Roberts M , Stewart B , Tingley D . stm: R Package for Structural Topic Models[J]. Journal of statistical software, 2019, 91(2).
- END -