NLP系列学习:潜在语义牵引

关于主题模型这一块是比较特殊的,这期间也给我带来了一些困惑,由于其中的一些算法和咱们在机器学习中使用的算法仍是很不一样的,在这篇文章里,我想简单介绍下LSI(潜在语义牵引)算法

这个模型的做用是经过海量的文献找出词汇的关系.就跟警察抓嫌疑人同样,犯罪事件在这个区域里出现的多了,这片区域越有可能成为犯罪的重点辖区. 词汇也是这样,当一些词汇大量出如今一篇文章里时,咱们能够认为这篇文章会倾向去成为某一种类型,而这些词之间也存在着语义相关性.机器学习

一:主题模型算法学习

咱们使用的主题模型算法跟聚类差很少,可是细究起来仍是有一些差距:设计

1:聚类模型计算的是数据样本之间的欧拉距离等.cdn

2:主题模型是经过对文本隐含主题的建模,词特性聚类很难找出主题相关度.blog

找出主题的方法有一些是基于统计的方法,还有一些不是基于统计的方法,好比LSI索引


二:潜在语义索引概述事件

LSI是基于奇异值分解(SVD)的方法来获得文本的主题的。关于其中的数学知识,我就再也不赘述了,这里说一说她的降维过程:文档

1:把文档库表示为数学


的词-文档矩阵,词做为行,文档做为列.(m表示词向量在不一样文档中出现的次数,n表示不一样文档的个数),A表示为A = [α ij ],在此矩阵中,α ij为非负值 , 表示第 i 个词在第j 个文档中出现的频度。显然,A是稀疏矩阵.

2:利用SVD求A的正交因子的降秩矩阵,这其实就是关键所在,降维,SVD在我看来,最主要的做用在这里是将词和文档映射到一个语义空间,而后把文档和词表示为因子形式,这样既能够保留主要信息,又能够减小运算复杂度.



这当中K的取值挺关键,我看前人给出的经验是,K太小,则丢失信息就越多;K过大,信息虽然多,但可能有冗余且计算消耗大。K的选择也是值得研究的,不过通常取值为100-300,不绝对。


三:LSI的应用性

LSI在我看来最关键的仍是设计K的取值,若是K取的很合适,能够把联系较为紧密的词语提出来,其实就是用降维作相关性计算.可是LSI如今并非那么流行,也是有一些缘由:

1:太慢

SVD计算太费劲了,特别是咱们几十万的文本数据一块来,这样高维矩阵SVD分解基本是机器吃不消,而后如今用的TF-IDF只须要经过两个整数相乘就能计算出不一样单词的重要性,岂不是更有效?尽管在某些程度上LSI有一些优点,可是在工业界彷佛没多少人用.

2:K值选取

K值的选取太过于影响计算结果,直接使用LSI作单词相关度计算的并很少,一方面在于如今有一些灰常好用的同义词词典,另外相对无监督的学习你们仍是更信任有监督的学习(分类)获得的结果。

3:LSI不能聚类

由于LSI 获得的不是一个几率模型,缺少统计基础,结果难以直观的解释。因此聚类不行,可是该算法后续额变种包括LDA聚类是颇有效的,由于LSI找的是特征子空间,聚类找的则是实例分组,

LSI 虽然能获得看起来貌似是聚类的结果,但其意义不见得是聚类所想获得的。


四:实验

代码整理ing~

后续附加



五:总结

对于LSI,咱们在一些规模较小的问题上,使用LSI是很划算的,可是你想实打实的作主题模型,由于数据量太多了,仍是老老实实用LDA这样的模型吧.

相关文章
相关标签/搜索