隐语义索引(LSI):词项与文档降维后的向量表示
给定
M
×
N
M\times N
M×N 的词项文档矩阵
C
C
C,对其进行奇异值分解并把
Σ
\Sigma
Σ 中对角线上
r
−
k
r-k
r−k 个最小奇异值置为
0
0
0 后得到了在F-范数意义下最优的1秩为
k
k
k的低秩逼近
C
k
C_{k}
Ck:
C
k
=
U
Σ
k
V
T
C_{k}=U\Sigma _{k}V^{T}
Ck=UΣkVT
把后
k
k
k 位奇异值置为零后,
U
T
U^{T}
UT的后
k
k
k 列和
V
T
V^{T}
VT的后
k
k
k 行就可视为0,因为在进行矩阵乘法时它们会与零相乘,取值多少不影响计算。这样用
V
T
V^{T}
VT的列向量来表示文档向量,向量的维数由
M
M
M 减少到
k
k
k 。
一个问题是当我们计算查询query与文档document的内积相似度时为什么文档向量可以由
V
k
T
V_{k}^{T}
VkT 的列向量来表示? (查询可视为一个文档,在参考文献2中叫做伪文档)
先来看一个虚构的例子,词项文档矩阵用
C
C
C 表示
C
T
C
C^{T}C
CTC代表什么呢?它是一个方阵,每行和每列都对应
N
N
N篇文档中的一篇,
C
T
C
C^{T}C
CTC的
(
i
,
j
)
(i,j)
(i,j)元代表了第
i
i
i篇文档和第
j
j
j篇文档的相似度(内积)。由奇异值分解的证明我们可以得到
C
T
C
=
V
Σ
2
V
T
C^{T}C=V\Sigma^2V^T
CTC=VΣ2VT,
V
V
V的每一列是矩阵
C
T
C
C^{T}C
CTC的正交特征向量。我们可以把
C
T
C
C^{T}C
CTC 的
(
i
,
j
)
(i,j)
(i,j)元看成是由矩阵
V
Σ
V\Sigma
VΣ 的第
i
,
j
i,j
i,j行做内积得到的,即上图中
Σ
V
T
\Sigma V^T
ΣVT的第
i
,
j
i,j
i,j列做内积得到的。自然我们就可以把
Σ
V
T
\Sigma V^T
ΣVT作为文档向量的低维表示。要注意使用
V
T
V^T
VT 作为文档向量和使用
Σ
V
T
\Sigma V^T
ΣVT其实相差不大,对比不同文档对之间相似度的结果是一样的。因为
Σ
\Sigma
Σ是对角阵,
Σ
V
T
\Sigma V^T
ΣVT相当于对
V
T
V^T
VT的正交向量空间的基向量作了伸缩变换,两种方法计算出的文档对之间的内积只相差固定倍数2。一般LSI方法都是用
V
T
V^T
VT 的列向量作为文档向量降维后的向量表示。
对于词项term的向量,由 C C T = U Σ 2 U T CC^{T}=U\Sigma^2U^T CCT=UΣ2UT可以做出同样的推导。我们也可以得到词项的低维表示。注意 C C T CC^{T} CCT的 ( i , j ) (i,j) (i,j)代表了词项 i i i和词项 j j j共现的文档数目。
通过奇异值分解,我们把词项文档矩阵的每行(对应term)每列(对应document)映射到一个 k k k维空间(一般取几百以内), C C T CC^{T} CCT和 C T C C^{T}C CTC的 k k k个主特征向量可以定义该空间。实验证明这样的低维表示有利于解决一词多义和一义多词的问题。