文本建模系列之一:LSA

2023-12-14 22:10
文章标签 系列 建模 文本 lsa

本文主要是介绍文本建模系列之一: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

这篇关于文本建模系列之一:LSA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/494061

相关文章

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2