深入理解wmd算法
Posted rise0111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入理解wmd算法相关的知识,希望对你有一定的参考价值。
WMD(Word Mover’s Distance)1是2015年提出的一种衡量文本相似度的方法。它具有以下几个优点:
- 效果出色:充分利用了word2vec的领域迁移能力
- 无监督:不依赖标注数据,没有冷启动问题
- 模型简单:仅需要词向量的结果作为输入,没有任何超参数
- 可解释性:将问题转化成线性规划,有全局最优解
- 灵活性:可以人为干预词的重要性
当然它也有一些缺点:
- 词袋模型,没有保留语序信息
- 不能很好的处理词向量的OOV(Out of vocabulary)问题
- 处理否定词能力偏差
- 处理领域同义词互斥词的能力偏差
- 时间复杂度较高:O(p3logp)O(p3log?p)(其中,p代表两篇文本分词去重后词表的大小)
在利用WMD计算两条文本的相似度时,会进行以下步骤:
利用word2vec将词编码成词向量
去掉停用词
计算出每个词在文本中所占权重,一般用词频来表示
对于每个词,找到另一条文本中的词,确定移动多少到这个词上。如果两个词语义比较相近,可以全部移动或移动多一些。如果语义差异较大,可以少移动或者不移动。用词向量距离与移动的多少相乘就是两个词的转移代价
保证全局的转移代价加和是最小的
文本1的词需要全部移出,文本2的词需要全部移入
我们先把文档看成词的一个分布(比如使用归一化的词频特征)。首先考虑如何令“文档 1 中的每个词以不同权重匹配到另一个文档的所有词上”。如下图,很简单,我们允许“部分匹配”就可以了。这里我们把匹配看成是把文档 1 中的词“移动”到文档 2 中的词的一个过程,移动代价是两个词向量的 Euclidean 距离。比如说“Obama”在文档 1 中的权重(概率)是 0.5,如果我把 0.4 移动到“President”、0.05 移动到“greets”……等等,移动代价就是
这里应该有个约束:把“Obama”分到文档 2 中词的权重的和应该等于它在文档 1 中的权重,即。现在考虑“强制性”这个特性。要想文档 2 的词都会被匹配到,我们可以同时要求,流进文档 2 中某个词的权重(比如对于“Press”,流进它的权重 = “Obama”→“press” 的权重 + “speaks”→“press” 的权重 + “media”→“press” 的权重 + ……),等于它在文档 2 中的权重。这样对于每个符合以上两个约束的词的移动方式,我们都有一个总的移动代价。我们令最小的移动代价为两个文档之间的 Word Mover‘s Distance(WMD),即
作者:子元
以上是关于深入理解wmd算法的主要内容,如果未能解决你的问题,请参考以下文章