1、“bag-of words”词袋模型
词袋模型是在自然语言处理和信息检索中的一种简单假设。在这种模型中,文本(段落或者文档)被看作是无序的词汇集合,忽略语法甚至是单词的顺序。 词袋模型被用在文本分类的一些方法当中。当传统的贝叶斯分类被应用到文本当中时,贝叶斯中的条件独立性假设导致词袋模型。另外一些文本分类方法如LDA和LSA也使用了这个模型。
2、向量空间模型 VSM
VSM作为向量的标识符(比如索引),是一个用来表示文本文件的代数模型。它应用于信息过滤、信息检索、索引以及关联规则。
文档和问题都用向量来表示。
每一维都相当于是一个独立的词组。如果这个术语出现在了文档中,那它在向量中的值就非零。已经有很多不同的方法来计算这些值,这些值叫做(词组)权重。其中一种广为人知的算法就是tf_idf权重(见下)。 我们是根据应用来定义词组的。典型的词组就是一个单一的词、关键词、或者较长的短语。如果字被选为词组,那么向量的维数就是出现在词汇表中不同字的个数。 向量运算能通过查询来比较各文档。
3、TF--IDF
TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与文本挖掘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜索引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,互联网上的搜寻引擎还会使用基 于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。
在一份给定的文件里,词频(term frequency,TF)指的是某一个给定的词语在该文件中出现的次数。这个数字通常会被正规化,以防止它偏向长的文件。(同一个词语在长文件里可能会 比短文件有更高的词频,而不管该词语重要与否。)对于在某一特定文件里的词语ti来说,它的重要性可表示为:
以上式子中 ni,j 是该词在文件dj中的出现次数,而分母则是在文件dj中所有字词的出现次数之和。
逆向文件频率(inverse document frequency,IDF)是一个词语普遍重要性的度量。某一特定词语的IDF,可以由总文件数目除以包含该词语之文件的数目,再将得到的商取对数得到:
其中
|D|:语料库中的文件总数
: 包含词语ti的文件数目(即的ni 不等于0的文件数目)
然后
某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。
4、奇异值分解SVD
背景:
奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,是矩阵分析中正规矩阵酉对角化的推广。在信号处理、统计学、LSA等领域有重要应用。
为什么要矩阵分解?
①矩阵与向量相乘的结果与特征值,特征向量有关。数值小的特征值对矩阵-向量相乘的结果贡献小,影响小,相应的,数值大的特征值对矩阵-向量相乘的结果贡献大,影响大。
②LSA希望通过降低传统向量空间的维度来去除空间中的“噪音”,而降维可以通过SVD实现,因此首先对Term-Document矩阵进行SVD分解,然后降维并构造语义空间。
如何分解?
假设C是M x N矩阵,U是M x M矩阵,其中U的列为CCT的正交特征向量,V为N x N矩阵,其中V的列为CTC的正交特征向量,再假设r为C矩阵的秩,则存在奇异值分解:
其中是以词项(terms)为行, 文档(documents)为列做一个大矩阵. 设一共有t行d列, 矩阵的元素为词项的TF-IDF值(词频-逆向文件平率,用来评价某一词语在一个大的文档集合中对某一篇具体文献的重要程度)。然后把的r个对角元素的前k个保留(最大的k个保留), 后面最小的r-k个奇异值置0, 得到∑;最后计算一个近似的分解矩阵
则在最小二乘意义下是的最佳逼近。通过在SVD分解近似,我们将原始的向量转化成一个低维隐含语义空间中,起到了特征降维的作用。每个奇异值对应的是每个“语义”维度的权重,将不太重要的权重置为0,只保留最重要的维度信息,去掉一些信息“nosie”,因而可以得到文档的一种更优表示形式。
5、潜在语义分析LSA
潜在语义索引(Latent Semantic Indexing)是S. T.Dumais)等人提出的。其基本思想是文本中的词与词之间存在某种联系,即存在某种潜在的语义结构,因此采用统计的方法来寻找该语义结构,并且用语义结构来表示词和文本。这样的结果可以达到消除词之间的相关性,化简文本向量的目的。潜在语义索引的算法基于矩阵的奇异值分解(SVD分解)。虽然潜在语义分析在信息检索领域取得了令人满意的效果,但是它存在几个缺陷:首先由于潜在语义分析过程奇异值分解的物理意义不够明确,较难控制词义聚类的效果;此外这个算法的空间和时间复杂度太大,在目前的计算机硬件条件下很难实际适应实际应用。
我们可以通过下面一个例子认识LSA:
LSA最初是用在语义检索上,为了解决一词多义和一义多词的问题:
1.一词多义: 美女和PPMM表示相同的含义,但是单纯依靠检索词“美女”来检索文档,很可能丧失掉那些包含“PPMM”的文档。
2.一义多词:如果输入检索词是多个检索词组成的一个小document,例如“清澈 孩子”,那我们就知道这段文字主要想表达concept是和道德相关的,不应该将“春天到了,小河多么的清澈”这样的文本包含在内。
为了能够解决这个问题,需要将词语(term)中的concept提取出来,建立一个词语和概念的关联关系(t-c relationship),这样一个文档就能表示成为概念的向量。这样输入一段检索词之后,就可以先将检索词转换为概念,再通过概念去匹配文档。
6、EM算法
最大期望(EM)算法是在概率模型中寻找参数最大似然估计的算法,它主要用于从不完整的数据中计算最大似然估计。后来经过其他学者的发展,这个算法也被用于聚类等应用。
什么是Incomplete data和complete data?
Zhai老师在一篇经典的EM算法Notes中讲到,当原始数据的似然函数很复杂时,我们通过增加一些隐含变量来增强我们的数据,得到“complete data”,而“complete data”的似然函数更加简单,方便求极大值。于是,原始的数据就成了“incomplete data”。我们将会看到,我们可以通过最大化“complete data”似然函数的期望来最大化"incomplete data"的似然函数,以便得到求似然函数最大值更为简单的计算途径。
EM算法的步骤是:
E步骤:求隐含变量在当前估计的参数条件下的后验概率。
M步骤:最大化Complete data对数似然函数的期望,此时我们使用E步骤里计算的隐含变量的后验概率,得到新的参数值。
两步迭代进行直到收敛。
7、PLSA
尽管基于SVD的LSA取得了一定的成功,但是其缺乏严谨的数理统计基础,而且SVD分解非常耗时。Hofmann提出了基于概率统计的PLSA模型,并且用EM算法学习模型参数。概率潜在语义模型使用统计的方法建立“文档--潜在语义--词”之间概率分布关系,它将文档表示为一个主题集合,文档中每个词作为主题混合中的一个抽样。
PLSA的概率图模型如下
其中D代表文档,Z代表隐含类别或者主题,W为观察到的单词,P(di)表示单词出现在文档的概率,P(zk | di) 表示文档di中出现主题zk下的单词的概率,
P(wj | zk)给定主题zk出现单词wj的概率。并且每个主题在所有词项上服从多项分布,每个文档在所有主题上服从多项分布。整个文档的生成过程是这样的:
(1) 以P(di)的概率选中文档di;
(2) 以P(zk | di)的概率选中主题zk;
(3) 以P(wj | zk)的概率产生一个单词。
根据极大似然估计原则,通过求取如下对数—似然函数的极大值,计算PLSA模型的参数,是某个词在某个文档中出现的次数。
然后采用EM算法,求出各个参数的最优解。
E步:基于当前参数的估计值,计算潜在变量z的后验概率
M步:基于E步所计算出的后验概率,更新参数
交替执行E步和M步,当L期望值的增加量小于一个阈值时停止迭代,此时得到一个最优解。
但是,PLSI模型参数随着训练集中文档数目线性增加,会出现过度拟合现象,并且对于训练集以外的文档,很难分配合适的概率。针对PLSI所存在问题,Blei等在2003年提出了Latent Dirichlet Allocation(LDA)模型。