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

本文共 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://oujol.baihongyu.com/

你可能感兴趣的文章
centos You don't have permission to access 解决
查看>>
WPF仿windows图片查看器(附源码)
查看>>
我的友情链接
查看>>
ubuntu 超级管理员修改Mysql数据库密码
查看>>
社会化分享功能百度分享代码示例
查看>>
我的友情链接
查看>>
java爬虫学习日记1-基本爬虫原理介绍
查看>>
bash的功能简介
查看>>
Python中的and和or
查看>>
Linux下TFTP+NFS+PXE安装FreeBSD操作系统
查看>>
企业网络部署和运维
查看>>
win7/win8右键在目录当前打开命令cmd窗口
查看>>
定时任务1.基本原理
查看>>
linux文件操作之系统调用
查看>>
《飞机大战》安卓游戏开发源码(二)
查看>>
2017总结、计划——IT人应该拥有什么样子的价值观与实践能力
查看>>
Linux设备驱动入门之hello驱动
查看>>
vim 的一些简单使用
查看>>
maven构建spring4-hibernate4-webapp
查看>>
当网络连接再次遇上存储
查看>>