潜语义分析(LSA)

潜语义分析(LSA)是一种监督学习方法,主要用于文本的话题分析,其特点是通过矩阵分解发现文本与单词之间的基于话题的语义关系。潜在语义分析由Deerwester等于1990年提出,最初应用于文本信息检索,在推荐系统、图像处理、生物信息学等领域也有广泛的应用。

文本信息处理中,传统的方法以单词向量表示文本的语义内容,以单词向量空间的度量表示文本之间的语义相似度。潜在语义分析旨在解决这种不能准确表示语义 的问题,试图从大量的文本数据中发现潜在的话题,以话题向量表示文本的语义内容,以话题向量空间的度量准确地表示文本之间的语义相似度,这也是话题分析的基本想法。

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

一、单词向量空间与话题空间

1.单词向量空间

文本信息处理,比如文本信息检索、文本数据挖掘的一个核心问题是对文本的语义内容进行表示,并进行文本之间的语义相似度计算。最简单的方法是利用向量空间模型,也就是单词向量空间模型。向量空间模型的基本想法是:给定一个文本,用一个向量表示该文本的“语义”,向量的每一维对应一个单词,其数值为该单词在该文本中出现的频数或权值,基本假设是文本中所有单词的出现情况表示了文本的语义内容;文本集合中的每个文本都表示为一个向量,存在于一个单词空间;向量空间的度量,如内积或标准化内积表示文本之间的“语义相似度”。

例如,文本信息检索的任务是,用户提出查询时,帮助用户找到与查询最相关的文本,以排序的形式展示给用户。一个最简单的做法是采用单词向量空间模型,将查询与文本表示为单词向量,计算查询向量与文本向量的内积,作为语义相似度,以这个相似度的高低对文本进行排序。在这里,查询看作是伪文本,查询与文本的语义相似度表示为查询与文本的相关性。

下面给出严格定义,给定一个含有n个文本的集合,以及在所有问诊中出现的m个单词集合。将单词在文本中出现的数据用一个单词-文本矩阵表示,记作X

这是一个n*m矩阵,元素表示单词在文本中出现的频数或权值。由于单词种类很多,而每个文本中出现单词的种类很少,所以单词-文本矩阵是一个稀疏矩阵。

权重通常用单词频数-逆文频率(TF-IDF),其定义是

式表示单词出现在中的频数,表示文本中所有出现单词的频数只和,是含有单词的文本数,是文本几个D的全部文本数。直观上,一个单词在一个文本中出现的频数越高,这个单词在这个文本中的重要性越高;一个单词在整个文本集合中出现的文本数越少,这个单词就越能表示其所在文本的特点,重要度就越高:一个单词在一个文本的TF-IDF是两种重要度的积,综合表示重要度。

单词向量空间模型直接使用单词-文本矩阵的信息。单词-文本矩阵的第j列向量表示表示文本

其中是单词在文本的权值,,权值越大,该单词在该文本中的重要性越高。这时矩阵可以写成

两个单词向量的内积或标准化内积(余弦)表示对应文本之间的语义相似度。因此文本之间的相似度为:

式中,表示内积,表示范数。

单词空间向量的优点是模型简单,计算效率高。因为单词向量通常是稀疏的,两个向量的内积计算只需要在其同不为零的维度上进行即可,需要计算很少,可以高效地完成。单词向量空间也有一定的局限性,体现在内积相似度未必能够准确表达两个文本的语义相似度。因为在自然语言的单词具有一词多义,多个单词可以表示同一个语义,所以基于单词向量的相似度计算存在不精确的问题。

airplane 2
aircraf 2
computer 1
apple 2 3
fruit 1
produce 1 2 2 1

2.话题向量空间

两个文本的语义相似度可以体现在两者的话题相似度上。所谓话题,并没有严格的定义,就是指文本中所讨论的内容或主题。一个文本一般含若干个话题。如果两个文本的话题相似,那么两者的语义应该也相似。话题可以由若干个单词表示,同义词可以表示同一个话题,而多义词可以表示不同的话题。这样,基于话题的模型可以解决上述基于单词的模型存在的问题。

给定一个文本,用话题空间的一个向量表示该文本,该向量的每一分量对应一个话题,其数值为该话题在该文本中出现的权值。用两个向量的内积或标准化内积表示对应聊个文本的语义相似度。注意,话题的个数通常远远小于单词的个数,话题向量空间模型更加抽象。事实上潜在语义分析正是构建话题向量空间的方法(即话题分析的方法),单词向量空间模型与话题空间模型可以互相补充,现实中,两者可以同时使用。

(1) 话题向量空间

给定一个文本集合和相应的单词集合。可以获得其单词-文本矩阵,构成原始的单词向量空间,每一列是一个文本在单词向量空间中的表示

矩阵也可以写成

假设所有文本中共含有k个话题。假设每个话题都由一个定义资料单词集合上的m维向量表示,称为话题空间,即

其中是单词在话题的权值,,权值越大,该单词在话题中的重要度越高。这k个话题向量成一个话题向量空间,维数为k。

话题向量空间也可以表示为一个矩阵,称为单词-话题矩阵,记作

矩阵也可以写作

(2)文本在话题向量空间的表示

现考虑文本集合的文本,在单词向量空间由一个向量表示,将投影到话题向量空间,得到话题向量空间的一个向量,是一个k为向量,其表达式为

其中是文本在话题的权值,,权值越大,该话题在该文本中的重要性越高。

矩阵表示话题在文本中出现的情况,称为话题-文本矩阵记作

矩阵也可以写作

(3)从单词向量空间到话题向量空间的线性变换

这样一来,在单词向量空间的文本可以通过它在话题空间中的向量近似表示,具体地由k个话题以为系数的线性组合近似表示

所以单词-文本矩阵可以近似的表示为单词-话题矩阵与话题-文本矩阵的乘积形式,这就是潜语义分析

在原始的单词向量空间中,两个文本的相似度可以由向量的内积表示,即。经过潜在语义分析之后,在话题向量空间中,两个文本的相似度可以由对应的向量的内积即表示

要进行潜在语义分析,需要同时决定两部分,一是话题空间向量,二是文本在话题中的表示,使两者乘积是原始矩阵的近似,而这一结果完全从话题-文本矩阵的信息中获得。

二、潜在语义分析算法

1.单词-文本矩阵

给定文本集合和单词集合。潜在语义分析首先将这些数据表成单词-文本矩阵

这是一个矩阵,元素表示单词在文本中出现的频数或权值。

2.截断奇异值分解

潜在语义根据确定的话题个数k对单词-文本矩阵进行截断奇异值分解
X \approx U_k\Sigma_kV_k = [u_1,u_2,\dots,u_k]\begin{bmatrix} \sigma_1 & 0 & \dots & 0 \\[0.3em] 0 & \sigma_2 & \dots & 0 \\[0.3em] 0 & 0 & \ddots & 0 \\[0.3em] 0 & 0 & \dots & \sigma_k \end{bmatrix}\begin{bmatrix} v_1^T \\[0.3em] v_2^T \\[0.3em] \vdots \\[0.3em] v_k^T \end{bmatrix}
式中是矩阵,它的列由的前k个相互正交的左奇异向量组成,是k阶对角矩阵,对角元素为前k个最大奇异值,是矩阵,它的列由的前k个互相正交的右奇异向量组成

3.单词向量空间

在单词-文本矩阵的截取奇异分解式中,矩阵的每一列向量表示一个话题,称为话题向量。由k个话题生成一个子空间。

称为话题空间

4.文本的话题表示

有了话题空间,接着考虑文本在话题空间的表示
\begin{aligned} \mathbf X= [x_1,x_2,\dots,x_n] = \approx U_k\Sigma_k V_k^T \\ =[u_1,u_2,\dots,u_k]\begin{bmatrix} \sigma_1&\space &\space & \space \\[0.3em] \space & \sigma_2 & \space & \space \\[0.3em] \space & \space & \ddots &\space \\[0.3em] \space & \space & \space & \sigma_k \end{bmatrix} \begin{bmatrix} v_{11} & v_{21} & \dots & v_{n1} \\[0.3em] v_{12} & v_{22} & \dots & v_{n2} \\[0.3em] \vdots & \vdots & \space & \vdots \\[0.3em] v_{1k} & v_{2k} & \dots & v_{nk} \end{bmatrix} \\ = [u_1,u_2,\dots,u_k]\begin{bmatrix} \sigma_1v_{11} & \sigma_1v_{21} & \dots &\sigma_1v_{n1} \\[0.3em] \sigma_2v_{12} & \sigma_2v_{22} &\dots & \sigma_2 v_{n2} \\[0.3em] \vdots & \vdots & \space &\vdots \\[0.3em] \sigma_kv_{1k} & \sigma_k v_{2k}&\dots&\sigma_kv_{nk} \end{bmatrix} \end{aligned}
其中

因此矩阵的第j列向量满足
\begin{aligned} x_j \approx U_k(\Sigma_kV_k^T)_j \\ = [u_1,u_2,\dots,u_k]\begin{bmatrix} \sigma_1v_{j1} \\[0.3em] \sigma_2v_{j2} \\[0.3em] \vdots \\0.3em] \sigma_kv_{jk} \end{bmatrix} \\ = \sum_{l=1}^k \sigma_lv_{jl}u_l,j=1,2,\dots,n \end{aligned}

式中是矩阵的第j列向量。矩阵的每一列向量是一个文本在话题向量空间的表示。

得到话题空间以及文本在话题空间的表示

你可能感兴趣的:(潜语义分析(LSA))