什么是词移距离
词移距离(Word Mover’s Distance,WMD)顾名思义就是词汇移动的距离,它的提出本质上是用于衡量任意两个文本之间的语义相似度所提出的。当然从名字就可以了解到,它本身其实就是一个距离,本质上与欧氏距离和曼哈顿距离没有区别。
同时,也符合距离越大相似度越低,距离越小相似度越高的原则。
如何解释词汇移动的距离呢
两个文档A和B,A中的词汇从欧式空间上分别移动到B中词汇的位置的距离总和就可以认为是一种词移距离。
上图就可以理解为词移距离的示意图。
doc1中的word1移动到doc2中所有词汇的欧式距离之和,将所有doc1中的词汇均进行计算,就可以得到对应的词移距离。
W
M
D
(
d
o
c
1
,
d
o
c
2
)
=
∑
i
,
j
=
1
n
T
i
j
c
(
i
,
j
)
WMD(doc1,doc2)=\sum_{i,j=1}^nT_{ij}c(i,j)
WMD(doc1,doc2)=i,j=1∑nTijc(i,j)
其中的
i
j
ij
ij代表了doc1与doc2中不同的词汇,
T
i
j
T_{ij}
Tij代表了不同词汇之间的一个权重。
为什么采用词移距离衡量文本相似度
由于SimHash,编辑距离、最长公共子序列,最长公共子串,等等。包括用向量表示后的文本进行欧氏距离和余弦相似度的计算等均是没有直接针对词进行计算,并且反应的是文本本身的语义相似度。
词移距离的出现无疑是填补了这个空缺,它从本质上要优于字面相似度的方法,也比利用词袋模型表示后的文本相似度有较好的语义度量。
怎么算词移距离
计算两篇文档的词移距离,需要将两篇文档的所有词向量准备出来。
其中利用
d
o
c
1
doc1
doc1和
d
o
c
2
doc2
doc2代表两篇文档,
w
o
r
d
1
i
word_{1i}
word1i和
w
o
r
d
2
j
word_{2j}
word2j分别代表文档1和文档2中的词汇。
计算的方法如下:
W
M
D
(
d
o
c
1
,
d
o
c
2
)
=
∑
i
,
j
=
0
n
,
m
T
i
j
×
e
u
c
l
i
d
e
a
n
_
d
i
s
t
a
n
c
e
(
w
o
r
d
1
i
,
w
o
r
d
2
j
)
WMD(doc1,doc2)=\sum_{i,j=0}^{n,m}T_{ij}\times euclidean\_distance(word_{1i},word_{2j})
WMD(doc1,doc2)=i,j=0∑n,mTij×euclidean_distance(word1i,word2j)
其中 T i j T_{ij} Tij代表 w o r d 1 i word_{1i} word1i和 w o r d 2 j word_{2j} word2j计算的距离权重,其中 e u c l i d e a n _ d i s t a n c e ( w o r d 1 i , w o r d 2 j ) euclidean\_distance(word_{1i},word_{2j}) euclidean_distance(word1i,word2j)代表计算两个词汇的欧式距离,为什么采用欧氏距离,这是由于欧氏距离本身就可以代表空间中的移动距离。
其中每两个词汇的权重可以由 w o r d 1 i word_{1i} word1i和 w o r d 2 j word_{2j} word2j的语义相似度进行计算,即计算二者的余弦相似度。同样可以用移向的词汇的TF-IDF值来计算,或者其他方法。