On-Line LDA: Adaptive Topic Models for Mining Text Streams with Applications to Topic Detection and Tracking 阅读笔记

1.简介

  • 论文题目:On-line LDA: Adaptive Topic Models for Mining Text Streams with Applications to Topic Detection and Tracking
  • 论文出处:Eighth IEEE International Conference on Data Mining
  • 发表时间:12/15/2008

2.Motivation

基于LDA(隐含狄利克雷分布模型),本文提出了一种OLDA(On-Line LDA)模型,解决了利用LDA模型在线工作的问题。该论文提出的方法可以处理实时的流式数据,利用新信息中的信息增量对模型进行动态更新。

同时本文也提出了一种方法,动态监测主题变化,捕获主题随时间的演变

3.Model

OLDA是基于LDA提出的,这里先简述一下LDA的过程。

3.1.LDA

LDA是一个分层的贝叶斯网络,它通过在文档和单词中间定义潜在主题,将单词和文档联系起来。同时,文档和主题分布是独立的。通过分别在文档分布和主题分布上引入Dirichlet先验α和β,可以通过分层采样以及权重更新,就可以获得P(w|d),也就是文档的主题分布。

LDA的概率模型图:

LDA模型影评分析 Python代码 lda模型论文_nlp

LDA主题生成过程:

这里采用论文中的表述过程叙述LDA的过程

LDA模型影评分析 Python代码 lda模型论文_算法_02


其中,K、D分别为主题和文档的总个数。

简述其过程为:

首先从Dirichlet先验β中,采样得到主题下词语的多项式分布LDA模型影评分析 Python代码 lda模型论文_机器学习_03,同时从Dirichlet先验α中,采样得到文档下主题的多项式分布LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_04

两步采样完成后,对于语料库中所有的文档LDA模型影评分析 Python代码 lda模型论文_nlp_05 中所有的单词LDA模型影评分析 Python代码 lda模型论文_人工智能_06做如下操作:

  1. 从主题分布LDA模型影评分析 Python代码 lda模型论文_人工智能_07中采样主题LDA模型影评分析 Python代码 lda模型论文_算法_08
  2. 从词语分布LDA模型影评分析 Python代码 lda模型论文_算法_09中采样词语LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_10

其中,LDA模型影评分析 Python代码 lda模型论文_人工智能_11LDA模型影评分析 Python代码 lda模型论文_机器学习_12通常采用吉布斯采样的方式来估算,而最关键的LDA模型影评分析 Python代码 lda模型论文_机器学习_13则通过蒙特卡洛算法进行近似。求解将当前单词标记给主题其迭代式如下:

LDA模型影评分析 Python代码 lda模型论文_nlp_14

其中LDA模型影评分析 Python代码 lda模型论文_人工智能_15为单词LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_16被标记为主题LDA模型影评分析 Python代码 lda模型论文_机器学习_17的次数,不包括当前词LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_18LDA模型影评分析 Python代码 lda模型论文_机器学习_19表示主题LDA模型影评分析 Python代码 lda模型论文_机器学习_17被标记为单词LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_16的次数,不包括当前文档LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_18。从这样的分布中,抽取一个主题并存储为一个单词Token新的topic assigment。在重复足够多次的采样和迭代以后,我们可以通过检查LDA模型影评分析 Python代码 lda模型论文_算法_23以及LDA模型影评分析 Python代码 lda模型论文_nlp_24来使用近似后验估计得到LDA模型影评分析 Python代码 lda模型论文_人工智能_11LDA模型影评分析 Python代码 lda模型论文_机器学习_12

3.2.OLDA的生成过程与近似推断

OLDA的推断过程与LDA总体类似类似,其引入了一些新的变量来描述其Online的工作流程:

符号

含义

时间片大小,取决于语料库

针对接受到的数据流生成的时间滑动窗口

简化矩阵,其列为单词的主题分布

文档流

流中的最新文档

时间t内接受到文档的词向量

LDA模型影评分析 Python代码 lda模型论文_算法_34

LDA模型影评分析 Python代码 lda模型论文_算法_34的权重向量,其元素和为1

OLDA的问题,有如下几个特征:

  • 动态更新的文档流LDA模型影评分析 Python代码 lda模型论文_算法_34会带来新单词LDA模型影评分析 Python代码 lda模型论文_nlp_37,也有可能带来新的主题LDA模型影评分析 Python代码 lda模型论文_机器学习_38
  • 动态更新的过程中,狄利克雷先验β应该是变化的,因为传入的词语会改变

因此对于改变的β,这里引入的计算方法是,通过简化矩阵LDA模型影评分析 Python代码 lda模型论文_人工智能_39以及更新权重LDA模型影评分析 Python代码 lda模型论文_算法_40来实时计算更新窗口的LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_41

下面是OLDA的算法过程:

LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_42


其中,LDA模型影评分析 Python代码 lda模型论文_机器学习_43就是更新动态 LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_41的过程。我们可以看到,其主要变化就在这里,也因此该过程的模型先验仍然是狄利克雷分布,换言之其过程的分布仍然是共轭的,可以简化推导的过程。在OLDA的推断过程中,通过LDA模型影评分析 Python代码 lda模型论文_人工智能_39来存储先前时间区间读入的文档的分布信息,然后根据读入的新主题,更新LDA模型影评分析 Python代码 lda模型论文_人工智能_39中的元素值,达到动态更新的目的。

3.3.新主题的发现与追踪

在主题建模的过程中,主题被建模为单词空间上的概率向量,因此我们可以使用KL散度来描述主题与主题之间的相似性。因此我们就可以在数学上量化主题之间的差异。

对于当前时间区间的主题,无非有两种结果,一是判断其与先前主题为同一类主题,二是判断其为一新主题,并加入先前的主体集合。OLDA的主题发现的实现逻辑基本与此类似。这里定义了一个LDA模型影评分析 Python代码 lda模型论文_机器学习_47的矩阵LDA模型影评分析 Python代码 lda模型论文_人工智能_48,其每一项条目LDA模型影评分析 Python代码 lda模型论文_机器学习_49是在时间LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_50LDA模型影评分析 Python代码 lda模型论文_机器学习_51之间主题k分布的KL散度(这里取的是对称的LDA模型影评分析 Python代码 lda模型论文_机器学习_52),然后定义一置信度LDA模型影评分析 Python代码 lda模型论文_nlp_53,定义LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_54为百分位数。然后根据当前主题的KL散度,分别和当前的K个主题的分位数(LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_54)以及历史所有的主题距离(LDA模型影评分析 Python代码 lda模型论文_机器学习_56)对比,如果大于分位数,则标记该主题为出现,否则它就是旧的主题。

主题发现流程如下:

LDA模型影评分析 Python代码 lda模型论文_nlp_57

3.4.OLDA模型总览

直接放图,论文介绍如下

LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_58


该讲的前文也讲的差不多了,下面简述一下过程,其整体是定义在所有的输入流上的。

首先初始化LDA模型影评分析 Python代码 lda模型论文_机器学习_59,然后对输入流做循环,当初次进入循环时,话题下词语分布LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_60为初始值,然后在后续循环过程中,采用LDA模型影评分析 Python代码 lda模型论文_机器学习_43对其进行更新。接着得到先验分布LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_62和输入流中的文档LDA模型影评分析 Python代码 lda模型论文_nlp_05

在此基础上,初始化LDA模型影评分析 Python代码 lda模型论文_算法_64LDA模型影评分析 Python代码 lda模型论文_机器学习_65并利用吉布斯采样近似得到LDA模型影评分析 Python代码 lda模型论文_算法_66然后利用更新完毕的主题分布LDA模型影评分析 Python代码 lda模型论文_算法_64LDA模型影评分析 Python代码 lda模型论文_机器学习_68做并集,更新LDA模型影评分析 Python代码 lda模型论文_机器学习_68中的主题。然后重复以上的过程,直到全部的流结束。

然后将探测到的新的主题,复制给LDA模型影评分析 Python代码 lda模型论文_LDA模型影评分析 Python代码_70存储,其对应的就是截止到时间t的话题数目。