转载地址:www.cnblogs.com/pinard/p/6805861.html

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

1. 文本主题模型的问题特点
    在数据分析中,我们经常会进行非监督学习的聚类算法,它可以对我们的特征数据进行非监督的聚类。而主题模型也是非监督的算法,目的是得到文本按照主题的概率分布。从这个方面来说,主题模型和普通的聚类算法非常的类似。但是两者其实还是有区别的。
    聚类算法关注于从样本特征的相似度方面将数据聚类。比如通过数据样本之间的欧式距离,曼哈顿距离的大小聚类等。而主题模型,顾名思义,就是对文字中隐含主题的一种建模方法。比如从“人民的名义”和“达康书记”这两个词我们很容易发现对应的文本有很大的主题相关度,但是如果通过词特征来聚类的话则很难找出,因为聚类方法不能考虑到到隐含的主题这一块。
    那么如何找到隐含的主题呢?这个一个大问题。常用的方法一般都是基于统计学的生成方法。即假设以一定的概率选择了一个主题,然后以一定的概率选择当前主题的词。最后这些词组成了我们当前的文本。所有词的统计概率分布可以从语料库获得,具体如何以“一定的概率选择”,这就是各种具体的主题模型算法的任务了。
    当然还有一些不是基于统计的方法,比如我们下面讲到的LSI。
2. 潜在语义索引(LSI)概述
    潜在语义索引(Latent Semantic Indexing,以下简称LSI),有的文章也叫Latent Semantic Analysis(LSA)。其实是一个东西,后面我们统称LSI,它是一种简单实用的主题模型。LSI是基于奇异值分解(SVD)的方法来得到文本的主题的。而SVD及其应用我们在前面的文章也多次讲到,比如:奇异值分解(SVD)原理与在降维中的应用和矩阵分解在协同过滤推荐算法中的应用。如果大家对SVD还不熟悉,建议复习奇异值分解(SVD)原理与在降维中的应用后再读下面的内容。
    这里我们简要回顾下SVD:对于一个m×nm×n的矩阵AA,可以分解为下面三个矩阵:
Am×n=Um×m Σm×n Vn×n
Am×n=Um×m Σm×n Vn×n
    有时为了降低矩阵的维度到k,SVD的分解可以近似的写为:
Am×n≈Um×k Σk×k Vk×n
Am×n≈Um×k Σk×k Vk×n
    如果把上式用到我们的主题模型,则SVD可以这样解释:我们输入的有m个文本,每个文本有n个词。而AijAij则对应第i个文本的第j个词的特征值,这里最常用的是基于预处理后的标准化TF-IDF值。k是我们假设的主题数,一般要比文本数少。SVD分解后,UilUil对应第i个文本和第l个主题的相关度。VjmVjm对应第j个词和第m个词义的相关度。ΣlmΣlm对应第l个主题和第m个词义的相关度。
    也可以反过来解释:我们输入的有m个词,对应n个文本。而AijAij则对应第i个词档的第j个文本的特征值,这里最常用的是基于预处理后的标准化TF-IDF值。k是我们假设的主题数,一般要比文本数少。SVD分解后,UilUil对应第i个词和第l个词义的相关度。VjmVjm对应第j个文本和第m个主题的相关度。ΣlmΣlm对应第l个词义和第m个主题的相关度。
    这样我们通过一次SVD,就可以得到文档和主题的相关度,词和词义的相关度以及词义和主题的相关度。
3. LSI简单实例
    这里举一个简单的LSI实例,假设我们有下面这个有10个词三个文本的词频TF对应矩阵如下:
    
    这里我们没有使用预处理,也没有使用TF-IDF,在实际应用中最好使用预处理后的TF-IDF值矩阵作为输入。我们假定对应的主题数为2,则通过SVD降维后得到的三矩阵为:
    
4. LSI用于文本相似度计算
    在上面我们通过LSI得到的文本主题矩阵可以用于文本相似度计算。而计算方法一般是通过余弦相似度。比如对于上面的三文档两主题的例子。我们可以计算第一个文本和第二个文本的余弦相似度
    
5. LSI主题模型总结
    LSI是最早出现的主题模型了,它的算法原理很简单,一次奇异值分解就可以得到主题模型,同时解决词义的问题,非常漂亮。但是LSI有很多不足,导致它在当前实际的主题模型中已基本不再使用。
    主要的问题有:
    1) SVD计算非常的耗时,尤其是我们的文本处理,词和文本数都是非常大的,对于这样的高维度矩阵做奇异值分解是非常难的。
    2) 主题值的选取对结果的影响非常大,很难选择合适的k值。
    3) LSI得到的不是一个概率模型,缺乏统计基础,结果难以直观的解释。
    对于问题1),主题模型非负矩阵分解(NMF)可以解决矩阵分解的速度问题。对于问题2),这是老大难了,大部分主题模型的主题的个数选取一般都是凭经验的,较新的层次狄利克雷过程(HDP)可以自动选择主题个数。对于问题3),牛人们整出了pLSI(也叫pLSA)和隐含狄利克雷分布(LDA)这类基于概率分布的主题模型来替代基于矩阵分解的主题模型。
    回到LSI本身,对于一些规模较小的问题,如果想快速粗粒度的找出一些主题分布的关系,则LSI是比较好的一个选择,其他时候,如果你需要使用主题模型,推荐使用LDA和HDP。

文本主题模型之潜在语义分析(LSA)相关推荐

  1. 机器学习之LSI:文本主题模型之潜在语义分析(LSI)

    机器学习之LSI:文本主题模型之潜在语义分析(LSI) 一.潜在语义分析(LSI)概述 二.LSI简单示例概述 三.LSI主题模型总结 四.代码实现 一.潜在语义分析(LSI)概述 潜在语义索引(La ...

  2. R语言文本主题模型之潜在语义分析(LDA:Latent Dirichlet Allocation)

    文本分析:主题建模 library(tidyverse) theme_set( theme_bw()) 目标 定义主题建模 解释Latent Dirichlet以及此过程的工作原理 演示如何使用LDA ...

  3. 主题模型、LDA、LSA、LSI、pLSA

    主题模型.LDA.LSA.LSI.pLSA LSA = LSI PLSA = PLSI LSA(SVD),PLSA,NMF,LDA均可用于主题模型. LFM.LSI.PLSI.LDA都是隐含语义分析技 ...

  4. 潜在语义分析 (LSA),概率潜在语义分析 (PLSA)

    目录 潜在语义分析 (latent semantic analysis, LSA) 单词向量空间与话题向量空间 单词向量空间 (word vector space) 话题向量空间 (topic vec ...

  5. 自然语言处理之LDA:文本主题模型之隐含狄利克雷分布(LDA)

    自然语言处理之LDA:文本主题模型之隐含狄利克雷分布(LDA) 一.朴素贝叶斯分析 二.PLSA模型 三. 基本函数知识 3.1 词袋模型 3.2 二项分布 3.3 多项分布 3.4 Gamma函数 ...

  6. 文本主题模型之非负矩阵分解(NMF)

    1. 非负矩阵分解(NMF)概述 非负矩阵分解(non-negative matrix factorization,以下简称NMF)是一种非常常用的矩阵分解方法,它可以适用于很多领域,比如图像特征识别 ...

  7. LDA文本主题模型的学习笔记

    引言 我们经常会听到LDA文本主题模型,经常用于文本分类.LDA由Blei, David M..Ng, Andrew Y..Jordan于2003年提出,用来推测文档的主题分布.它可以将文档集中每篇文 ...

  8. SVD分解——潜在语义分析LSA(I)——概率性潜在语义分析PLSA(I)

    SVD分解 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等.两个向量正交的意思是两个向量的内积为 0. 正定矩阵:如果对于所有的非零实系数向量 z z z ...

  9. NLP自然语言处理—主题模型LDA案例:挖掘人民网留言板文本数据

    全文链接:tecdat.cn/?p=2155 随着网民规模的不断扩大,互联网不仅是传统媒体和生活方式的补充,也是民意凸显的地带.领导干部参与网络问政的制度化正在成为一种发展趋势,这种趋势与互联网发展的 ...

最新文章

  1. ssl 和 https
  2. tensorflow训练打游戏ai
  3. 行业变革的镜子:2018年融资最多的24家美国创业公司
  4. php 4443 端口_Server configuration (Notary)
  5. 各种排序算法的js实现
  6. python【蓝桥杯vip练习题库】ALGO-90出现次数最多的整数(sys)
  7. Silverlight中服务通信方式的选择(WCF、Data Service、Ria Service)
  8. matlab复数方程的根,matlab解一元三次方程,得到的都是复数根。
  9. rsync的安装使用01
  10. js中如何判断一个DOM对象是否存在?
  11. 3.索引与string进行映射实现高效查找
  12. 抓眼球包装设计样机模板,色彩秘籍都在这里了!
  13. NASM汇编语言与计算机系统11-9号与0X16号中断显示键盘输入(int)
  14. Linux下的python.......安装
  15. linux反向连接如何免密码,编写受密码保护的反向Shell(Linux x64)
  16. 团队作业3 需求分析与系统设计
  17. 2020年最好用的手机是哪一款_2020年千元机中性能最好的4款手机,印象最让你深刻的是哪一款?...
  18. java笔试试题含答案_Java笔试题带答案
  19. Windows任务栏实现动态自动隐藏并透明
  20. 小米盒子4S Pro好不好,对比当贝盒子B1有什么缺点

热门文章

  1. gpfs nsd状态显示为emptied
  2. Linux简介(4)--计算机组成与进程及相关命令
  3. 朗坤环境递交注册:拟募资11亿 陈建湘家族色彩浓厚
  4. linux 3.10在mini210s上移植----01. tftp安装
  5. 软考复习之第一部分计算机组成原理
  6. 编写C#代码时,一个字符串太长如何换行
  7. Android——调试之 Log和LogCat的详解
  8. Postgresql - Table Partitioning - 10.6 11 实验
  9. 基于深度学习的VQA(视觉问答)技术
  10. 计算机各外设的作用,外设在计算机中的作用及传输方式.doc