文章目录

  • 单词向量空间
  • 话题向量空间
  • 算法实现
    • 矩阵奇异值(SVD)分解算法
    • 非负矩阵(NMF)分解算法
      • 基本思想
      • 损失函数
        • (1)平方损失
        • (2)散度损失函数
      • 算法
        • (1)平方损失函数更新法则
        • (2)散度损失函数的更新法则
        • 算法实现

潜在语义分析(latent semantic analysis, LSA)是一种无监督方法,主要用于文本的话题分析,其特点是通过矩阵分解发现文本与单词之间的基于话题的语义关系。潜在语义分析是非概率的话题分析方法,将文本集合表示为 单词-文本矩阵,对该矩阵进行进行奇异值分解,从而得到 话题向量空间文本在话题向量空间中的表示。也可以使用矩阵的因子分解方法进行分解。

单词向量空间

基本想法:给定一个文本,用一个向量表示该文本的”语义“,向量的每一维对应一个单词,其数值为该单词在该文本中出现的频数或权值。

给定 nnn 个文本集合D={d1,d2,…dn}D = \{d_1,d_2,\ldots d_n\}D={d1​,d2​,…dn​},以及在所有文本中出现的mmm 个单词的集合W={w1,w2,…,wm}W = \{w_1,w_2,\ldots,w_m\}W={w1​,w2​,…,wm​} 。单词-文本矩阵如下:
X=[x11x12⋯x1nx21x22⋯x2n⋮⋮⋮xm1xm2⋯xmn]X= \left[ \begin{matrix} x_{11}&x_{12}&\cdots&x_{1n}\\ x_{21}&x_{22}&\cdots&x_{2n}\\ \vdots&\vdots&&\vdots\\ x_{m1}&x_{m2}&\cdots&x_{mn} \end{matrix} \right] X=⎣⎢⎢⎢⎡​x11​x21​⋮xm1​​x12​x22​⋮xm2​​⋯⋯⋯​x1n​x2n​⋮xmn​​⎦⎥⎥⎥⎤​

每个列向量对应一个文本,每一行对应单词wiw_iwi​ 。
元素xijx_{ij}xij​代表单词wiw_iwi​在文本djd_jdj​中出现的频数或者权值。权值采用单词词频—逆文本频率(TF—IDF)表示,其定义是:
TFIDFij=tfijtf⋅jlog⁡dfdfii=1,2,⋯,m;j=1,2,⋯,nTFIDF_{ij}=\frac{tf_{ij}}{tf_{\cdot j}}\log\frac{\mathrm{d}f}{\mathrm{d}f_i}\\ i=1,2,\cdots,m;\\ j=1,2,\cdots,n TFIDFij​=tf⋅j​tfij​​logdfi​df​i=1,2,⋯,m;j=1,2,⋯,n
式中:tfijtf_{ij}tfij​ 是单词wiw_iwi​ 出现在文本djd_jdj​ 中的频数,tf.jtf_{.j}tf.j​ 是文本djd_jdj​ 中出现所有单词的频数之和,dfidf_idfi​ 是含有单词wiw_iwi​ 的文本数,dfdfdf 是文本集合D的全部文本集。一个单词在一个文本中出现的频数越高,这个单词在这个文本中的重要度就越高,即tfijtf⋅j\frac{tf_{ij}}{tf_{\cdot j}}tf⋅j​tfij​​ 越大 ;一个单词在整个文本集合中出现的文本数越少,这个单词就越能表示其所在文本的特点,重要度就越高,即log⁡dfdfi\log\frac{\mathrm{d}f}{\mathrm{d}f_i}logdfi​df​ 越大;一个单词在一个文本的TF-IDF是两种重要度的积,表示综合重要度。

单词-文本矩阵的每个列向量对应一个文本,两个列向量之间的的余弦相似度表示对应文本之间的语义相似度。

缺点:单词向量通常是稀疏的。没有考虑到在自然语言处理中的一词多义以及多词一义,所以基于词向量的相似度计算不精确。

话题向量空间

(1)话题向量空间

两个文本的语义相似度可以体现在两者的话题相似度上,一个文本有若干个话题。

给定 nnn 个文本集合D={d1,d2,…dn}D = \{d_1,d_2,\ldots d_n\}D={d1​,d2​,…dn​},以及在所有文本中出现的mmm 个单词的集合W={w1,w2,…,wm}W = \{w_1,w_2,\ldots,w_m\}W={w1​,w2​,…,wm​} 。单词-文本矩阵如下:
X=[x11x12⋯x1nx21x22⋯x2n⋮⋮⋮xm1xm2⋯xmn]X=\left[\begin{matrix}x_{11}&x_{12}&\cdots&x_{1n}\\x_{21}&x_{22}&\cdots&x_{2n}\\\vdots&\vdots&&\vdots\\x_{m1}&x_{m2}&\cdots&x_{mn}\end{matrix}\right] X=⎣⎢⎢⎢⎡​x11​x21​⋮xm1​​x12​x22​⋮xm2​​⋯⋯⋯​x1n​x2n​⋮xmn​​⎦⎥⎥⎥⎤​

假设所有文本共含有kkk 个话题,单词—话题矩阵如下:
T=[t11t12⋯t1kt21t22⋯t2k⋮⋮⋮tm1t12⋯tmk]T=\left[ \begin{matrix} &t_{11} &t_{12} &\cdots &t_{1k} \\ &t_{21} &t_{22} &\cdots &t_{2k} \\ &\vdots &\vdots & &\vdots \\ &t_{m1} &t_{12} &\cdots &t_{mk} \\ \end{matrix} \right] T=⎣⎢⎢⎢⎡​​t11​t21​⋮tm1​​t12​t22​⋮t12​​⋯⋯⋯​t1k​t2k​⋮tmk​​⎦⎥⎥⎥⎤​
每个列向量对应一个话题,每一行对应单词wiw_iwi​ 。

元素tilt_{il}til​代表单词wiw_iwi​在话题tlt_ltl​中出现的权值。

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

话题—文本矩阵:
Y=[y11y12⋯y1ny21y22⋯y2n⋮⋮⋮yk1yk2⋯ykn]Y=\left[ \begin{matrix} &y_{11} &y_{12} &\cdots &y_{1n} \\ &y_{21} &y_{22} &\cdots &y_{2n} \\ &\vdots &\vdots & &\vdots \\ &y_{k1} &y_{k2} &\cdots &y_{kn} \\ \end{matrix} \right] Y=⎣⎢⎢⎢⎡​​y11​y21​⋮yk1​​y12​y22​⋮yk2​​⋯⋯⋯​y1n​y2n​⋮ykn​​⎦⎥⎥⎥⎤​
每个列向量对应一个文本,每一行对应话题tit_iti​ 。

元素yljy_{lj}ylj​代表文本djd_jdj​ 在话题tlt_ltl​中出现的权值。

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

单词—文本矩阵XXX 可以近似的表示为单词—话题矩阵TTT 与话题—文本矩阵YYY 的乘积形式这就是潜在语义分析:
X≈TYX \approx TY X≈TY
如下图所示:

LSA 是将文本在单词向量空间的表示通过线性变换转换为在话题向量空间的表示,如下图所示:

算法实现

矩阵奇异值(SVD)分解算法

文本集合D={d1,d2,⋯,dn}D=\{d_1, d_2,\cdots,d_n\}D={d1​,d2​,⋯,dn​},单词集合W={w1,w2,⋯,wm}W=\{w_1,w_2,\cdots,w_m\}W={w1​,w2​,⋯,wm​}

单词-文本矩阵Xm×nX_{m\times n}Xm×n​:
X=[x11x12⋯x1nx21x22⋯x2n⋮⋮⋮xm1xm2⋯xmn]X=\left[ \begin{matrix} &x_{11} &x_{12} &\cdots &x_{1n} \\ &x_{21} &x_{22} &\cdots &x_{2n} \\ &\vdots &\vdots & &\vdots\\ &x_{m1} &x_{m2} &\cdots &x_{mn} \\ \end{matrix} \right] X=⎣⎢⎢⎢⎡​​x11​x21​⋮xm1​​x12​x22​⋮xm2​​⋯⋯⋯​x1n​x2n​⋮xmn​​⎦⎥⎥⎥⎤​
截断奇异值分解
X≈UkΣkVkT=[u1u2⋯uk][σ10000σ20000⋱0000σk][v1Tv2T⋮vkT]X\thickapprox U_k{\Sigma_k}V_k^\mathrm{T} \bf =\left[ \begin{matrix} u_1 &u_2 &\cdots &u_k \end{matrix} \right] \left[ \begin{matrix} \sigma_1 &0 &0 &0\\ 0 &\sigma_2 &0 &0 \\ 0 &0 &\ddots &0\\ 0 &0 &0 &\sigma_k \end{matrix} \right] \left[ \begin{matrix} v_1^\mathrm{T}\\ v_2^\mathrm{T}\\ \vdots\\ v_k^\mathrm{T} \end{matrix} \right] X≈Uk​Σk​VkT​=[u1​​u2​​⋯​uk​​]⎣⎢⎢⎡​σ1​000​0σ2​00​00⋱0​000σk​​⎦⎥⎥⎤​⎣⎢⎢⎢⎡​v1T​v2T​⋮vkT​​⎦⎥⎥⎥⎤​
这中间k≤n≤mk\le n \le mk≤n≤m 这里假设了文档数量要比单词数量少。

其中:

(1) UkU_kUk​是m×km\times km×k矩阵,前kkk个相互正交的左奇异向量,UkU_kUk​ 每一列ulu_lul​表示一个话题,kkk个话题张成一个子空间,称为话题向量空间:
Uk=[u1u2⋯uk]U_k=\left[\begin{matrix}u_1&u_2&\cdots&u_k\end{matrix}\right] Uk​=[u1​​u2​​⋯​uk​​]
(2)Σ\SigmaΣ是kkk阶方阵,前kkk个最大奇异值;VkV_kVk​是n×kn\times kn×k矩阵,前kkk个相互正交的右奇异向量

。这两个矩阵的乘积,则对应了话题-文本矩阵(文本的话题空间向量表示)。所以,矩阵XXX 的第jjj列向量xjx_jxj​ 满足:
xj≈Uk(ΣkVkT)j=[u1u2⋯uk][σ1vj1σ2vj2⋮σkvjk]=∑l=1kσlvjlul,j=1,2,⋯,n\begin{aligned} x_j&\thickapprox U_k(\Sigma_k V_k^\mathrm{T})_j\\ &= \left[ \begin{matrix} u_1& u_2& \cdots& u_k \end{matrix} \right] \left[ \begin{matrix} \sigma_1v_{j1}\\ \sigma_2v_{j2}\\ \vdots\\ \sigma_kv_{jk} \end{matrix} \right] \\ &=\sum_{l=1}^k\sigma_lv_{jl}u_l,j=1,2,\cdots,n \end{aligned} xj​​≈Uk​(Σk​VkT​)j​=[u1​​u2​​⋯​uk​​]⎣⎢⎢⎢⎡​σ1​vj1​σ2​vj2​⋮σk​vjk​​⎦⎥⎥⎥⎤​=l=1∑k​σl​vjl​ul​,j=1,2,⋯,n​

式中:(ΣkVkT)j(\Sigma_k V_k^\mathrm{T})_j(Σk​VkT​)j​ 是矩阵(ΣkVkT)(\Sigma_k V_k^\mathrm{T})(Σk​VkT​) 的第jjj 列向量。每一个列向量:
[σ1v11σ2v12⋮σkv1k],[σ1v21σ2v22⋮σkv2k],…,[σ1vn1σ2vn2⋮σkvnk]\left[ \begin{matrix} \sigma_1v_{11}\\ \sigma_2v_{12}\\ \vdots\\ \sigma_kv_{1k} \end{matrix} \right] , \left[ \begin{matrix} \sigma_1v_{21}\\ \sigma_2v_{22}\\ \vdots\\ \sigma_kv_{2k} \end{matrix} \right], \ldots, \left[ \begin{matrix} \sigma_1v_{n1}\\ \sigma_2v_{n2}\\ \vdots\\ \sigma_kv_{nk} \end{matrix} \right] ⎣⎢⎢⎢⎡​σ1​v11​σ2​v12​⋮σk​v1k​​⎦⎥⎥⎥⎤​,⎣⎢⎢⎢⎡​σ1​v21​σ2​v22​⋮σk​v2k​​⎦⎥⎥⎥⎤​,…,⎣⎢⎢⎢⎡​σ1​vn1​σ2​vn2​⋮σk​vnk​​⎦⎥⎥⎥⎤​
是文本在话题向量空间的表示。

所以,通过矩阵的SVD分解进行潜在语义分析:
X≈UkΣkVkT=Uk(ΣkVkT)X\approx U_k{\Sigma_k}V_k^\mathrm{T} =U_k({\Sigma_k}V_k^\mathrm{T}) X≈Uk​Σk​VkT​=Uk​(Σk​VkT​)
从而得到了话题空间UkU_kUk​,以及文本在话题空间的表示(ΣkVkT)({\Sigma_k}V_k^\mathrm{T})(Σk​VkT​) 。

非负矩阵(NMF)分解算法

基本思想

对单词—文本矩阵进行非负矩阵分解,将其左矩阵作为话题向量空间,将其右矩阵作为文本在话题向量空间的表示。

设单词—文本矩阵是 m×nm\times nm×n的非负矩阵XXX,文本集合包含kkk个话题,对XXX进行非负矩阵分解。即求m×km\times km×k的非负矩阵和k×nk\times nk×n的非负矩阵满足
X≈WHX\thickapprox WH X≈WH

其中: W=[w1w2⋯wk]W=\left[\begin{matrix}w_1& w_2& \cdots& w_k\end{matrix}\right]W=[w1​​w2​​⋯​wk​​]表示话题向量空间,w1,w2,⋯,wkw_1, w_2, \cdots, w_kw1​,w2​,⋯,wk​表示文本集合的kkk个话题。
H=[h1h2⋯hk]H=\left[\begin{matrix}h_1& h_2& \cdots& h_k\end{matrix}\right]H=[h1​​h2​​⋯​hk​​]表示文本在话题向量空间的表示,h1,h2,⋯,hkh_1, h_2, \cdots, h_kh1​,h2​,⋯,hk​表示文本集合的nnn个文本。

非负矩阵分解有很直观的解释,话题向量和文本向量都非负,对应着“伪概率分布”,向量的线性组合表示局部构成总体

损失函数

(1)平方损失

目标函数:
min⁡W,H∣∣X−WH∣∣2s.t.W,H≥0\min\limits_{W,H}||X - WH||^2 \\ s.t. \quad W,H \ge 0 W,Hmin​∣∣X−WH∣∣2s.t.W,H≥0

(2)散度损失函数

首先看看散度的定义:
D(A∣∣B)=∑i,j(aijlog⁡aijbij−aij+bij)D(A||B) = \sum_{i,j} \left(a_{ij}\log\frac{a_{ij}}{b_{ij}} - a_{ij} + b_{ij}\right) D(A∣∣B)=i,j∑​(aij​logbij​aij​​−aij​+bij​)
称为非负矩阵A和B的散度损失函数。其下界时0,当且仅当A=B时达到下届。

当∑ijaij=∑ijbij=1\sum_{ij}a_{ij} = \sum_{ij}b_{ij}=1∑ij​aij​=∑ij​bij​=1 时,散度损失函数退化为KL散度或相对熵。

所以右散度损失函数为:
min⁡W,HD(X∣∣WH)s.t.W,H≥0\min \limits_{W,H} D\left(X||WH\right) \\ s.t. \quad W,H \ge 0 W,Hmin​D(X∣∣WH)s.t.W,H≥0

算法

(1)平方损失函数更新法则

J(W,H)=12∥X−WH∥2=12∑i,j[Xij−(WH)ij]2J(W,H)=\frac{1}{2}\|X-WH\|^2=\frac{1}{2}\sum_{i,j}[X_{ij}-(WH)_{ij}]^2 J(W,H)=21​∥X−WH∥2=21​i,j∑​[Xij​−(WH)ij​]2

采用梯度下降法求解,这里用到了矩阵求导
∂J(W,H)∂Wil=−∑j[Xij−(WH)ij]Hlj=−[(XHT)il−(WHHT)il]∂J(W,H)∂Hlj=−[(WTX)lj−(WTWH)lj]\begin{aligned} \frac{\partial J(W,H)}{\partial W_{il}}&=-\sum_j[X_{ij}-(WH)_{ij}]H_{lj}=-[(XH^\mathrm{T})_{il}-(WHH^\mathrm{T})_{il}]\\ \frac{\partial J(W,H)}{\partial H_{lj}}&=-[(W^\mathrm{T}X)_{lj}-(W^\mathrm{T}WH)_{lj}] \end{aligned} ∂Wil​∂J(W,H)​∂Hlj​∂J(W,H)​​=−j∑​[Xij​−(WH)ij​]Hlj​=−[(XHT)il​−(WHHT)il​]=−[(WTX)lj​−(WTWH)lj​]​
根据更新规则有
Wil=Wil+λil[(XHT)il−(WHHT)il]Hlj=Hlj+μlj[(WTX)lj−(WTWH)lj]λil=Wil(WHHT)ilμlj=Hlj(WTWH)ljW_{il}=W_{il}+\lambda_{il}[(XH^\mathrm{T})_{il}-(WHH^\mathrm{T})_{il}]\\ H_{lj}=H_{lj}+\mu_{lj}[(W^\mathrm{T}X)_{lj}-(W^\mathrm{T}WH)_{lj}]\\ \lambda_{il}=\frac{W_{il}}{(WHH^\mathrm{T})_{il}}\\ \mu_{lj}=\frac{H_{lj}}{(W^\mathrm{T}WH)_{lj}} Wil​=Wil​+λil​[(XHT)il​−(WHHT)il​]Hlj​=Hlj​+μlj​[(WTX)lj​−(WTWH)lj​]λil​=(WHHT)il​Wil​​μlj​=(WTWH)lj​Hlj​​
得到最终的乘法更新法则:
Hlj←Hlj(WTX)lj(WTWH)ljWil←Wil(XHT)il(WHHT)ilH_{lj}\leftarrow H_{lj}\frac{(W^\mathrm{T}X)_{lj}}{(W^\mathrm{T}WH)_{lj}}\\ W_{il}\leftarrow W_{il}\frac{(XH^\mathrm{T})_{il}}{(WHH^\mathrm{T})_{il}} Hlj​←Hlj​(WTWH)lj​(WTX)lj​​Wil​←Wil​(WHHT)il​(XHT)il​​

(2)散度损失函数的更新法则

散度乘法更新法则如下:
Hlj←Hlj∑i[WilXij/(WH)ij]∑iWilWil←Wil∑j[HljXij/(WH)ij]∑jHljH_{lj}\leftarrow H_{lj}\frac{\sum\limits_i[W_{il}X_{ij}/(WH)_{ij}]}{\sum\limits_iW_{il}}\\ W_{il}\leftarrow W_{il}\frac{\sum\limits_j[H_{lj}X_{ij}/(WH)_{ij}]}{\sum\limits_jH_{lj}} Hlj​←Hlj​i∑​Wil​i∑​[Wil​Xij​/(WH)ij​]​Wil​←Wil​j∑​Hlj​j∑​[Hlj​Xij​/(WH)ij​]​

算法实现

具体算法如下:

输入:单词-文本矩阵X≥0X\ge 0X≥0,文本集合的话题个数kkk,最大迭代次数ttt;
输出:话题矩阵WWW,文本表示矩阵HHH

  1. 初始化
    W≥0W\ge 0W≥0,并对WWW的每一列数据归一化
    H≥0H\ge 0H≥0
  2. 迭代
    对迭代次数从111到ttt执行下列步骤:
    a. 更新WWW的元素,每次迭代对WWW的列向量归一化,使基向量为单位向量
    b. 更新HHH的元素。

潜在语义分析(LSA)详解相关推荐

  1. OSPF LSA详解

    LSA详解 LSA类型      LSA1:路由器LSA,每一台路由器都会产生,列出了路由器的所有链路或接口,并指明其出站得代价 如果一台路由器是ABR或ASBR或虚链路上的一个节点,可以通过LSA1 ...

  2. ospf的一类,二类,和三类LSA详解

    ospf的一类,二类,和三类LSA详解 ospf一共有七类LSA,这里先详细介绍一下前三种(其实是后面四种还没学明白[笑哭]) 先看一下拓扑图 这个拓扑里相互通讯一共只用了三种LSA就全部搞定 第一种 ...

  3. ospf四类,五类和七类LSA详解

    ospf四类,五类和七类LSA详解 前三类的LSA可以看ospf的一类,二类和三类LSA详解 ospf的四类和五类LSA只有在有外部路由的时候才会出现 第五种L:AS-External-LSA 由AS ...

  4. 潜在语义分析 (LSA),概率潜在语义分析 (PLSA)

    目录 潜在语义分析 (latent semantic analysis, LSA) 单词向量空间与话题向量空间 单词向量空间 (word vector space) 话题向量空间 (topic vec ...

  5. SVD分解——潜在语义分析LSA(I)——概率性潜在语义分析PLSA(I)

    SVD分解 正交矩阵:若一个方阵其行与列皆为正交的单位向量,则该矩阵为正交矩阵,且该矩阵的转置和其逆相等.两个向量正交的意思是两个向量的内积为 0. 正定矩阵:如果对于所有的非零实系数向量 z z z ...

  6. OSPF之LSA详解

    种类 1 2 3 4 5 7 类lsa Type-1LSA 网络中所有设备都会发送,并且只发送一条一类LSA.一类LSA的LSID取值等同于通告者的RID. LINK---用来描述路由器接口连接情况的 ...

  7. 潜在语义分析(LSA)

    潜在语义分析(LSA) ​ 潜在语义分析LSA(Latent Semantic Analysis )也叫作潜在语义索引LSI( Latent Semantic Indexing )顾名思义是通过分析文 ...

  8. 【译】潜在语义分析Latent Semantic Analysis (LSA)

    目录 目录 概述 Tutorial LSA的工作原理 How Latent Semantic Analysis Works 实例A Small Example Part 1 - Creating th ...

  9. SVD(奇异值分解)与LSA(潜在语义分析)

    特征值与特征向量 在讲解SVD(奇异值分解)之前,首先回顾一下线性代数中的特征值分解,对于一个 n ∗ n n*n n∗n的矩阵 A A A,存在实数 λ 和 n 维向量 x \lambda和n维向量 ...

  10. 潜在语义分析(Latent Semantic Analysis)

    潜在语义分析(Latent Semantic Analysis) 潜在语义分析(Latent Semantic Analysis, LSA)是自然语言处理中的一种方法或技术.潜在语义分析(LSA)的主 ...

最新文章

  1. git如何查看sshkey_Jenkins配置SSH Key下载代码
  2. FFmpeg编写一个简单播放器 -1
  3. js前面代码出错继续运行_Node.JS实战41:让命令行变的五颜六色
  4. 什么是你的职涯“本钱”
  5. spring-基于xml的aop开发-快速入门
  6. LSMW one tip - 字段定义
  7. SWT中Button事件的几种不同写法
  8. Java9中使用jpa,jpa – eclipselink在Java 9上使用final字段进行静态编织
  9. MogDB数据库安装部署之xlog目录设置
  10. vue的介绍及基本使用(详细,好理解,示例代码)
  11. php 服务器监控源码,PHP自动Get监控源码
  12. java heapdump 分析工具_Java Heap dump文件分析工具jhat简介
  13. 自动控制原理复习第七章——非线性系统分析
  14. Java、JSP医院药库管理系统
  15. 家用风扇控制系统c语言程序设计,数字风扇控制系统的设计
  16. 阿拉伯数字转换为英语
  17. 电大计算机网络考试,电大计算机组网技术试题及答案|2017电大统考计算机试题及答案...
  18. Pick peaks
  19. 离散数学 --- 特殊关系 --- 偏序关系,哈斯图和特殊元素以及其它次序关系
  20. 同步,异步,直流电机原理

热门文章

  1. 计算机制作动画的优势,产品三维动画制作的表现优势
  2. 各省份普通高等学校在校学生数(1999-2021年)
  3. 图像位深度 8位 16位 24位 32位区别对比 RGB 真彩色 基本概念:(大小,深度,通道)位深度数据类型转换原理 Mat数据读取(opencv里的imread)
  4. Scapy 发送带数据的TCP报文 wireshark抓不到scapy发出的包
  5. 图片消除锯齿和图片锐化
  6. aps高级排程电子看板的四项原则
  7. 腾讯电脑管家(QQ电脑管家)劫持IE开始页至 http://guanjia.qq.com/comm-htdocs/quickaccess/ 的处理
  8. 合肥工业大学计算机考研经验分享
  9. mendeley的文件存储路径修改
  10. 我学炒外汇 第二十篇形态分析 -- 头肩型