文本相似度计算python lda_借助LDA主题分析的短文本相似性计算 - 综述帖

目标:针对给定输入文本与文本库,计算得出文本库中与输入文本最相似的文本

对于人类,两句话的相似性一般都从语义上进行考虑,大白话说就是”这两句话说的是同一件事儿/同一个意思“。相似的句子可能会有相似的语法。

对于当前的计算机来说,已经用标点符号等区分开了句子与句子,但如何理解、表达句子的意思是个难题,也就是需要人工定义语义的概念。另外,人类语言世界中的句子通常都有一定的使用环境,但到了计算机系统中全都统一存储为二进制,使得部分语义在”语言数字化“这一过程中丢失。(类比所有的模拟信号转化为数字信号都存在这样的问题。)

短文本是社交网络中更加流行的文本形式,特点在于长度短、特征稀疏、实时性强,在舆论监控、热点追踪上可以挖掘出更多有用的信息。短文本由于其特征稀疏、语义依赖强、不遵循语法等特点难以直接应用已有长文本处理技术进行分析。

文本分析主要分析方向为文本的特征提取、分类、相似度分析和情感分析等。其研究方法可以主要分为两种,基于句法-语义规则的理性方法、统计数学方法。

基于以上背景,短文本理解通常可以按显性分析和隐性分析两个角度进行划分:

显性分析方法是从人的角度解释性强的解释方法,包括词义、词性、句法、语义等。这种方法需要有知识库进行匹配。词汇角度的分析上,已有的研究包括WordNet、Hownet、哈工大同义词词林等;ESA算法构建一个词与文本的共现矩阵,词向量的每一个维度代表一个明确的知识库文本,如Wikipedia文章或标题。句法角度的分析,已有研究包括哈工大LTP平台,Stanford Parser,Berkeley Parser,并通常与词汇分析共同使用。

隐性分析方法是将文本转化为向量表示,从统计规律上弥补因文本数字化导致的语义缺失,使计算机理解文本,而少注重可解释性。

LSA的核心是在相同语境下出现的词具有较高的语义相关性,其构建一个词语文本的共现矩阵,矩阵每项通常是经过平滑或转化的共现次数,再通过SVD方法将原始矩阵降维。HAL构建词与词的共现矩阵,每个维度代表一个语境词,统计目标词汇与语境词汇的共现次数。LSA和HAL方法中的向量维度是难以从人的角度进行解释的。

可以在一定程度进行解释的算法称为半隐性分析方法,同样是用向量对词语和文本进行表示,但是在二者之间可以使用“主题”对向量维度进行理解。这一类的代表算法是LDA(Latent Dirichlet Allocation),算法结果为得到两个概率矩阵,维度分别为文本-主题的概率分布矩阵和主题-词的概率分布矩阵。

下图对上述算法的共现矩阵关系进行总结:

除了上述方法,更直接的方法可以利用现有工具将文本、词汇直接转为向量,利用聚类、距离计算等方法进行分析。

相似性的计算只需在以上模型的基础上进一步进行向量距离的度量、聚类等即可实现。

以上。欢迎各路大神指点。

你可能感兴趣的:(文本相似度计算python,lda)