主题模型(Topic Models)是一套试图在大量文档中发现潜在主题结构的机器学习模型,主题模型通过分析文本中的词来发现文档中的主题、主题之间的联系方式和主题的发展。通过主题模型可以使我们组织和总结无法人工标注的海量电子文档。较早的主题模型有混合语言模型(Mixture of Unigram),潜在语义索引(Lantent Semantic Index,LSI),概率潜在语义索引(Probabilistic Latent Semantic Indexing,PLSI)。
主题模型中文档是由主题组成的,而主题是词的一个概率分布。David Blei 于2002 年在PLSI 和LSI 模型的基础上提出了Latent Dirichlet Allocation(LDA)模型,LDA 引入了狄利克雷先验参数作为多项式分布的先验分布,从而简化了概率推导。也解决了PLSI 模型中的扩展问题。

潜在语义分析(Latent Semantic Analysis)

基于向量空间模型的方法无法处理一词多义或多词一义的问题,由于人类认知是根据语义而非单词,两篇文章中可能同时出现了单词“flash”,然而一篇是有关电脑技术中的“flash”软件的,另一篇是有关于闪电的研究。如果单从单词本身进行分析很有可能将两篇文章错误的归为一类。并且词的维度太大,如何找到一些关键词可以对一篇文章进行信息压缩也是一件很棘手的问题。特别在信息爆炸的今天。

潜在语义分析是一种自动索引和信息检索的方法,该方法通过无监督的方法将文档和词映射到浅在语义空间(Latent Semantic Space),这个空间被称为主题或语义维度。

隐性语义分析采用将文档或词矩阵进行奇异值分解(Singular Value Decomposition, SVD)的方法。一般而言,文档和文档或者文档和查询之间的相似性在简化的潜语义空间的表达更为可靠。由于奇异值分解的方法本身是对文档特征的排序,可以通过限制奇异值的个数对数据进行降噪和降维。该方法于1988 年由Dumais 等人提出,用于解决关键词检索中由于单词和人类认知含义的差别所引起的漏检索和误检索的问题。下图中便是Susan Dumais,o(^.^)o。

Susan Dumais

LSA 用向量空间模型将文档映射成矩阵, 使用SVD 分解矩阵:

其中矩阵 和 是正交矩阵,矩阵是包含文档矩阵的奇异值组成的对角阵。

由于矩阵中的奇异值的大小代表了矩阵在该维度的变化大小,并且奇异值在矩阵中是按照从大到小的顺序排列的。当中的前k个奇异值较大的时候,取前k个奇异值可以看作是对原来矩阵的近似。

举个例子,数据集中分别有关两个话题的9篇微博文档,话题A是关于话题陈奕迅演唱会的,话题B是关于话题谷歌眼睛问世的。经过分词后将可以得到每个词对应每篇微博文档出现频率的词频表。如下表所示。

话题A:陈奕迅演唱会
A1:陈奕迅的演唱会太好听了,大爱陈奕迅的《十年》
A2:最喜欢的Eason《十年》和《因为爱情》
A3:看陈奕迅的《十年》,现代科技真厉害,现场真棒
A4:北京演唱会,Eason 和王菲对唱《因为爱情》
A5:演唱会陈奕迅为了请到王菲唱《因为爱情》,特地不说话
话题B:谷歌眼镜问世
B1:谷歌眼镜即将上市,现在可以申请试用。
B2:科技新创意–Google Glass
B3:Glass 创意无限,各位Geek 可以想办法试用
B4:谷歌眼镜可以申请试用了,属于可穿戴式科技产品

词频表可以看作是这9条微博的完全统计,通过词频计算表计算表中每篇文档中每个词的TF-IDF权值表,并用权值表进行奇异值分解。

设TF-IDF权值表为,则通过奇异值分解有:

对矩阵分别取奇异值分解的前两维,即设k=2,可以得到。其中便可表示为该n篇文章对应在前两维度上的一个点的分布,可以分别取为两个维度绘制每篇文章在这两个维度上的位置(如下图所示,蓝色的方形表示话题B的四篇微博,红色的菱形表示话题A的五篇微博)。对于一篇新的文章,可以通过计算得到新的文章到该两个维度上的分布。下图中黑色的圆圈便是新的微博:“Eason演唱会王菲”得到的结果,可以看到在这两个维度上很好的将两个话题区分开了。

Reference:

[1] Dumais S T. Latent semantic analysis[J]. Annual review of information science and technology, 2004, 38(1):188–230.

[2] Blei D M, Lafferty J. Topic models[J]. Text mining: classification, clustering, and applications, 2009,10:71.

[3] Steyvers M, Griffiths T. Probabilistic topic models[J]. Handbook of latent semantic analysis, 2007, 427(7):424–440.

https://blog-potatolife.rhcloud.com/?p=132

主题模型之潜在语义分析(Latent Semantic Analysis)的更多相关文章

  1. 潜在语义分析Latent semantic analysis note(LSA)原理及代码

    文章引用:http://blog.sina.com.cn/s/blog_62a9902f0101cjl3.html Latent Semantic Analysis (LSA)也被称为Latent S ...

  2. 潜语义分析(Latent Semantic Analysis)

    LSI(Latent semantic indexing, 潜语义索引)和LSA(Latent semantic analysis,潜语义分析)这两个名字其实是一回事.我们这里称为LSA. LSA源自 ...

  3. 主题模型之概率潜在语义分析(Probabilistic Latent Semantic Analysis)

    上一篇总结了潜在语义分析(Latent Semantic Analysis, LSA),LSA主要使用了线性代数中奇异值分解的方法,但是并没有严格的概率推导,由于文本文档的维度往往很高,如果在主题聚类 ...

  4. NLP —— 图模型(三)pLSA(Probabilistic latent semantic analysis,概率隐性语义分析)模型

    LSA(Latent semantic analysis,隐性语义分析).pLSA(Probabilistic latent semantic analysis,概率隐性语义分析)和 LDA(Late ...

  5. Latent Semantic Analysis (LSA) Tutorial 潜语义分析LSA介绍 一

    Latent Semantic Analysis (LSA) Tutorial 译:http://www.puffinwarellc.com/index.php/news-and-articles/a ...

  6. 海量数据挖掘MMDS week4: 推荐系统之隐语义模型latent semantic analysis

    http://blog.csdn.net/pipisorry/article/details/49256457 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  7. Latent semantic analysis note(LSA)

    1 LSA Introduction LSA(latent semantic analysis)潜在语义分析,也被称为LSI(latent semantic index),是Scott Deerwes ...

  8. 文本主题模型之潜在语义索引(LSI)

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

  9. Latent Semantic Analysis(LSA/ LSI)原理简介

    LSA的工作原理: How Latent Semantic Analysis Works LSA被广泛用于文献检索,文本分类,垃圾邮件过滤,语言识别,模式检索以及文章评估自动化等场景. LSA其中一个 ...

随机推荐

  1. UML 图C#

    继承关系(类1继承类2) 代码: class Class1:Class2 { } class Class2 { } 实现(实现接口) 代码: interface interface1 { void s ...

  2. PAT 1067 试密码(20)(代码)

    1067 试密码(20 分) 当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死.本题就请你实现这个小功能. 输入格式: 输入在第一行给出一个密码(长度 ...

  3. Java Swing 中使用 EventQueue

    public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { ...

  4. Java的反射技术

    什么是反射机制 Java的反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能调用它的任意属性和方法.这种动态获取信息以及动态调用对象属性和方法的即使称为J ...

  5. [Robot Framework] Robot Framework怎么调试?

    Robot Framework怎么debug? 在eclipse里面安装一个插件,就可以debug robot framework的project. 插件下载地址: https://github.co ...

  6. tomcat运行监控脚本,自动启动

    参见:http://www.cnblogs.com/coffee_cn/p/8279165.html monitor.sh #!/bin/sh monitorlog=/usr/local/tomcat ...

  7. 【搜索】C - Catch That Cow

    #include<stdio.h> #include<string.h> struct A{ int state; int step; }queue[]; // 结构体数组用来 ...

  8. App上架流程[利用Archive进行上传]

    作者 M_Lee2016.01.22 10:47 写了14852字,被32人关注,获得了49个喜欢 [iOS]App上架流程[利用Archive进行上传] 字数2186 阅读507 评论3 喜欢9 今 ...

  9. spring学习 十 schema-based 异常通知,和环绕通知

    一 schema-based异常通知 第一步:创建通知类 :新建一个类实现 throwsAdvice 接口,throwsAdvice接口只是标记接口里面并没有任何方法,必须自己写方法,且必须叫 aft ...

  10. 进入快速通道的委托(深入理解c#)

    1.方法组:所有的名称相同的重载方法合在一起就成为一个方法组. 2.协变性和逆变性: 协变性指的是——泛型类型参数可以从一个派生类隐式转化为基类. 逆变性指的是——泛型类型参数可以从一个基类隐式转化为 ...