俗话说“庙小妖风大,水浅王八多”,作为一名自然语言处理的水货研究生,通常只是对论文有着一知半解的了解,然而因为毕竟人老了年纪大容易忘事,有时候还是想把这一知半解的想法用文字写出来,以便之后回顾,看官勿喷,水货要开始动笔了。
文本建模是自然语言处理领域中很基础的内容,而且也已经被研究了千万遍,这个系列我主要的思路是从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学院325课程的学生理解和应用自然语言处理(NLP)技术。 在Python中,文本挖掘涉及使用各种库和工具,如NLTK...
LSA是一种文本挖掘技术,主要用于理解和表示文档集中的隐藏语义结构。在信息技术和数据科学领域,LSA广泛应用于信息检索、文档分类和主题建模等场景。 【描述】"SWE400Project1 LSA 项目。" 这个描述简洁地指出,...
LSA(Latent Semantic Analysis,潜在语义分析)是一种用于文本挖掘的技术,它通过数学方法,如奇异值分解(SVD),来揭示文本数据中隐藏的语义结构。在Java环境中实现LSA,通常需要对矩阵运算有深入理解,因为LSA的...
潜在语义分析(Latent Semantic Analysis,简称LSA)和概率潜在语义分析(Probabilistic Latent Semantic Analysis,简称PLSA)是文本分析和信息检索领域的重要模型,旨在通过统计方法揭示文本中的隐含语义结构。...
4. 潜在语义分析(LSA):LSA是文本挖掘中的技术,通过奇异值分解(SVD)降低词向量的维度,揭示文档和词语之间的潜在语义关系。 5. 奇异值分解(SVD):SVD是矩阵分解的一种,广泛应用于图像处理、推荐系统和文本分析。 ...
这些内容可能涵盖了LSA的理论基础、实现过程、与其他方法的比较以及实际应用的案例,旨在帮助读者深入理解和掌握LSA这一文本分析技术。通过阅读这些材料,我们可以进一步了解LSA在文本挖掘、信息检索和自然语言处理...
LSA(Latent Semantic Analysis,潜在语义分析)是一种在自然语言处理领域广泛使用的文本分析技术,它通过数学方法揭示文本中的隐藏语义结构。LSA的核心思想是将文本集合视为一个高维空间中的点集,通过降维技术,如...
9. **文本生成与摘要**:基于深度学习的文本生成模型如Transformer、GPT系列和BERT等可以生成连贯的文本,而TextRank、LSA等算法则可用于自动文本摘要,提取文本的关键信息。 10. **应用案例**:文本挖掘广泛应用于...
这一理论为理解大量文本数据提供了新的视角,尤其是在信息检索、文档分类和主题建模等领域。 在Python编程环境中,numpy库因其高效的数值计算能力,常被用于实现LSA算法。numpy提供了丰富的数组操作和线性代数功能...
LSA是一种统计方法,它通过降维技术将高维的词向量空间转换为低维空间,从而揭示文本中的潜在语义结构。在LSA中,文档被视为词语的组合,词语则被表示为在特定语境下的向量。通过奇异值分解(SVD)等数学手段,LSA...
主题建模是一种统计方法,用于从大量文本数据中发现隐藏的主题或概念。gensim支持两种广泛使用的方法:Latent Dirichlet Allocation (LDA) 和 Latent Semantic Analysis (LSA)。 - **LDA(潜在狄利克雷分配)**:...
**tm**(Text Mining)包是R中最常用的文本挖掘包之一,它提供了一系列的工具和函数用于文本数据的预处理和分析。 ##### 3.1 tm包简介 `tm`包的主要功能包括: - **文本清洗**:去除标点符号、数字、URL等。 - **...
- **tm**:文本挖掘工具箱,提供了一系列文本预处理功能。 - **topicmodels**:主题模型包,支持LDA(Latent Dirichlet Allocation)等模型。 - **RWeka**、**lsa**、**RTextTools**、**zipfR**、**TextRegression**...
8. **Jupyter Notebook**:一个交互式环境,常用于编写和展示文本分析代码。 在描述中提到“值得一看”,这可能是指这些文件包含了一些示例代码或教程,可以帮助初学者或有经验的开发者深入了解Python在文本分析中...
tm 包是 R 中最常用的文本挖掘工具包之一,它提供了一系列函数来处理文本数据,包括预处理、构建语料库、提取特征等。 ##### 3.2 数据读入 tm 包可以通过多种方式读入文本数据,包括从文件系统读取、从数据库读取...
- **corpora**:这个模块提供了一系列工具,用于处理和存储文本数据,如MmCorpus、Dictionary等。 - **models**:包含了各种模型,如TF-IDF模型、LSA(潜在语义分析)、LDA(潜在 Dirichlet 分配)和Word2Vec。 -...
Python中的Gensim是一个强大的文本处理库,特别适用于主题建模和文档相似性分析。它由Radim Řehůřek开发,旨在提供高效、易于使用的工具,用于处理大型语料库。Gensim的核心功能包括TF-IDF转换、潜在语义分析...
这个“文本处理扩展模块.rar”压缩包可能包含了一系列专门用于增强Python文本处理能力的第三方库或自定义脚本。下面我们将深入探讨一些常见的文本处理扩展模块及其功能。 1. **NLTK(Natural Language Toolkit)**...
文本分类是文本挖掘的一个核心任务,它将文本数据按照预定义的类别进行自动划分,以支持信息检索、情感分析、垃圾邮件过滤等多种应用场景。 一、数据挖掘基础 数据挖掘通常包括预处理、模式发现和后处理三个阶段。...