关于LSA(Latent Semantic Analysis)主题模型的个人理解
2015-07-01 11:43
375 查看
LSA是1988年S.T. Dumais等提出的一种新的信息检索模型,它使用统计计算的方法对大量的文本集进行分析,提取出词与词之间潜在的语义结构,并用这种潜在的语义结构表示词和文本,达到消除词之间的相关性和简化文本向量实现降维的目的。
使用LSA可以部分解决一义多词(北京大学vs北大、电影vsmovie),但它是怎么解决一义多词的呢?LSA把高维向量空间模型表示中的文档映射到低维潜在语义空间中,在潜在语义空间计算相似性,这个映射通过对词项-文档矩阵SVD分解来实现。
LSA的基础是:向量空间模型 + 矩阵,介绍LSA之前先简单介绍下向量空间模型和矩阵的相关知识。
N篇文档组成的集合可以表示称为一个M*N 的矩阵,称作词项-文档矩阵,的行对应词项,列对应文档。具体如下:
在向量空间模型,通过计算向量间的相似度来衡量两个文档之间的相关性,常用的相似度计算方法为余弦相似度、欧氏距离、杰卡德相似系数、皮尔逊系数等。本文采用余玄相似度,计算公式如下:
如果我们想计算d2和d3的相似度,根据上面公式可得出:
直观上计算出的相似度为0,是否合理呢?答案是不合理,因为ship和boat是近义词(一义多词)。之所以相似度为0,是因为在向量空间计算相似度时都是”词的逐字严格匹配“,而这种“严格匹配”忽视了一义多词,这就是引入LSA的根本原因。
正交向量::若两个向量的內积为0,则称这两个向量是正交的
矩阵的秩:矩阵中线性无关的行(列)的数目,有:矩阵的秩 <=min(M,N),M、N分别表示矩阵的行和列。
特征值和特征向量:令T为M × M的矩阵,T为M维非0向量,若有:Tx = kx,则称k是方阵T的特征值,x称作方阵T的特征向量。
令S是实对称矩阵,则其所有特征值均为实数,且不同特征值所对应的特征向量是正交的
矩阵对角化定理: 若S是M × M的实值方阵且拥有M个线性无关的特征向量,则S可分解为:
其中,U的列是S的特征向量,Λ是对角矩阵,其对角线上的元素是S的特征值,且按照对角线降序排列
若特征值均不相同,则这样的分解是唯一的。
对称对角化定理: 若S是M × M的实值对称方阵,且拥有M个线性无关的特征向量,则S可分解为:
其中,Q的列是S的互相正交且归一化的特征向量,Λ是对角矩阵,其对角线上的元素是S的特征值,且按照对角线降序排列。例如:
回到上面的词项-文档矩阵C,显然C不一定是对称矩阵,但
一定是对称矩阵。
是词项相似度,元素含义是两个词项在文档中共同出现的次数。
是文档相似性,元素含义是两个文档共同词项的个数。因此这两个矩阵是可以分解的(对称对角化定理)。
奇异值分解定理 : 若M × N的矩阵C的秩是r,那么可对C进行如下的奇异值分解(SVD):
SVD的图示如下:
上面是M>N,下面是N>M。
学习nlp和ml可能最烦的就是一大堆数学知识,讲了这么多矩阵知识,但是不要烦,因为这些知识都是LSA会用到的,如果想真正理解LSA这些知识是必须的。下面在介绍最后一点相关数学知识——低秩逼近。
SVD可以用来低秩逼近,具体如下:
如果不理解上面介绍,参见下面图示:
LSA的核心在于将秩r的词项-文档矩阵C进行SVD分解,并寻求词项-文档矩阵的k秩逼近Ck,其中k<=r。维数k 为隐含在文档集合中的话题数量,因此LSA可以被视作一种话题模型。在进行潜在语义分析之前,文档被隐含表示成r维空间中的向量,而在潜在语义分析之后,文档被表示为k维空间中的向量。最终潜在语义空间中,向量的维数缩减为k,这个k值不是随便赋值的也不是计算出来的,而是一个经验值。k的值选择的好效果很好,如果k选值不好会对结果影响很大。
对词项-文档矩阵C进行潜在语义分析:
首先SVD分解,得到的词项矩阵如下:
然后可以分析下几个词,分析词的目的是确定主题数目,因为k就是主题数目。通过分析可以发现ship、boat、ocean很可能是一个主题,而wood和tree很可能是一个主题。所以包含的主题数目为2,k = 2。
然后k秩逼近
2维秩逼近后得到在2维话题空间的词项-文档矩阵
不在原始向量空间计算相似度,而是在潜在语义空间计算相似度:
这也验证了本文前面在原始空间计算相似度为0是不合理的。
LSA的缺点:
Ck逼近后的矩阵中元素缺乏直观解释(维度降低的必然结果),甚至矩阵中会出现很多元素为负数的情况,特征向量的方向没有对应的物理解释
k的选取会对结果产生太大影响,且k不是计算出来的而是一个经验值,所以很难选出合理的k值
LSA不是一个统计模型,缺乏统计基础,没有刻画词出现次数的概率模型
SVD计算复杂度高,且当有新的文档时需要重新SVD分解和重新低秩逼近,更甚至k的取值会变化(多加入文档后可能主题数目发生变化)
转载请注明出处,否则责任自负,谢谢合作
使用LSA可以部分解决一义多词(北京大学vs北大、电影vsmovie),但它是怎么解决一义多词的呢?LSA把高维向量空间模型表示中的文档映射到低维潜在语义空间中,在潜在语义空间计算相似性,这个映射通过对词项-文档矩阵SVD分解来实现。
LSA的基础是:向量空间模型 + 矩阵,介绍LSA之前先简单介绍下向量空间模型和矩阵的相关知识。
1.向量空间
在向量空间模型中,一篇文档可以表示为一个向量,其中每个分量对应一个词项,分量的值是词项在文档中出现的频率或者其它改进后的词项权值。N篇文档组成的集合可以表示称为一个M*N 的矩阵,称作词项-文档矩阵,的行对应词项,列对应文档。具体如下:
在向量空间模型,通过计算向量间的相似度来衡量两个文档之间的相关性,常用的相似度计算方法为余弦相似度、欧氏距离、杰卡德相似系数、皮尔逊系数等。本文采用余玄相似度,计算公式如下:
如果我们想计算d2和d3的相似度,根据上面公式可得出:
直观上计算出的相似度为0,是否合理呢?答案是不合理,因为ship和boat是近义词(一义多词)。之所以相似度为0,是因为在向量空间计算相似度时都是”词的逐字严格匹配“,而这种“严格匹配”忽视了一义多词,这就是引入LSA的根本原因。
2.相关矩阵知识
线性相关、线性无关:若n个向量是线性相关的,则其中的向量可以写成其它向量的线性组合。如果是线性无关的,则其中的向量不能写成其他向量的线性组合。正交向量::若两个向量的內积为0,则称这两个向量是正交的
矩阵的秩:矩阵中线性无关的行(列)的数目,有:矩阵的秩 <=min(M,N),M、N分别表示矩阵的行和列。
特征值和特征向量:令T为M × M的矩阵,T为M维非0向量,若有:Tx = kx,则称k是方阵T的特征值,x称作方阵T的特征向量。
令S是实对称矩阵,则其所有特征值均为实数,且不同特征值所对应的特征向量是正交的
矩阵对角化定理: 若S是M × M的实值方阵且拥有M个线性无关的特征向量,则S可分解为:
其中,U的列是S的特征向量,Λ是对角矩阵,其对角线上的元素是S的特征值,且按照对角线降序排列
若特征值均不相同,则这样的分解是唯一的。
对称对角化定理: 若S是M × M的实值对称方阵,且拥有M个线性无关的特征向量,则S可分解为:
其中,Q的列是S的互相正交且归一化的特征向量,Λ是对角矩阵,其对角线上的元素是S的特征值,且按照对角线降序排列。例如:
回到上面的词项-文档矩阵C,显然C不一定是对称矩阵,但
一定是对称矩阵。
是词项相似度,元素含义是两个词项在文档中共同出现的次数。
是文档相似性,元素含义是两个文档共同词项的个数。因此这两个矩阵是可以分解的(对称对角化定理)。
奇异值分解定理 : 若M × N的矩阵C的秩是r,那么可对C进行如下的奇异值分解(SVD):
SVD的图示如下:
上面是M>N,下面是N>M。
学习nlp和ml可能最烦的就是一大堆数学知识,讲了这么多矩阵知识,但是不要烦,因为这些知识都是LSA会用到的,如果想真正理解LSA这些知识是必须的。下面在介绍最后一点相关数学知识——低秩逼近。
SVD可以用来低秩逼近,具体如下:
如果不理解上面介绍,参见下面图示:
3.LSA
讲了那么多铺垫,现在总算到LSA了,是不是很兴奋!LSA的核心在于将秩r的词项-文档矩阵C进行SVD分解,并寻求词项-文档矩阵的k秩逼近Ck,其中k<=r。维数k 为隐含在文档集合中的话题数量,因此LSA可以被视作一种话题模型。在进行潜在语义分析之前,文档被隐含表示成r维空间中的向量,而在潜在语义分析之后,文档被表示为k维空间中的向量。最终潜在语义空间中,向量的维数缩减为k,这个k值不是随便赋值的也不是计算出来的,而是一个经验值。k的值选择的好效果很好,如果k选值不好会对结果影响很大。
对词项-文档矩阵C进行潜在语义分析:
首先SVD分解,得到的词项矩阵如下:
C | d1 | d2 | d3 | d4 | d5 | |
ship | -0.44 | -0.30 | 0.57 | 0.58 | 0.25 | |
boat | -0.13 | -0.33 | -0.59 | 0.00 | 0.73 | |
ocean | -0.48 | -0.51 | -0.37 | 0.00 | -0.61 | |
wood | -0.70 | 0.35 | 0.15 | -0.58 | 0.16 | |
tree | -0.26 | 0.65 | -0.41 | 0.58 | -0.09 |
然后k秩逼近
2维秩逼近后得到在2维话题空间的词项-文档矩阵
不在原始向量空间计算相似度,而是在潜在语义空间计算相似度:
这也验证了本文前面在原始空间计算相似度为0是不合理的。
4.总结
LSA通过SVD和低秩逼近,把原始向量空间映射到潜在语义空间,在潜在语义空间计算文档相似性,它能够解决部分一义多词的问题。从这个层面来讲,LSA优点很明显,此外降维可去除部分噪声,使得特征更具有鲁棒性。但是LSA也是有缺点的:LSA的缺点:
Ck逼近后的矩阵中元素缺乏直观解释(维度降低的必然结果),甚至矩阵中会出现很多元素为负数的情况,特征向量的方向没有对应的物理解释
k的选取会对结果产生太大影响,且k不是计算出来的而是一个经验值,所以很难选出合理的k值
LSA不是一个统计模型,缺乏统计基础,没有刻画词出现次数的概率模型
SVD计算复杂度高,且当有新的文档时需要重新SVD分解和重新低秩逼近,更甚至k的取值会变化(多加入文档后可能主题数目发生变化)
转载请注明出处,否则责任自负,谢谢合作
相关文章推荐
- 用PHP创建一个REST APi
- LM_ReadImgMode.js PC单页轮播读图模式组件,零依赖!
- SAT数学专业词汇整理
- 从Knockout到Angular的架构演变
- 从Knockout到Angular的架构演变 推荐
- arm-none-linux-gnueabi交叉工具链安装 ,介绍,区别总结
- DELPHI RES操作
- weka学习地址
- ct-ng error: undefined reference to `ppl_finalize'
- mongodb 学习笔记 02 -- CURD操作
- netstat -ano,查看已占用端口,结束已被占用的端口,ntsd,关闭任务管理器杀不了的进程
- tar解压出错tar: Child returned status 1
- mysql -- 一次执行多条sql语句
- Jmeter参数化的4种方法
- [iOS]创建单一像素的分割线
- 黑马程序员----ios的核心架构的学习
- C# Deflate、GZip压缩与解压缩
- linux wget用法详解
- linux升级相关
- js返回星期方法