俗话说“庙小妖风大,水浅王八多”,作为一名自然语言处理的水货研究生,通常只是对论文有着一知半解的了解,然而因为毕竟人老了年纪大容易忘事,有时候还是想把这一知半解的想法用文字写出来,以便之后回顾,看官勿喷,水货要开始动笔了。
文本建模是自然语言处理领域中很基础的内容,而且也已经被研究了千万遍,这个系列我主要的思路是从LSA->pLSA->unigram model ->LDA,其中pLSA和LDA都是主题模型。我研究主题模型的初衷是为了在文本分类中提取出文本特征,而通过主题模型的建模过程,可以很好的了将文档的向量表示的维度压缩到K维,然后这K维的向量就可以丢到SVM、朴素贝叶斯、最大熵、神经网络、CNN等多个分类器中去了。文本表示的去稀疏和降维无疑对文本分类是个好事。
开始LSA,LSA论文是Deerwester等人在90年代早期发表的,其主要的方法是利用了奇异值分解(SVD)方法,这个方法在后来的pLSA论文中被指出没有真正的统计依据,也就是说缺乏合理的统计概率方法支撑,然而这个方法还是起到不错的效果,这也是神奇的地方。我并不想去探讨SVD的实际含义,只是把作者的做法表达出来一下
LSA(Latent Semantic Analysis)或者LSI(Latent Semantic Index),作者提出来主要是为了信息检索,也就是给定一个字符串,查找语料库中所有和这个字符串有关系的文档。
首先,我们将语料库的文档按照如下格式转换成矩阵:
如上图所示,横向表示文档编号,纵向表示文档中的单词,表中数字表示文档的词频统计。把这个矩阵计做是X
对于X我们可以分解成如下的形式:
其中T0和D0是正交矩阵,S0是对角矩阵,而且S0的对角是递减的正数,分解过程如下:
这并不神奇,神奇的是后面过程,
为了降维,我们可以在S0中取前k个数产生一个新的对角矩阵S,对应的在T0中取前两列,在D0'中取前两列,构成新的X^
其中:
示例如下:
那么上面的初始矩阵可以按照下面的分解:
假设我们取K=2,那么新产生的矩阵是:
然后就得到了新的矩阵X^:
到这里,我们就可以进行下一,也就是比较文档和文档、文档和词语、词语和词语、查询语句与词语之间的相似度了。具体的计算过程如下:
- 计算词语之间的相似度(相关性)
计算词语与词语之间的相关性,
上面的矩阵,X^和X^的转置的点乘是所有的词语之间的相似度关系,而根据右边的式子,可以看出,其实是TS与TS的转置,因此第i个词语和第j个词语之间的相似性就可以使用TS中第 i 行和第 j 列的相似性,当然这里可以使用欧式距离或者余弦函数cos来计算。
- 计算文档与文档之间的相似度
计算文档与文章之间的相似度,可以用下面的矩阵来表示:
和计算词语与词语之间的一样,第 i 篇 文档 和第 j 篇文档之间的相似度就是 DS矩阵第 i 行 和 第 j 行的向量距离。
- 计算文档与词语之间的相似度(相关性)
计算文档与单词相似性的矩阵就是X^:
我们可以把第 i 个词语 和第 j 个文档的相似性比较为: TS(1/2) 矩阵的第 i 行 和 DS(1/2)矩阵的第 j 行的向量距离
- 计算查询语句q与语料中文档的相似性
这个计算过程,稍显麻烦,首先将查询语句转换成一维列向量,也就是和文最初的形式一样。然后就算:
然后将Dq和D的每一行计算向量距离即可
参考文献:
[1]Scott Deerwester. Indexing by Latent Semantic Analysis. Journal of the American Society for Information Science(1986-1998);sep 1990;41,6; ABI?INFORM Global
[2]Edel Garcia,Latent Semantic Indexing (LSI) A Fast Track Tutorial
相关推荐
LSA文本分析LSA文本分析LSA文本分析LSA文本分析LSA文本分析LSA文本分析
这是用于从社交媒体挖掘和处理文本的脚本的集合。 专为LSA学院325课程的学生而写。
LSA-V2 LSA V2
针对文本数据高维度的特点和聚类的动态性要求,结合隐含语义分析(LSA)降维,提出一种改进的ART2神经网络文本聚类算法,通过LSA凸显文本和词条之间的语义关系,减少无用噪声,降低数据维度和计算复杂性;...
lsa-网站LSA 网站源(服务器外)
Dumais 等人在 1990 年提出来的一种新的索引和检索方法。该方法和传 统向量空间模型(vector space model)一样使用向量来表示词(terms)和文档(documents),并通 过向量间的关系(如夹角)来判断词及文档间的关系;而...
用于文本语义分析的潜在语义分析算法LSA(Latent Semantic Analysis),包含详细的函数说明,原理分析及数据。相比原来版本的LSA,增加了文件demo.m以增加可视化效果,更有利于读者使用。
SWE400Project1 LSA 项目。
8段数码管显示数字秒表设计C51... LSA=0;LSB=0;LSC=0; break;//显示第0位 case(1): LSA=1;LSB=0;LSC=0; break;//显示第1位 case(2): LSA=0;LSB=1;LSC=0; break;//显示第2位 case(3): LSA=1;
这是一个简单的文本分类示例,其中使用了用Python编写的潜在语义分析(LSA)并使用了scikit-learn库。 该代码与我在撰写的LSA教程博客文章一起提供。 脚步: [可选]:运行getReutersTextArticles.py下载Reuters...
LSA中包含几篇有关文本挖掘的资料,介绍了lsi和svd算法
( lsa新旧比较.rar ) When multiple instances of the same LSA are received, a router determines which is the most recent by the following algorithm: Compare the sequence numbers. The LSA with the ...
它由一个应用程序和一个带收据的支付系统组成。 入门 使用git clone <repo> 6.0.3' postgreql'> = 0.18','<2.0' 正在安装 查看问题 运行测试 查看问题 部署方式 该应用程序使用Capistrano 3部署到运行Puma和...
第一类LSA 即router LSA 描述了区域内部与路由器直连的链路的信息,这种类型的LSA每一台路由器都会产生,它的内容中包括了这台路由器所有直连的链路类型和链路开销等信息,并且向它的邻居传输 。
PLSA和LSA的调研
4、当一个路由器遇到同一个LSA的两个实例时,它必须能够确定哪一个是最新的LSA。(根据序列号来识别、校验码、age(大的新,超过15分钟小的新)) 5、LSA条目的老化时间默认是一小时(0-3600S)
nqa+lsa实施方法!转载应该在实施中能用的到
针对OSPF Area & LSA进入详细解析
用于文本语义分析的潜在语义分析算法LSA(Latent Semantic Analysis),包含详细的函数说明和原理分析
OSPF中LSA类型总结 是大家学习网络的好资料