Latent semantic analysis (LSA)
潜在语义分析(LSA)是一种非监督学习方法,用于文本话题分析。其特点是通过矩阵分解发现文本于单词之间的基于话题的语义关系。
潜在语义分析是一种非概率话题分析模型。步骤为:
- 先将文本集合表示为单词-文本矩阵
- 对单词-文本矩阵进行奇异值分解(SVD)或非负矩阵分解(NMF),从而得到话题向量空间,以及文本在话题向量空间的表示
1. 单词向量空间
给定由n个文本的集合 $D = \lbrace d_1, d_2, \cdots, d_n \rbrace$ ,以及所有文本中单词集 $W = \lbrace w_1, w_2, \cdots, w_m \rbrace$, 则单词在文本中出现的数据用单词-文本矩阵(word-document matrix)表示, 记为:
$$ X=\left[\begin{array}{cccc} x_{11} & x_{12} & \cdots & x_{1 n} \cr x_{21} & x_{22} & \cdots & x_{2 n} \cr \vdots & \vdots & & \vdots \cr x_{m 1} & x_{m 2} & \cdots & x_{m n} \end{array}\right] $$
其中, $x_{ij}$表示单词$w_i$在文本$d_j$中出现的频数或权值。由于单词种类多,而每个文本中单词种类通常少,所以为单词-文本矩阵是稀疏矩阵。
权值常用单词频率-逆文本频率(term frequeny-inverse document frequency, TF-IDF)表示:
$$ \mathrm{TFIDF_{ij}}=\frac{\mathrm {tf_{ij}}}{\mathrm {tf_{\cdot j}}} \log \frac{\mathrm{df}}{\mathrm {df_i}}, \quad i=1,2, \cdots, m ; \quad j=1,2, \cdots, n $$
其中,
- $\mathrm{tf}_{ij}$ 是单词 $w_i$ 在文本 $d_j$ 中的频数;
- $\mathrm{tf}_{\cdot j}$ 是 $d_j$ 中出现的所有单词频数之和;
- $\mathrm{df}_{i}$ 是含有单词$w_i$的文本数;
- $\mathrm{df}$ 是文本集合$D$的全部文本数。
单词-文本矩阵的第j列向量$x_j$表示文本$d_j$:
$$ x_{j}=\left[\begin{array}{c} x_{1 j} \cr x_{2 j} \cr \vdots \cr x_{m j} \end{array}\right], \quad j=1,2, \cdots, n $$
两个单词向量内积或者标准化内积表示对应文本之间的语义相似度, 因此文本$d_i$与$d_j$的之间的相似度:
$$ x_{i} \cdot x_{j}, \quad \frac{x_{i} \cdot x_{j}}{\left|x_{i}\right|\left|x_{j}\right|} $$
单词向量空间模型的优缺点
- 优点: 简单,计算高效
- 缺点: 一词多义(polysemy)和多词一义(synonymy)不能很好处理, 存在相似度计算不准确的问题
2. 话题(topic)向量空间
话题没有严格的定义,是指文本讨论的内容或主题。而基于话题的模型是为了解决单词向量不能很好处理一词多义(polysemy)和多词一义(synonymy)的问题。
给定由n个文本的集合 $D = \lbrace d_1, d_2, \cdots, d_n \rbrace$, 以及所有文本中单词集 $W = \lbrace w_1, w_2, \cdots, w_m \rbrace$, 则单词在文本中出现的数据用单词-文本矩阵(word-document matrix)表示, 记为:
$$ X=\left[\begin{array}{cccc} x_{11} & x_{12} & \cdots & x_{1 n} \cr x_{21} & x_{22} & \cdots & x_{2 n} \cr \vdots & \vdots & & \vdots \cr x_{m 1} & x_{m 2} & \cdots & x_{m n} \end{array}\right] $$
假设所有文本含有k个话题, 每个话题l由一个定义在单词集合W傻姑娘的m维向量:
$$ t_{l}=\left[\begin{array}{c} t_{1 l} \cr t_{2 l} \cr \vdots \cr t_{m l} \end{array}\right], \quad l=1,2, \cdots, k $$
则有话题向量矩阵T:
$$ T=\left[\begin{array}{cccc} t_{11} & t_{12} & \cdots & t_{1 k} \cr t_{21} & t_{22} & \cdots & t_{2 k} \cr \vdots & \vdots & & \vdots \cr t_{m 1} & t_{m 2} & \cdots & t_{m k} \end{array}\right] $$
3. 文本在话题向量空间的表示
文本$d_j$在单词向量空间用$x_j$表示,将$x_j$投影到话题向量空间$T$,得到话题向量空间$y_j$,$y_j$是个k维向量:
$$ y_{j}=\left[\begin{array}{c} y_{1 j} \cr y_{2 j} \cr \vdots \cr y_{k j} \end{array}\right], \quad j=1,2, \cdots, n $$
因此,话题-文本矩阵$Y$:
$$ Y=\left[\begin{array}{cccc} y_{11} & y_{12} & \cdots & y_{1 n} \cr y_{21} & y_{22} & \cdots & y_{2 n} \cr \vdots & \vdots & & \vdots \cr y_{k 1} & y_{k 2} & \cdots & y_{k n} \end{array}\right] $$
4. 单词向量空间到话题向量空间转换
因此,单词向量空间的文本向量$x_j$,可以用话题向量空间$y_j$近似表示,即以k个话题向量以$y_j$为系数的线性组合:
$$ x_{j} \approx y_{1 j} t_{1}+y_{2 j} t_{2}+\cdots+y_{k j} t_{k}, \quad j=1,2, \cdots, n $$
矩阵形式:
$$ X \approx TY $$
这就是潜在语义分析。
参考: 李航《统计学习方法》