文本建模系列之一:LSA

俗话说“庙小妖风大,水浅王八多”,作为一名自然语言处理的水货研究生,通常只是对论文有着一知半解的了解,然而因为毕竟人老了年纪大容易忘事,有时候还是想把这一知半解的想法用文字写出来,以便之后回顾,看官勿喷,水货要开始动笔了。

文本建模是自然语言处理领域中很基础的内容,而且也已经被研究了千万遍,这个系列我主要的思路是从LSA->pLSA->unigram model ->LDA,其中pLSA和LDA都是主题模型。我研究主题模型的初衷是为了在文本分类中提取出文本特征,而通过主题模型的建模过程,可以很好的了将文档的向量表示的维度压缩到K维,然后这K维的向量就可以丢到SVM、朴素贝叶斯、最大熵、神经网络、CNN等多个分类器中去了。文本表示的去稀疏和降维无疑对文本分类是个好事。

开始LSA,LSA论文是Deerwester等人在90年代早期发表的,其主要的方法是利用了奇异值分解(SVD)方法,这个方法在后来的pLSA论文中被指出没有真正的统计依据,也就是说缺乏合理的统计概率方法支撑,然而这个方法还是起到不错的效果,这也是神奇的地方。我并不想去探讨SVD的实际含义,只是把作者的做法表达出来一下

LSA(Latent Semantic Analysis)或者LSI(Latent Semantic Index),作者提出来主要是为了信息检索,也就是给定一个字符串,查找语料库中所有和这个字符串有关系的文档。

首先,我们将语料库的文档按照如下格式转换成矩阵:

如上图所示,横向表示文档编号,纵向表示文档中的单词,表中数字表示文档的词频统计。把这个矩阵计做是X

对于X我们可以分解成如下的形式:

其中T0和D0是正交矩阵,S0是对角矩阵,而且S0的对角是递减的正数,分解过程如下:

这并不神奇,神奇的是后面过程,

为了降维,我们可以在S0中取前k个数产生一个新的对角矩阵S,对应的在T0中取前两列,在D0‘中取前两列,构成新的X^

其中:

示例如下:

那么上面的初始矩阵可以按照下面的分解:

假设我们取K=2,那么新产生的矩阵是:

然后就得到了新的矩阵X^:

到这里,我们就可以进行下一,也就是比较文档和文档、文档和词语、词语和词语、查询语句与词语之间的相似度了。具体的计算过程如下:

  • 计算词语之间的相似度(相关性)

计算词语与词语之间的相关性,

上面的矩阵,X^和X^的转置的点乘是所有的词语之间的相似度关系,而根据右边的式子,可以看出,其实是TS与TS的转置,因此第i个词语和第j个词语之间的相似性就可以使用TS中第 i 行和第 j 列的相似性,当然这里可以使用欧式距离或者余弦函数cos来计算。

  • 计算文档与文档之间的相似度

计算文档与文章之间的相似度,可以用下面的矩阵来表示:

和计算词语与词语之间的一样,第 i 篇 文档 和第 j 篇文档之间的相似度就是 DS矩阵第 i 行 和 第 j 行的向量距离。

  • 计算文档与词语之间的相似度(相关性)

计算文档与单词相似性的矩阵就是X^:

我们可以把第 i 个词语 和第 j 个文档的相似性比较为: TS(1/2) 矩阵的第 i 行 和 DS(1/2)矩阵的第 j 行的向量距离

  • 计算查询语句q与语料中文档的相似性

这个计算过程,稍显麻烦,首先将查询语句转换成一维列向量,也就是和文最初的形式一样。然后就算:

然后将Dq和D的每一行计算向量距离即可

参考文献:

[1]Scott Deerwester. Indexing by Latent Semantic Analysis. Journal of the American Society for Information Science(1986-1998);sep 1990;41,6; ABI?INFORM Global

[2]Edel
Garcia,Latent
Semantic Indexing (LSI) A Fast Track Tutorial

时间: 2024-11-02 10:49:29

文本建模系列之一:LSA的相关文章

LDA-math-LDA 文本建模

http://cos.name/2013/03/lda-math-lda-text-modeling/ 5. LDA 文本建模 5.1 游戏规则 对于上述的 PLSA 模型,贝叶斯学派显然是有意见的,doc-topic 骰子θ→m和 topic-word 骰子φ→k都是模型中的参数,参数都是随机变量,怎么能没有先验分布呢?于是,类似于对 Unigram Model 的贝叶斯改造, 我们也可以如下在两个骰子参数前加上先验分布从而把 PLSA 对应的游戏过程改造为一个贝叶斯的游戏过程.由于 φ→k和

数学建模系列:模拟退火算法

引言 模拟退火算法基于Monte-Carlo迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性.模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优.模拟退火算法是一种通用的优化算法,理论上算法具有概率的全局优化性能,目前已在工程中得到了广泛应用,诸如VLSI.生产调度.控制工程.机器学习.神经网络.信号处理等领域. 模拟退火算法是通过赋予搜

数学建模系列:遗传算法

简介 遗传算法(Genetic Algorithms,GA)是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,它是模拟自然界中的生命进化进制,在人工系统中实现特定目标而优化.遗传算法的实质是通过群体搜索技术,更具适者生存的原则逐代进化,最终得到最优解或准最优解.它必须做以下操作:初始群体的产生.求每一个体的适应度.根据适者生存的原则选择优良个体.被选出的优良个体两两配对,通过随机交叉其染色体的基因并随机变异某些染色体的基因生成下一代群体,按此方法使群体逐代进化,直到满足进化终止条件. 生物

文本项目系列[2]——字符串元音字母次数统计

1.需求 统计元音字母——输入一个字符串,统计处其中元音字母的数量.更复杂点的话统计出每个元音字母的数量. 2.思路 输入:不超过100个字符的字符串.比如:"love me love my dog". 处理:元音字母就a/e/i/o/u五个,可以分别统计出各自的数量,总数相加就可以了. 输出如下: 元音总次数:6a次数:0e次数:3i次数:0o次数:3u次数:0 3.代码 package com.myeclipse; public class VowelCount { /** * @

文本项目系列[1]——逆序字符串

1.需求 逆转字符串——输入一个字符串,将其逆转并输出. 比如:输入字符串为:love.则输出为:evol. 注:在下文中,字符串翻转也是逆序的意思. 2.思路 有两种大的思路: (1) StringBuffer提供了字符串翻转功能,直接利用API即可. (2) 利用String本质是char数组进行字符串逆序. 3.代码 1 package com.myeclipse; 2 3 /** 4 * 逆转字符串——输入一个字符串,将其逆转并输出 5 * @author MrChen 6 * 7 */

【表格建模系列】二、添加数据

加载如下表并清空相应字段: DimCustomer清除字段: SpanishEducation, FrenchEducation, SpanishOccupation, FrenchOccupation DimDate清除字段: DateKey, SpanishDayNameOfWeek, FrenchDayNameOfWeek, SpanishMonthName, FrenchMonthName DimGeography清除字段: SpanishCountryRegionName, Frenc

【表格建模系列】五、创建分区

右键单击FactInternetSales > 分区. 创建如下分区: FactInternetSales2010.SQL: SELECT [dbo].[FactInternetSales].[ProductKey], [dbo].[FactInternetSales].[CustomerKey], [dbo].[FactInternetSales].[PromotionKey], [dbo].[FactInternetSales].[CurrencyKey], [dbo].[FactInter

LDA数学八卦笔记(三)LDA文本建模

原文地址:https://www.cnblogs.com/jason-lc/p/8214661.html

文本情感分析(一):基于词袋模型(VSM、LSA、n-gram)的文本表示

现在自然语言处理用深度学习做的比较多,我还没试过用传统的监督学习方法做分类器,比如SVM.Xgboost.随机森林,来训练模型.因此,用Kaggle上经典的电影评论情感分析题,来学习如何用传统机器学习方法解决分类问题. 通过这个情感分析的题目,我会整理做特征工程.参数调优和模型融合的方法,这一系列会有四篇文章.这篇文章整理文本特征工程的内容. 文本的特征工程主要包括数据清洗.特征构造.降维和特征选择等. 首先是数据清洗,比如去停用词.去非字母汉字的特殊字符.大写转小写.去掉html标签等. 然后