• 深入理解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

  • 相关阅读:
    【Linux】解压分卷压缩的zip文件
    kafka数据清理
    在 Kubernetes 上安装 Gitlab CI Runner Gitlab CI 基本概念以及 Runner 的安装
    APM监控--(三)zipkin部署手册
    K8S使用NodePort类型Service
    kubernetes基本概念 pod, service
    rsyslog配置解析
    日志收集之rsyslog to kafka
    linux auditd审计的简单使用和理解
    Nginx的try_files指令使用实例
  • 原文地址:https://www.cnblogs.com/rise0111/p/11440365.html
Copyright © 2020-2023  润新知