潜在语义分析——统计学时代NLP的经典方法

潜在语义分析(LSA)是一种无监督学习方法,用于话题分析和文本相似度计算。通过矩阵分解,它从单词向量空间转换到话题向量空间,以更好地捕捉文本的语义关系。LSA涉及单词-文本矩阵的奇异值分解,话题向量表示文本的语义内容,从而提高文本相似度的准确性。
摘要由CSDN通过智能技术生成

基本概要

潜在语义分析,简称LSA(Latent semantic analysis),1990年提出,是一种无监督学习方法,主要用于文本的话题分析、信息检索、推荐系统、图像处理等等。其特点是通过矩阵分解发现文本与单词之间的基于话题的语义关系。

文本信息处理中,传统方法以词向量表示文本的语义内容,以单词向量空间的度量表示文本之间的语义相似度。而这样的方式真的可以准确表示语义吗?不能(当时应该还是词袋模型one-hot表示法或频率统计或者共现矩阵,word2vec之后基本上可以满足,即使有的场景不满足也是要基于向量来更改,因为计算机内的运算只能流淌数据)。潜在语义分析就旨在解决这个问题,试图从大量的文本数据中发现潜在的话题,以话题向量表示文本的语义内容,以话题向量空间的度量更准确地表示文本之间的语义相似度。这也是话题分析的基本想法。

潜在语义分析使用的是非概率的话题分析模型。就是将文本集合表示为单词-文本矩阵,对单词-文本矩阵进行奇异值分解,从而得到话题向量空间,以及文本在话题向量空间的表示。

单词向量空间

向量空间模型的基本想法是,给定一个文本,用向量表示该文本的语义,向量的每一维对应一个单词,其数值为单词在该文本中出现的频数或权值(或tf-idf值)。假设文本中所有的单词的出现情况表示了文本的语义内容,文本集合中的每段文本都表示为一个向量存在于向量空间,那么内积或标准化内积就表示文本之间的语义相似度。

比如文本信息检索,用户提出查询时,帮助用户找到与查询最相关的文本,以排序的形式展示给用户。最简单的做法就是采用向量空间模型,将查询与文本表示为单词的向量,计算查询向量与文本向量的内积作为语义相似度。

统计学习方法中对单词-文本矩阵的严格定义如下:
在这里插入图片描述
而计算权值或者频率可能采用的tf-idf,可参考之前写的通俗解释TF-IDF这篇博客。

上面单词文本矩阵的第j列向量 x j x_j xj就表示了文本 d j d_j dj
x j = [ x 1 j x 2 j ⋮ x m j ] , j = 1 , 2 , ⋯   , n x_{j}=\left[\begin{array}{c} x_{1 j} \\ x_{2 j} \\ \vdots \\ x_{m j} \end{array}\right], \quad j=1,2, \cdots, n xj=x1jx2jxmj,j=1,2,,n

其中 x i j x_{ij} xij就表示了单词 w i w_i wi在文本 d j d_j dj的权值,权值越大,该单词在文本中的重要度就越高。

两个单词向量的内积或标准化内积表示对应的文本之间的语义相似度。因此,文本 d i d_i di d j d_j dj之间的相似度有如下两种度量方式:
x i ⋅ x j , x i ⋅ x j ∥ x i ∥ ∥ x j ∥ x_{i} \cdot x_{j}, \quad \frac{x_{i} \cdot x_{j}}{\left\|x_{i}\right\|\left\|x_{j}\right\|} xixj,xixjxixj

从直观上确实解释得通,两个文本中共同出现的单词越多,且共同出现的单词在文本中的重要程度越相似,那么其语义内容就越接近,于是标准化内积就越大(这里不说内积,是因为同一个词在文档a里面十分重要,但在文档b里面一般重要,这样乘出来的内积会比在文档a和文档b都一般重要的内积要大,但显然后者才更加具备语义相似,所以衡量两个向量各维是否贴近仍然是标准化内积最合适,除非是one-hot表示法)

话题向量空间

基础概要

所谓话题,并没有严格的定义,就是指文本讨论的内容或主题。一个文本一般有若干个话题,如果两个文本的话题相似,那么两者的语义应该也相似。

如果定义一种话题向量空间模型,在给定一段文本的时候,用话题空间的里面的一个向量表示该文本,该向量的每一分量对应一个话题,其数值为该话题在文本中出现的权值。这样就能度量相似度了。而且话题的个数也远远小于单词的个数,这就是一种优化,代价就是话题很抽象,得到的难度提升了。其实潜在语义分析就是构建话题向量空间的方法。计算力允许的情况下,单词向量空间模型与话题向量空间模型可互为补充,同时使用。

接下来就要定义话题向量空间了。

首先还是重复一下单词向量空间的定义:
在这里插入图片描述
现在假设所有文本共含有k个话题。假设每个话题由一个定义在单词集合W上的m维向量表示,称为话题向量,即
t l = [ t 1 l t 2 l ⋮ t m l ] , l = 1 , 2 , ⋯   , k t_{l}=\left[\begin{array}{c} t_{1 l} \\ t_{2 l} \\ \vdots \\ t_{m l} \end{array}\right], \quad l=1,2, \cdots, k tl=t1lt2ltml,l=1,2,,k

其中 t i l t_{il} til就是单词 w i w_i wi在话题 t l t_l tl的权值,权值越大,该单词在话题中的重要度就越高。这k个话题向量张成了一个话题向量空间,维数为k。话题向量空间T是单词向量空间X的一个子空间(子集)。

这个子空间也就是话题向量空间可以这样表示:
T = [ t 11 t 12 ⋯ t 1 k t 21 t 22 ⋯ t 2 k ⋮ ⋮ ⋮ t m 1 t m 2 ⋯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值