博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NLP系列学习:潜在语义牵引
阅读量:6909 次
发布时间:2019-06-27

本文共 1303 字,大约阅读时间需要 4 分钟。

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

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

一:主题模型算法

我们使用的主题模型算法跟聚类差不多,但是细究起来还是有一些差距:

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

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

找出主题的方法有一些是基于统计的方法,还有一些不是基于统计的方法,比如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这样的模型吧.

转载地址:http://gegdl.baihongyu.com/

你可能感兴趣的文章
安卓运动圆环自定义View
查看>>
启用 Spring Data JPA 审计功能
查看>>
@ConditionalOnMissingBean注解使用
查看>>
初识 JSP---(Session机制)
查看>>
白屏化背后,DBA应有的数据库自动化建设思路
查看>>
【MySQL疑难杂症】如何将树形结构存储在数据库中(方案一 Adjacency List)
查看>>
净流入率第一!工程师最爱一路向“杭”
查看>>
vs2010中工具箱不显示DevExpress控件的解决办法
查看>>
SSM-SpringMVC-09:SpringMVC中以继承MutiActionController类的方式实现处理器
查看>>
SVG滤镜对图片调色
查看>>
内容、平台和硬件,哪个方面更值得VR大规模投入?
查看>>
苹果第三财季派息32亿美元 回购100亿美元股票
查看>>
Hibernate ORM 5.3.9.Final 发布,常规更新版本
查看>>
行业 | 我的数据科学成果为什么无法商业化?
查看>>
LNMP
查看>>
个人收藏的一些网址
查看>>
Kotlin方法重载和覆写
查看>>
用好云平台,做好安全监控与审计
查看>>
10 - JavaSE之网络编程
查看>>
澳洲实施无人机新规,规则变得更为简单
查看>>