美文网首页
潜在语义分析(LSA)

潜在语义分析(LSA)

作者: 单调不减 | 来源:发表于2019-06-20 13:40 被阅读0次

    潜在语义分析(Latent Semantic Analysis,LSA)是一种无监督学习方法,主要用于分本的话题分析,其特点是通过矩阵分解发现文本与单词之间的基于话题的语义关系。

    1、单词向量空间

    文本信息处理的一个核心问题是对文本的语义内容进行表示,并进行文本之间的语义相似度计算。最简单的方法是利用向量空间模型(Vector Space Model,VSM)。向量空间模型的基本想法是,给定一个文本,用一个向量表示该文本的“语义”,向量的每一维对应一个单词,其数值为该单词在该文本中出现的频数或权值。这里的基本假设是文本中所有单词的出现情况表示了文本的语义内容。向量空间的度量,如内积或标准化内积表示文本之间的“语义相似度”。

    严格定义如下:给出一个含有n个文本的集合D=\{d_1,d_2,\dots,d_n\}以及在所有文本中出现的m个单词的集合W=\{w_1,w_2,\dots,w_m\}。将单词在文本中出现的数据用一个单词-文本矩阵表示,记作X

    X=\begin{bmatrix} x_{11} & x_{12} & \dots & x_{1n}\\ x_{21} & x_{22} & \dots & x_{2n}\\ \dots & \dots & \dots & \dots\\ x_{m1} & x_{m2} & \dots & x_{mn}\\ \end{bmatrix} \qquad

    x_{ij}表示单词w_i在文本d_j中出现的频数或权值。这是一个稀疏矩阵。

    权值常用单词频率-逆文本频率(term frequency-inverse document frequency,TF-IDF)表示,其定义是:

    TFIDF_{ij}=\frac{ tf_{ij}}{tf_{.j}}\log\frac{df}{df_i}

    其中tf_{ij}是单词w_i出现在文本d_j中的频数,tf_{.j}是文本d_j中出现的所有单词的频数之和,df_i是含有单词w_i的文本数,df是文本集合D的全部文本数。

    这个概念的解释我在读吴军先生的《数学之美》时见过,至今记忆犹新。举例来说,很多单词在所有文本中出现频率都很高(比如I,is,are,and)但它们并不能代表文本的语义,因为这些单词在所有文本中都出现,因此它们并不能代表文本的特点。这就是不能直接使用单词频率的原因。为了度量一个单词能多大程度地反映文本的特点,可以使用逆文本频率,即一个单词在整个文本集合中出现的文本越少,这个单词越能表示其所在文本的特点,重要度越高。这就是逆文本频率的含义。综合逆文本频率(度量单词多大程度反映文本特点)以及单词频率(度量单词对文本的重要性)就得到了TF-IDF

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

    \frac{x_i\cdot x_j}{||x_i||\ ||x_j||}

    VSM的优点是模型简单,计算效率高,因此单词向量通常是稀疏的,两个向量的内积计算只需要在同不为零的维度上进行即可。但VSM也有一定局限性,那就是有时内积相似度未必能准确表达两个文本的语义相似度,因为单词具有一词多义性(polysemy)和多词一义性(synonymy),所以基于单词向量的相似度计算存在不精确的问题。

    2、话题向量空间

    所谓话题(topic),并没有严格定义,就是指文本讨论的内容和主题。一个文本一般含有若干话题。

    单词-文本矩阵定义同上,记为X=[x_1\quad x_2\quad \dots\quad x_n]

    另外我们定义单词-话题矩阵,记作T

    T= \begin{bmatrix} t_{11} & t_{12} & \dots & t_{1k}\\ t_{21} & t_{22} & \dots & t_{2k}\\ \dots & \dots & \dots & \dots\\ t_{m1} & t_{m2} & \dots & t_{mk}\\ \end{bmatrix} \qquad

    矩阵T也可以写作T=[t_1\quad t_2\dots\quad t_k]k为所有文本的话题数)。

    其中t_{il}表示单词w_i在话题t_l的权值,i=1,2,\dots,m,权值越大,该单词在该话题中重要度越高。这k个话题向量t_1,t_2\dots,t_k张成一个话题向量空间,维数为k

    接下来我们定义话题-文本矩阵

    Y= \begin{bmatrix} y_{11} & y_{12} & \dots & y_{1n}\\ y_{21} & y_{22} & \dots & y_{2n}\\ \dots & \dots & \dots & \dots\\ y_{k1} & y_{k2} & \dots & y_{kn}\\ \end{bmatrix} \qquad

    矩阵Y也可以写作T=[y_1\quad t_2\dots\quad y_n]

    其中y_{lj}表示话题t_l在文本d_j的权值,l=1,2,\dots,k,权值越大,该话题在该文本中重要度越高。

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

    x_j\approx y_{1j}t_1+y_{2j}t_2+\dots+y_{kj}t_k,\quad j=1,2,\dots,n

    x_j表示单词在文本d_j的权值,y_{lj}表示话题t_l在文本d_j的权值,t_l表示单词在话题t_l的权值。即:

    X\approx TY

    这就是潜在语义分析。

    进行潜在语义分析,需要同时决定两部分内容——单词-话题矩阵T和话题-文本矩阵Y,使两者乘积是原始矩阵数据的近似。这一结果完全从单词-文本矩阵X中获得。

    3、潜在语义分析算法

    潜在语义分析的思路是对单词-文本X矩阵进行奇异值分解,将其左矩阵作为单词-话题矩阵T,将其对角矩阵和右矩阵的乘积作为话题-文本矩阵Y

    具体来说,潜在语义分析根据固定的话题个数k对单词-文本矩阵X进行截断奇异值分解:

    X\approx U_k \Sigma_k V_k^T

    U_km\times k矩阵,它的列由X的前k个互相正交的左奇异向量组成,\Sigma_kk阶对角阵,对角元素为前k个最大奇异值,V_kn\times k矩阵,它的列由X的前k个互相正交的右奇异向量组成。

    从而U_k为单词-话题矩阵T(话题空间),\Sigma_k V_k^T为话题-文本矩阵Y(文本在话题空间的表示)。

    4、非负矩阵分解算法

    若一个矩阵所有元素非负,则称该矩阵为非负矩阵,若矩阵X非负,记为X\geq 0

    给定非负矩阵X\geq 0,找到两个非负矩阵W\geq 0H\geq 0

    X\approx WH

    称为矩阵X的非负矩阵分解。

    假设非负矩阵X是一个m\times n矩阵,非负矩阵WH分别为m\times k矩阵和k\times n矩阵。假设k<\min(m,n),即WH小于原矩阵X,所以非负矩阵分解是对原数据的压缩。

    非负矩阵分解可形式化为最优化问题来求解。首先定义损失函数。

    第一种是平方损失,两非负矩阵AB的平方损失函数为:

    ||A-B||^2=\sum_{i,j}(a_{ij}-b_{ij})^2

    第二种是散度,两非负矩阵AB的散度损失函数为:

    D(A||B)=\sum_{i,j}(a_{ij}\log\frac{a_{ij}}{b_{ij}}-a_{ij}+b_{ij})

    接着定义最优化问题:

    \begin{alignat*}{2} \min_{W,H} \quad & ||X-WH||^2\\ \mbox{s.t.}\quad &W,H\geq 0\\ \end{alignat*}

    或者:

    \begin{alignat*}{2} \min_{W,H} \quad & D(X||WH)\\ \mbox{s.t.}\quad &W,H\geq 0\\ \end{alignat*}

    使用梯度下降法求解得到的W,H可分别作为话题矩阵和文本表示矩阵。

    相关文章

      网友评论

          本文标题:潜在语义分析(LSA)

          本文链接:https://www.haomeiwen.com/subject/btorqctx.html