潜在语义索引(LSI)

前言

  在文本挖掘中,主题模型是比较特殊的一块,它的思想不同于我们常用的机器学习算法,因此这里我们需要专门来总结文本主题模型的算法。本文关注于潜在语义索引算法(LSI)的原理。

潜在语义索引(LSI)

  潜在语义索引(Latent Semantic Indexing,以下简称LSI),有的文章也叫Latent Semantic Analysis(LSA)。其实是一个东西,后面我们统称LSI,它是一种简单实用的主题模型。LSI是基于奇异值分解(SVD)的方法来得到文本的主题的。
  这里我们简要回顾下SVD:对于一个m×n的矩阵A,可以分解为下面三个矩阵:
A m × n = U m × m Σ m × n V n × n T A_{m×n}=U_{m×m}\Sigma_{m×n} V^{T}_{n×n} Am×n=Um×mΣm×nVn×nT
有时为了降低矩阵的维度到k,SVD的分解可以近似的写为:
A m × n = U m × k Σ k × k V k × n T A_{m×n}=U_{m×k}\Sigma_{k×k} V^{T}_{k×n} Am×n=Um×kΣk×kVk×nT
  如果把上式用到我们的主题模型,则SVD可以这样解释:我们输入的有 m m m个文本,每个文本有 n n n个词。而 A i j A_{ij} Aij则对应第 i i i个文本的第 j j j个词的特征值,这里最常用的是基于预处理后的标准化TF-IDF值。 k k k是我们假设的主题数,一般要比文本数少。SVD分解后, U i l U_{il} Uil对应第i个文本和第l个主题的相关度。 V j m V_jm Vjm对应第 j j j个词和第 m m m个词义的相关度。 Σ l m Σ_lm Σlm对应第 l l l个主题和第 m m m个词义的相关度。
  也可以反过来解释:我们输入的有 m m m个词,对应 n n n个文本。而 A i j A_{ij} Aij则对应第 i i i个词档的第 j j j个文本的特征值,这里最常用的是基于预处理后的标准化TF-IDF值。k是我们假设的主题数,一般要比文本数少。SVD分解后, U i l U_{il} Uil对应第 i i i个词和第 l l l个词义的相关度。 V j m V_{jm} Vjm对应第 j j j个文本和第 m m m个主题的相关度。 Σ l m Σ_{lm} Σlm对应第 l l l个词义和第 m m m个主题的相关度。
  这样我们通过一次SVD,就可以得到文档和主题的相关度,词和词义的相关度以及词义和主题的相关度。

LSI用于文本相似度计算

  通过LSI得到的文本主题矩阵可以用于文本相似度计算。而计算方法一般是通过余弦相似度。比如对于下面的三文档两主题的例子。矩阵 V V V如下所示:
[ − 0.4945 − 0.6458 − 0.5817 0.6492 − 0.7194 0.2469 ] \begin{bmatrix} -0.4945 & -0.6458 & -0.5817\\ 0.6492 & -0.7194 &0.2469 \end{bmatrix} [0.49450.64920.64580.71940.58170.2469]
计算第一个文本和第二个文本的余弦相似度如下 :
s i m ( d 1 , d 2 ) = ( − 0.4945 ) ∗ ( − 0.6458 ) + ( 0.6492 ) ∗ ( − 0.7194 ) ( − 0.4945 ) 2 + 0.649 2 2 ( − 0.6458 ) 2 + ( − 0.7194 ) 2 sim(d_1,d_2)=\frac{(-0.4945)*(-0.6458)+(0.6492)*(-0.7194)}{\sqrt{(-0.4945)^2+0.6492^2}\sqrt{(-0.6458)^2+(-0.7194)^2}} sim(d1,d2)=(0.4945)2+0.64922 (0.6458)2+(0.7194)2 (0.4945)(0.6458)+(0.6492)(0.7194)

LSI主题模型总结

  LSI是最早出现的主题模型了,它的算法原理很简单,一次奇异值分解就可以得到主题模型,同时解决词义的问题,非常漂亮。但是LSI有很多不足,导致它在当前实际的主题模型中已基本不再使用。
主要的问题有:

  1. SVD计算非常的耗时,尤其是我们的文本处理,词和文本数都是非常大的,对于这样的高维度矩阵做奇异值分解是非常难的。
  2. 主题值的选取对结果的影响非常大,很难选择合适的k值。
  3. LSI得到的不是一个概率模型,缺乏统计基础,结果难以直观的解释。

对于问题1),主题模型非负矩阵分解(NMF)可以解决矩阵分解的速度问题。对于问题2),这是难题了,大部分主题模型的主题的个数选取一般都是凭经验的,较新的层次狄利克雷过程(HDP)可以自动选择主题个数。对于问题3),牛人们整出了pLSI(也叫pLSA)和隐含狄利克雷分布(LDA)这类基于概率分布的主题模型来替代基于矩阵分解的主题模型。
  回到LSI本身,对于一些规模较小的问题,如果想快速粗粒度的找出一些主题分布的关系,则LSI是比较好的一个选择,其他时候,如果你需要使用主题模型,推荐使用LDA和HDP。

结束语

本人大三学生一枚,学识尚浅,不喜勿喷,希望今日能抛砖引玉,请各位大佬一定不吝赐教!!!
参考自:https://www.cnblogs.com/pinard/p/6805861.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值