基于WMD(词移距离)的句子相似度分析MATLAB代码

WMD简介

词移距离(Word Mover’s Distance)

基于WMD(词移距离)的句子相似度分析简介

WMD MATLAB代码

注意emd_mex是调用搬土距离的库Earth Mover’s Distance

RWMD(Relaxed word moving distance )

先去掉一个约束,计算相应的WMD,最终取最大值。

这两个 relax 过的优化问题的解,恰好对应于词向量矩阵的行空间和列空间上的最近邻问题,也是很好算的。最后定义 RWMD 为这两个 relaxed 优化问题的两个目标值中的最大值。

RWMD MATLAB代码

本代码不需要任何外部包

上述两个代码的distance函数

数据集来源

http://mlg.ucd.ie/datasets/bbc.html

结果

生成的WMD距离矩阵(左),归一化后可以转化为相似度矩阵(右)

结果举例:找出的相似的两个文本,下面的相似度为47.78%(与文档1最相似)

其中用不同颜色标注的是有明显相似特征的句子。

分析

通过下面的文档相似度矩阵可以发现,文档与文档间的相似度较小,这是因为数据集是真实世界的数据集,即BBC SPORT中没有两篇完全一样的报道。另外,BBC SPORT共有5个不同的类别,从实验结果可以看到相同类别间的相似度远远大于不同类别间的相似度,因此,WMD对文本分类是有一定的效果。

另外从作者的论文中实验结果可以看到,基于KNN的词移距离算法相对于大多数其他主流文本相似度分析算法来说,错误率要少很多,因此,在工业界,使用WMD来做NLP处理是非常有前景的。

最后,根据由于WMD是无监督学习,通过有监督学习的论文(Supervised word mover’s distance)中可以发现,加上了监督机制后错误率还能再下降一个层次。

需要指出的是,不能简单地添加基于度量学习的监督矩阵,一方面,在计算过程中梯度可能不存在,另一方面,基于KNN的SWMD将会耗费大量的时间,因此需要采取相关措施来解决这些问题。

SWMD简介:

基于有监督的词移距离(SWMD)简介

 

参考资料

Kusner M, Sun Y, Kolkin N, et al. From word embeddings to document distances[C]//International Conference on Machine Learning. 2015: 957-966.

 

3 评论

  1. 你好,我知道D的作用了,但我找到的emd的matlab源码,但里面有个函数是C语言的,请问能不能分享一下你的emd源码

  2. 你好,请问一下,计算欧式距离D的作用是什么,我看wmd的源码里输入参数没有D,只有两组数据及其对应权值。

    • 是的,如果有数据了那么就可以计算欧式距离D,可以参考https://www.omegaxyz.com/2018/11/22/wmd/

回复 xyjisaw取消回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注