LSA算法——潜在语义分析概率潜在语义分析

1.简介

LSA使一种无监督学习方法,主要用于文本的话题分析,其特点使通过矩阵分解发现文本与单词之间的基于话题的语义关系。潜在语义分析通常将文本集合表示为单词-文本矩阵,对单词-文本矩阵进行奇异值分解或非负矩阵分解(non-negative matrix factorizatiion,NMF),从而得到话题向量空间以及文本在话题向量空间的表示。

2.相关概念

2.1 单词向量空间
给定一个含有n个文本的集合 D = { d 1 , d 2 , . . . , d n } D=\{d_1,d_2,...,d_n\} D={d1,d2,...,dn}以及在所有文本中出现m个单词的集合 W = { w 1 , w 2 , . . . , w m } W=\{w_1,w_2,...,w_m\} W={w1,w2,...,wm},将单词在文本中出现的数据用一个m x n 单词-文本矩阵(word-document matrix)表示,记作X。 x i j x_{ij} xij表示单词 w i w_i wi在文本 d j d_j dj中出现的频数或权值。

权值通常用单词频率-逆文本频率(term frequency-inverse document frequency,TF-IDF)表示,其定义为
T F I D F i j = t f i j t f . j l o g d f d f i , i ∈ ( 1 , 2 , . . . , m ) , j ∈ ( 1 , 2 , . . . , n ) TFIDF_{ij}=\frac{tf_{ij}}{tf_{.j}}log\frac{df}{df_i},i\in{(1,2,...,m)},j\in{(1,2,...,n)} TFIDFij=tf.jtfijlogdfidf,i(1,2,...,m),j(1,2,...,n)
式子 t f i j tf_{ij} tfij是单词 w i w_i wi d j d_j dj中出现的频率, t f 。 j tf_{。j} tfj是单词 d j d_j dj中所有单词的频数和, d f i df_i dfi是含有单词 w i w_i wi的文本数, d f df df是所有文本数,综合构成单词重要度,需要说明的是式子右边,一般认为单词在整体文本中出现的越少越能代表其所在文本的特点,即越重要,即右边越大越重要

语义相似度通常使用两个单词向量的内积 x i ⋅ x j x_i·x_j xixj或标准化内积(余弦) x i ⋅ x j ∣ ∣ ∣ x i ∣ ∣ ⋅ ∣ ∣ x j ∣ ∣ \frac{x_i·x_j}{|||x_i||·||x_j||} xixjxixj表示对应的文本之间的语义相似度

优点:模型简单,计算效率高
缺点:未必能准确表达两个文本的语义相似度,因为自然语言存在一词多义性(polysemy)和多词一义性(synonymy)

2.2 话题向量空间
给定一个文本集合 D = { d 1 , d 2 , . . . , d n } D=\{d_1,d_2,...,d_n\} D={d1,d2,...,dn} 和一个相应的单词集合 W = { w 1 , w 2 , . . . , w m } W=\{w_1,w_2,...,w_m\} W={w1,w2,...,wm}构成单词-文本矩阵X,即原始的单词向量空间,每一列代表一个文本在单词向量空间的表示。假设所有文本含有k个话题,假设每个话题由一个定义在单词集合W上的m维向量表示。称为话题向量 t l = [ t 1 l , t 2 l , . . . t m l ] T t_l=[t_{1l},t_{2l},...t_{ml}]^T tl=[t1l,t2l,...tml]T。其中 t i l t_{il} til是单词在话题的权值,权值越大该单词在该话题的重要度越高。单词-话题构成矩阵T。使用矩阵Y表示话题-文本矩阵。
使用T及Y可以近似表示X,即潜在语义分析
X = T Y X=TY X=TY

2.2.1 奇异值分解
通过奇异值分解,左奇异向量即单词-话题矩阵,对焦矩阵与右奇异向量乘积则Y,由此进行潜在语义分析。

2.2.2 非负矩阵分解
给定一个非负矩阵X>=0,找到两个非负矩阵m x k W与 k x n H使得 X = W H X=WH X=WH(近似相等)
非负矩阵分解可以形式化为最优化问题,即使得目标函数 ∣ ∣ X − W H ∣ ∣ 2 ||X-WH||^2 XWH2关于W H最小化,满足条件二者非负,损失函数可以使用平方损失 ∣ ∣ A − B ∣ ∣ 2 = ∑ ( a i j − b i j ) 2 ||A-B||^2=\sum{(a_{ij}-b_{ij})^2} AB2=(aijbij)2或散度(divergence) D ( A ∣ ∣ B ) = ∑ ( a i j l o g a i j b i j − a i j + b i j ) D(A||B)=\sum{}(a_{ij}log\frac{a_{ij}}{b_{ij}}-a_{ij}+b_{ij}) D(AB)=(aijlogbijaijaij+bij)

3. 算法

  • 输入:单词-文本矩阵X非负,文本集合话题个数k,最大迭代次数t
  • 输出:话题矩阵W,文本矩阵H
  • 初始化:W列向量归一化
  • 迭代,进行最多t次迭代
  • W i l = W i l + λ i l [ ( X H T ) i l − ( W H H T ) i l ] W_{il}=W_{il}+\lambda_{il}[(XH^T)_{il}-(WHH^T)_{il}] Wil=Wil+λil[(XHT)il(WHHT)il]
  • H l j = H l j + μ l j [ ( W T X ) l j − ( W T W H ) l j ] H_{lj}=H_{lj}+\mu_{lj}[(W^TX)_{lj}-(W^TWH)_{lj}] Hlj=Hlj+μlj[(WTX)lj(WTWH)lj]
  • 步长分别取 λ i l = W i l ( W H H T ) i l \lambda_{il}=\frac{W_{il}}{(WHH^T)_{il}} λil=(WHHT)ilWil, μ l j = H l j ( W T W H ) l j \mu_{lj}=\frac{H_{lj}}{(W^TWH)_{lj}} μlj=(WTWH)ljHlj

4. 概率潜在语义分析

4.1 生成模型
假设存在单词集合W,含有m个单词,文本集合D,含有n个文本,话题集合Z,含有k个话题(预先设定,d取值文本,w取值单词,z取值话题
概率分布 P ( d ) P(d) P(d),条件概率分布 P ( z ∣ d ) , P ( w ∣ z ) P(z|d),P(w|z) P(zd)P(wz)

  • 依据 P ( d ) P(d) P(d),从文本集合中随机选取一个文本d,共生成N个文本,针对每个文本,执行以下操作
  • 在文本d给定的条件下,依据条件概率分布 P ( z ∣ d ) P(z|d) P(zd),从话题集合随机选取一个话题z,共生成L个话题,此处L指文本长度
  • 在话题z给定的条件下,依据条件概率分布 P ( w ∣ z ) P(w|z) P(wz),从单词集合中随机选取一个单词w
  • 文本-单词共现数据T的生成概率为所有单词文本对的生成概率的乘积
  • P ( T ) = ∏ ( w , d ) = P ( w , d ) n ( w , d ) P(T)=\prod_{(w,d)}=P(w,d)^{n(w,d)} P(T)=(w,d)=P(w,d)n(w,d) n(w,d)表示(w,d)出现次数,每个单词文本对生成概率为
  • P ( w , d ) = P ( d ) ∑ z P ( z ∣ d ) P ( w ∣ z ) P(w,d)=P(d)\sum_zP(z|d)P(w|z) P(w,d)=P(d)zP(zd)P(wz)

4.2 共现模型
定义与生成模型等价的共现模型

4.3 算法

  • 输入:设单词集合为W, 文本集合为D,话题集合为Z,共线数据 n ( w i , d j ) , i ∈ r a n g e ( m + 1 ) , j ∈ r a n g e ( n + 1 ) {n(w_i,d_j)},i\in{range(m+1)}, j\in{range(n+1)} n(wi,dj),irange(m+1),jrange(n+1)
  • 输出: P ( w i ∣ z k ) P(w_i|z_k) P(wizk) P ( z k ∣ d j ) P(z_k|d_j) P(zkdj)
  • 设置参数初始值
  • EM法迭代:即求平均,再求极大值
  • E步:
  • P ( z k ∣ w i , d j ) = P ( w i ∣ z k ) P ( z k ∣ d j ) ∑ k = 1 K P ( w i ∣ z k ) P ( z k ∣ d j ) P(z_k|w_i,d_j)=\frac{P(w_i|z_k)P(z_k|d_j)}{\sum^K_{k=1}P(w_i|z_k)P(z_k|d_j)} P(zkwi,dj)=k=1KP(wizk)P(zkdj)P(wizk)P(zkdj)
  • M步:
  • P ( w i ∣ z k ) = ∑ j = 1 N n ( w i , d j ) P ( z k ∣ w i , d j ) ∑ m = 1 M ∑ n = 1 N n ( w i , d j ) P ( z k ∣ w i , d j ) P(w_i|z_k)=\frac{\sum_{j=1}^Nn(w_i,d_j)P(z_k|w_i,d_j)}{\sum_{m=1}^M\sum_{n=1}^Nn(w_i,d_j)P(z_k|w_i,d_j)} P(wizk)=m=1Mn=1Nn(wi,dj)P(zkwi,dj)j=1Nn(wi,dj)P(zkwi,dj)
  • P ( z k ∣ d j ) = ∑ i = 1 M n ( w i , d j ) P ( z k ∣ w i , d j ) n ( d j ) P(z_k|d_j)=\frac{\sum^M_{i=1}n(w_i,d_j)P(z_k|w_i,d_j)}{n(d_j)} P(zkdj)=n(dj)i=1Mn(wi,dj)P(zkwi,dj)
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值