什么是话题分析?话题分析的基本思想是用单词的分布表示话题,用话题的分布表示文本。
- 具体而言,话题分析方法可以自动地从文本数据中学习话题的单词分布和文本的话题分布,发现潜在的话题,以表示文本的内容,从而对文本的内容进行分析。
- 话题分析模型可分为概率模型和非概率模型。其中,非概率模型的代表是潜在语义分析(LSA),而概率模型的代表是潜在语义分析(PLSA)和潜在狄利克雷分配(LDA)。
注:话题分析模型也属于自然语言处理中的统计模型,不过与n-gram,HMM代表的序列模型处理的任务有所区别。
潜在语义分析
- 潜在语义分析(Latent Semantic Analysis,LSA)最早由Deerwester等人于1990年正式提出,最初用于信息检索,因此也被称作潜在语义索引(Latent Semantic Indexing,LSI)。
- LSA的核心在于将文本集合表示为单词-文本矩阵,并对矩阵进行因子分解,从而得到话题向量空间,以及文本在话题向量空间的表示。
单词向量空间
文本信息处理的一个核心问题是如何对文本的语义内容进行量化,并进行文本之间的语义相似度计算。
- 一个简单的思路是构建单词向量空间:将文本集合的每一段文本用一个向量表示,向量的每一维对应一个单词,其数值为单词出现的频次。此时文本之间的语义相似度使用向量内积或余弦相似度衡量。
- 下面是符号定义:记文本集合D={d1,d2,⋯,dn},所有单词的集合W={w1,⋯,wm},那么单词在文本中出现的数据用一个单词-文本矩阵X表示:
X=x11x21⋮xm1x12x22⋮xm2⋯⋯⋮⋯x1nx2n⋮xmn
其中元素xij表示单词wi在文本dj中出现的频数或权值。可以预见的是,这个矩阵是一个稀疏矩阵。
- 如果使用权值,则一般会采用单词频率-逆文本频率(TF-IDF),其表达式为
TF-IDFij=tfjtfijlogdfidf,i=1,2,⋯,m,j=1,2,⋯,n
其中tfij是单词wi出现在文本dj中的频数,tfj是文本dj的总词数,dfi是含有单词wi的文本数,df是文本集合D的全部文本数(即上面的n)。
- TF-IDF综合度量了单词在文本中的出现频率和单词在文本集合分布的集中程度,其值越高表明该词越能反映文章的信息。
- 由单词-文本矩阵构建的单词向量空间中,文本可用列向量xj=x1j⋮xmj表示,而文本di与dj之间的相似度可用xi⋅xj或∥xi∥∥xj∥xi⋅xj表示。
- 直观上,在两个文本中共同出现的单词越多,其语义内容就越相近,相似度越高。这在一定程度上能够满足应用的需求,至今仍在文本信息检索、文本数据挖掘等领域被广泛使用,可以认为是文本信息处理的一个基本原理。
- 单词向量空间模型的优点是模型简单,计算效率高。然而它也有一定的局限性:因为自然语言存在有一词多义性及多词一义性,所以内积相似度未必能够准确表达两个文本的语义相似度。
话题向量空间
- 对于上述单词的一词多义性与多词一义性的问题,我们引入了“话题”这一概念。话题可以由若干个语义相关的单词表示,同义词可以表示同一个话题,而多义词可以表示不同的话题。
- 于是,类似单词向量空间,我们也可以构建话题向量空间:用话题空间的一个向量表示该文本,该向量的每一分量对应一个话题,其数值为该话题在该文本中出现的权值。话题向量空间的维度往往远低于单词向量空间。
- 具体符号定义如下:文本、单词集合与单词-文本矩阵符号定义同上。设文本总共包含k个话题,每个话题由一个定义在W上的m维向量表示:
tl=t1l⋮tml,l=1,2,⋯,k
其中til代表单词wi在话题tl的权值,权值越大,该单词在该话题中的重要度就越高。此时t1,⋯,tk就构成了一个k维话题向量空间,记作T。
- T=[t1,⋯,tk]也被称为单词-话题矩阵,可看作X的一个子空间。
- 下面将文本向量xj投影到话题向量空间中,得到投影向量
yj=y1j⋮ykj,j=1,2,⋯,n
其中ylj是文本dj中话题tl的权值,权值越大,该话题在该文本中的重要度就越高。
- 此时Y=[y1,⋯,yn]也被称为话题-文本矩阵。
- 在定义好X,T和Y三个矩阵后,我们就来探究它们之间的关系:由于文本向量在话题向量空间可近似表示为
xj≈i=1∑kyijtk=Tyj
因此可以得到X≈TY。这便是潜在语义分析的核心模型。
LSA算法
- 由上述分析可知,LSA算法的关键在于如何将矩阵X分解为话题向量与文本在话题向量空间的表示。这里就需要用到奇异值分解与低秩近似的知识(可参见CS 127笔记)。
- 矩阵X的截断奇异值分解如下:
X≈UkΣkVk⊤=[u1u2⋯uk]σ1σ2⋱σkv1⊤v2⊤⋮vk⊤
其中k≤n≤m,σ1,⋯,σk为矩阵前k个最大奇异值,ui为m维列向量,vj为n维列向量。
- 经过分解后,做奇异向量组Uk即构成话题向量空间,而文本dj的近似表达式
xj≈Uk(ΣkVk⊤)j=[u1u2⋯uk]σ1vj1σ2vj2⋮σkvjk=l=1∑kσlvjlul,j=1,2,⋯,n
这说明(ΣkVk⊤)j可看作dj在话题向量空间的表示。因此ΣkVk⊤可看作文本集合在话题空间的表示。
非负矩阵分解(NMF)
-
注意到上述LSA算法中得到的话题空间向量与文本话题空间表示的元素都可能为负,这会导致得到的主题难以直接解释。对此,我们考虑将元素限制为非负,这样元素就可以被解释为权重,从而增强模型结果的可读性。
-
下面给出符号定义:对于m×n的非负单词-文本矩阵X,将其分解为非负矩阵U∈Rm×k和V∈Rk×n,使得X≈UV。
- 通过上述分解,得到U为话题向量空间,而V为文本向量在话题向量空间的表示。【可理解为话题向量的线性叠加】
-
为了让非负矩阵分解尽量逼近原始矩阵,我们考虑将其转化为最优化问题,具体形式有以下两种:
- 平方损失:
U,Vmins.t.∥X−UV∥2U,V⩾0
其中∥A−B∥2=i,j∑(aij−bij)2。
- 散度损失:
U,Vmins.t.D(X∥UV)U,V⩾0
其中D(A∥B)=i,j∑(aijlogbijaij−aij+bij)。【广义散度,当i,j∑aij=bij=1时退化为KL散度】
-
那么如何求解这个最优化问题?直接使用梯度下降效率较低,一个较好的方法是采用下述乘法更新规则:
- 对平方损失∥X−UV⊤∥2中参数作如下处理:
VijUil←Vij(U⊤UV)ij(U⊤X)ij←Uil(UVV⊤)il(XV⊤)il
- 对散度损失 D(X∥UV)中参数作如下处理:
VijUil←Viji∑Uili∑[(UV)ijUilXij]←Uilj∑Vijj∑[(UV)ijUljXij]
则对应损失函数不增加,当且仅当U和V是对应损失函数的稳定点时函数的更新不变。
补充
对上述更新表达式的简单推导如下(详细推导可参见Lee & Seung 论文或知乎):
- 平方损失函数的梯度:
∂Uil∂∥X−UV∥2∂Vlj∂∥X−UV∥2=−j∑[Xij−(UV)ij]Vlj=−[(XV⊤)il−(UVV⊤)il],=−[(U⊤X)lj−(U⊤UV)lj].
于是又梯度下降法的更新规则得到
UilVlj=Uil+λil[(XV⊤)il−(UVV⊤)il]=Vlj+μlj[(U⊤X)lj−(U⊤UV)lj]
其中λil,μlj为步长,若取
λil=(UVV⊤)ilUil,μlj=(U⊤UV)ljVlj
即得平方损失函数的乘法更新规则。
- 散度损失函数的梯度:
∂Uil∂D(X∥UV)∂Vlj∂D(X∥UV)=j∑Vlj−j∑(UV)ijXijVlj=j∑Vlj[1−(UV)ijXij],=i∑Uil−i∑(UV)ijXijUil=i∑Uil[1−(UV)ijXij].
于是由梯度下降法的更新规则得到
UilVlj=Uil−λilj∑Vlj[1−(UV)ijXij],=Vlj−μlji∑Uil[1−(UV)ijXij],
λil,μlj同上,若取
λil=j∑VljUil,μlj=i∑UilVlj,
即得散度损失函数的乘法更新规则。
选取初始矩阵U和V为非负矩阵,可以保证迭代过程及结果的矩阵U和V均为非负。
- 另外,每次迭代后都需要对U的列向量归一化,使其基向量为单位向量。
概率潜在语义分析
- 概率潜在语义分析(Probabilistic Latent Semantic Analysis, PLSA)由Thomas Hofmann于1999年提出,使用概率生成模型对文本进行话题分析。整个模型表示文本生成话题,话题生成单词,从而得到文本-单词共现数据的过程。
- 具体而言,文本-单词共现数据基于如下的概率模型产生:首先有话题的概率分布,然后有话题给定条件下文本的条件概率分布,以及话题给定条件下单词的条件概率分布。概率潜在语义分析就是发现由隐变量表示的话题,即潜在语义。
生成模型
-
单词集合W与文本集合D定义同上,另设话题集合Z={z1,⋯,zk}。取w∈W,d∈D,z∈Z,则可以定义如下概率:
- P(d):生成文本d的概率;
- P(z∣d):文本d生成话题z的概率;
- P(w∣z):话题z生成单词w的概率。
由此得到文本-单词共现数据的生成过程:
- 先根据P(d)分布生成n个文本;
- 对于每个文本,根据P(z∣d)生成l个话题(l为文本长度,这里假定每个文本长度都相同);
- 对于每个话题,根据P(w∣z)随机选取一个单词w。
由此得到(w,z,d)三元集合,其中w和d为观测变量,z为隐变量。观测数据形式为单词-文本矩阵,元素为(w,d)同时出现的次数。
-
文本-单词共现数据D的生成概率可由D中所有(w,d)组合出现概率的乘积表示:
P(D)=(w,d)∏P(w,d)f(w,d)
其中f(w,d)表示(w,d)的出现次数(总次数为l×n)。每个(w,d)出现的概率计算公式如下:
P(w,d)=P(d)P(w∣d)=P(d)z∑P(w,z∣d)=P(d)z∑P(z∣d)P(w∣z)
其中最后一个等号使用了生成模型的一个假设:在话题z给定的条件下,单词w与文本d条件独立。
-
生成模型的概率有向图形式如下:
共现模型
- 共现模型在共现数据D出现概率形式上与生成模型完全相同,唯一的区别在于(w,d)出现概率的表达式:
P(w,d)=z∈Z∑P(z)P(w∣z)P(d∣z)
其同样利用了上述生成模型的假设。
- 共现模型对应的概率有向图形式如下:

- 生成模型刻画文本-单词共现数据生成的过程,共现模型描述文本-单词共现数据拥有的模式。前者属于非对称模型,而后者属于对称模型。
PLSA的性质
- 由上述概率模型表达式可知,PLSA将原本表示P(w,d)需要的参数量O(mn)降到了表示P(w∣z)和P(d∣z)的参数量O((m+n)k)(k≪min{m,n}),由此减少了学习过程中过拟合的可能性。
- 另一方面,PLSA的共现模型也可以用LSA的矩阵分解形式表示:
X′=U′Σ′V′⊤⟹⎩⎨⎧X′U′Σ′V′=[P(w,d)]m×n=[P(w∣z)]m×k=[P(z)]k×k=[P(d∣z)]n×k
注意这里U′和V′天然满足非负性与归一化性质。实际上,PLSA与使用散度损失的NMF基本等价。
优化算法
概率潜在语义分析模型是含有隐变量的模型,其学习通常使用EM算法。关于EM算法的详细理论会在之后介绍,这里只给出核心推导(以生成模型为例):
- 以P(D)作为似然函数,那么其对数似然函数为
L=i=1∑mj=1∑nf(wi,dj)logP(wi,dj)=i=1∑mj=1∑nf(wi,dj)log[l=1∑kP(wi∣zl)P(zl∣dj)]
对D加入隐变量z,再对z求期望得到Q函数:
Q=l=1∑k{j=1∑nf(dj)[logP(dj)+i=1∑mf(dj)f(wi,dj)log(P(wi∣zl)P(zl∣dj))]P(zl∣wi,dj)}
其中f(dj)=i=1∑mf(wi,dj)。
- 下面对P(wi∣zl)和P(zl∣dj)进行参数估计:
- E步:由于P(dj)=j′=1∑nf(dj′)f(dj)可直接由数据估计得到,故可对Q函数进行简化:
Q′=i=1∑mj=1∑nf(wi,dj)l=1∑kP(zl∣wi,dj)log[P(wi∣zl)P(zl∣dj)]
其中P(zl∣wi,dj)为上一轮估计参数通过贝叶斯公式得到的后验概率:
P(zl∣wi,dj)=l′=1∑kP(wi∣zl′)P(zl′∣dj)P(wi∣zl)P(zl∣dj)
- M步:由于参数P(wi∣zl)和P(zl∣dj)有如下约束:
i=1∑mP(wi∣zl)=1,l=1,2,⋯,kl=1∑kP(zl∣dj)=1,j=1,2,⋯,n
使用拉格朗日法(具体略)对Q’函数求条件极值,得到参数估计表达式:
P(wi∣zl)P(zl∣dj)=i′=1∑mj=1∑nf(wi′,dj)P(zl∣wi′,dj)j=1∑nf(wi,dj)P(zl∣wi,dj)=f(dj)i=1∑mf(wi,dj)P(zl∣wi,dj)
共现模型推导
最后给出共现模型的EM算法迭代表达式,具体推导留给读者:
- E步:
P(zl∣wi,dj)=l′=1∑kP(zl′)P(wi∣zl′)P(dj∣zl′)P(zl)P(wi∣zl)P(dj∣zl)
- M步:
P(wi∣zl)P(dj∣zl)P(zl)=i′=1∑mj=1∑nf(wi′,dj)P(zl∣wi′,dj)j=1∑nf(wi,dj)P(zl∣wi,dj)=i=1∑mj′=1∑nf(wi,dj′)P(zl∣wi,dj′)i=1∑mf(wi,dj)P(zl∣wi,dj)=i=1∑mj=1∑nf(wi,dj)i=1∑mj=1∑nf(wi,dj)P(zl∣wi,dj)