潜在语义分析

  2019-12-10 


latent semantic analysis ,LSA

潜在语义分析是一种基于矩阵分解的构建话题向量空间的方法,话题就是潜在的语义

Basic

$D$是文本集,$d$是一个文本,$W$是单词集,$w$是一个单词,$D=\{d_1,d_2,\cdots,d_n\},W=\{w_1,w_2,\cdots,w_m\}$

$w$,word,单词;$d$,document,文本;$t$,topic,话题

单词向量空间

  1. 单词向量空间

    单词向量空间模型(word vector space model)

    一个向量表示一个文本$d$,每一个维度对应一个单词$w$;具体表示即单词文本矩阵

    (注意不是词向量组成的空间)

    具体地,该空间可由单词文本矩阵表示:

  2. 单词文本矩阵(word-document matrix):

    [行代表一个单词,列代表一个文本]

    $x_{ij}$:单词$w_i$在文本$d_j$中出现的频数权值

    权值通常用TFIDF表示

    $X$是一个稀疏矩阵

    $X$的一个列向量代表一个文本,第$j$列向量$x_j$表示文本$d_j$;$X$也可写作$X=[x_1,x_2,\cdots,x_n]$

    两个单词向量内积表示对应的文本之间语义相似度:$x_i·x_j$(标准化内积)(两个文本中共同出现的单词越多,其语义内容就越接近,对应的单词向量同不为零的维度越多,内积就越大,两个文本的语义就越相似)

  3. 频率-逆文本频率 TFIDF (term frequency-inverse document frequency):

    频率 TF:$\frac{tf_{ij}}{tf_{\cdot j}}$,表示单词$w_i$在文本$d_j$出现的频率,越大代表单词$w_i$越重要

    文本频率:$\frac{df_i}{df}$,表示含有单词$w_i$的文本在文本集合$D$中出现的频率,越小代表单词$w_i$越重要,因为该单词在整个文本集中出现的越少,越能代表该文本的特点;$df$的$d$不是求导…….

    逆文本频率 IDF:$\frac{df}{df_i}$,文本频率的导数,所以越大代表单词$w_i$越重要

    于是TF-IDF作为两种重要度的积整体表示了$w_i$的综合重要度

单词向量空间存在的问题:一词多义问题;多词一义问题

话题向量空间

  1. 话题向量空间

    topic vector space

    一个向量表示一个话题$t$,每一个维度对应一个单词$w$;具体表示即单词话题矩阵

    于是多义词可以表示不同的话题,文本由话题表示,那么就解决了一词多义问题和多词一义问题

    如果两个文本话题相似,那么文本的语义也应该相似

  1. 单词话题矩阵(word-topic matrix)

    [行代表一个单词,列代表一个话题],该矩阵并没有直接表示文本

    $t_{il}$:单词$w_i$在话题$t_l$的权值

    $T$的一个列向量代表一个话题$t$,一共有$k$个话题,$T$也可以写作$T=[t_1,t_2,\cdots,t_k]$

  2. 话题文本矩阵(topic-document matrix)

    [行代表一个话题,列代表一个文本]

    $y_{lj}$:文本$d_j$在话题$t_l$的权值

    $Y$的一个列向量$y_j$代表一个文本$y$,一共有$n$个文本,$Y$也可以写作$Y=[y_1,y_2,\cdots,y_n]$

潜在语义分析:从单词向量空间到话题向量空间的线性变换

于是可以看出,我们通过[话题向量空间:单词-话题-文本]的表示方法来近似表示[单词向量空间:单词-文本] 直接表示方法:

将[单词-文本矩阵]表示为[单词-话题矩阵]×[话题-文本矩阵],此即潜在语义分析

具体操作就是对$X$进行矩阵分解

算法

基于矩阵的奇异值分解算法

SVD详见矩阵计算与矩阵分解-奇异值分解

将单词文本矩阵$X$进行截断奇异值分解,得到$X≈U_k\Sigma_kV_k^T=U_k(\Sigma_kV_k^T)$

比照话题向量空间形式:$X=TY$

那么可以看作,单词话题矩阵为:$T=U_k$,话题文本矩阵为:$Y=\Sigma_kV_k^T$

LSA完毕

基于非负矩阵分解算法

non-negative matrix factorization,NMF

将矩阵分解问题$X=WH$($X$称为基矩阵,$H$称为系数矩阵)转化为

对其求解会遇到两个问题:①多变量$W,H$,那么目标函数只是对其中一个变量的凸函数,只能找到局部最优 ②如果使用梯度下降,收敛速度缓慢

提出了新的解决办法——乘法更新规则:基于梯度下降算法,[交替]更新$W,H$ (证略)

对于上面的目标函数,定义用于梯度下降的目标损失函数:

然后对$X,H$分别求偏导计算梯度,选择步长,归一化(见下),交替更新梯度

每一次更新迭代对$W$的列向量归一化,使基向量为单位向量

具体算法略


且听风吟