深入理解wmd算法

深入理解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),即

    作者:子元

    链接:https://www.zhihu.com/question/33952003/answer/134691643

原文地址:https://www.cnblogs.com/rise0111/p/11440365.html