文本建模的目的是用非常简洁的数学化形式去描述一个语料库中的文本,同时提供文本间、主题间、词语间的统计关系去服务于后续的文本处理工作,比如文本分类、新颖性检测、文本摘要提取、文本相似度测量等。
TF-IDF文本模型
是早期文本模型的代表之一,于1983年提出,是基于信息论中著名的TF-IDF公式来对文本进行建模的。TF-IDF公式的计算是对两个部分进行乘积,第一个部分称为词频部分(即TF部分),用来表示文本中某个词在该文本中出现的频率,计算上是用该词在该文本中出现的次数除以该文本包含的词的个数;第二个部分称为逆文本部分(即IDF部分),用来表示在语料库中有多少篇文本包含了这个词,计算上是用总文本数除于含该词的文本数再取对数,两个部分的计算公式以及总的计算公式如下(i代表词语,j代表文本,(i,j)代表第j个文本的第i个词):
TF-IDF文本模型总的来说比较简单易懂,对语料库中的文本有着很好的规范化处理,但是它并没有将原有的文本信息压缩了很多,而且单纯地统计词频也没有很好地挖掘词语间、文本间的信息。基于TF-IDF文本模型的缺点,1990年,研究人员提出了LSI文本模型。
LSI文本模型
试图将ti-idf的建模矩阵进行奇异值分解,而且是带压缩的分解,分解图示如下:
其中r代表了主题的个数,第一个子矩阵代表了词与主题的关系,第二个子矩阵代表了主题本身,第三个子矩阵代表了主题与文档之间的关系。通过这种分解,可以大幅度压缩目标语料库,舍弃无关的信息。同时,LSI的作者也认为LSI模型除了在空间压缩上表现优良外,也可以更好地发掘出同义词以及多义词(可能是通过计算词与词之间坐标的欧几里德距离或者是两个词向量的余弦相似度,这里没有太多探究)。
鉴于矩阵分解的不可解释性,许多研究人员在LSI提出后试图建立其概率图模型的形式,为其提供一个概率形式的解释。Hofmann于1999年提出了
pLSI文本模型
,是在这方面研究中取得的一个显著的学术成果。接下来,本文将从
概率图模型
的角度以及介绍unigram、mixture of unigrams、pLSI三个概率文本模型。
Unigram文本模型
中,文档中的每个词都是从一个单独的多项分布中独立采样而得的,是概率文本模型中最简单的情形,其概率模型图如下所示:
这里我们可以看到,在pLSI中,词语和文档向量都是观测变量,主题的生成取决于文档里面有什么词语。也就是说,在训练这个文本模型的时候,模型里面的主题词只能来自于训练集中的文档,用到测试集的时候可能提取到的主题都是有范围的了,即只能提取出在训练集文档中出现过的词语。所以从这点来看,pLSI文本模型并不是一个泛化能力很好的模型,对于一个里面大部分词都没在训练集文档中出现过的“未知”文档,它会显得很无能为力。pLSI另一个很严重的问题是,由于产生的主题由训练集中文档的信息来决定,所以随着训练集中文档数目的增长,所需要训练的参数也就跟着线性增长,而在机器学习的算法中,参数过多意味着会发生过拟合,这是一个严重的问题。
在正式开始介绍LDA的建模内容前,我们先了解一下什么是文本模型的可交换性。目前,大多数文本模型都基于“bag-of-words”的假设,即
(1)
一篇文档内N个词之间的顺序可以随意互换,不影响建模过程;
(2)
一个语料库内M个文档可以随意互换顺序,哪个文档在前哪个文档在后都无所谓。这两个性质合称为文本模型的可交换性,这一点在德芬涅定理(de Finetti theorem)里面有着更加详细的阐述,本文不再详细展开叙述。
但是需要注意的是,虽然有着文档与文档、一篇文档内词与词之间的可互换性,但是不能跨文档换词,即将文档A中的第a个词与文档B中的第b个词互换,这个不在假设范围之内。
LDA的提出,一方面是受到德菲涅定理的启发,试图将文档间、文档的词语间的可交换性完全发挥出来,在之后介绍的LDA模型中,我们会看到,LDA文本模型将文档的选取、主题的选取、词语的选取都定义为概率生成过程,与上述两个性质相契合;另一方面则是试图去除pLSI的缺陷,让每个单词不再属于单一的一个主题,而主题的种类也不再局限于训练集中文档词语的种类。
## topic term beta
## 1 1 aaron 1.69e-12
## 2 2 aaron 3.90e- 5
## 3 1 abandon 2.65e- 5
## 4 2 abandon 3.99e- 5
## 5 1 abandoned 1.39e- 4
## 6 2 abandoned 5.88e- 5
## 7 1 abandoning 2.45e-33
## 8 2 abandoning 2.34e- 5
## 9 1 abbott 2.13e- 6
## 10 2 abbott 2.97e- 5
## # ... with 20,936 more rows
## term topic1 topic2 log_ratio
## 1 administration 0.000431 0.00138 1.68
## 2 ago 0.00107 0.000842 -0.339
## 3 agreement 0.000671 0.00104 0.630
## 4 aid 0.0000476 0.00105 4.46
## 5 air 0.00214 0.000297 -2.85
## 6 american 0.00203 0.00168 -0.270
## 7 analysts 0.00109 0.000000578 -10.9
## 8 area 0.00137 0.000231 -2.57
## 9 army 0.000262 0.00105 2.00
## 10 asked 0.000189 0.00156 3.05
## # ... with 188 more rows
#> 1 6 noriega 16
#> 2 6 panama 12
#> 3 6 jackson 6
#> 4 6 powell 6
#> 5 6 administration 5
#> 6 6 economic 5
#> 7 6 general 5
#> 8 6 i 5
#> 9 6 panamanian 5
#> 10 6 american 4
#> # … with 277 more rows
根据最常见的词汇,可以看出该算法将其分组到主题2(作为政治/国家新闻)是正确的。