WMD:基于词向量的文档相似度计算
EMD算法简介
该部分引用自[1]
Earth Mover’s Distance (EMD),和欧氏距离一样,他们都是一种距离度量的定义,可以用来测量某分布之间的距离。EMD主要应用在图像处理和语音信号处理领域。
EMD问题如下图所示
给定两个签名(或者叫分布、特征量集合)P和Q,P为m个特征量Pi和其权重wPi的集合,记作P={(P1,wP1),(P2,wP2),...(Pm,wPm)},如图左侧部分。同样的,还有一个分布Q,Q=(Q1,wQ1),(Q2,wQ2),...(Qn,wQn),即上图右侧部分。在计算这个这两个签名的Earth Mover's Distance(EMD)前,我们要先定义好P、Q中任意取一个特征量( Pi and Qj )之间的距离(这个距离叫ground distance,两个签名之间EMD依赖于签名中特征量之间的ground distance)。当这两个特征量是向量时得到的是欧式距离,当这两个特征量是概率分布时得到的是相对熵(KL距离/Kullback–Leibler divergence)。现在,给定两个签名(P和Q),只要计算好每两个特征量之间的距离,系统就能给出这两个签名之间的距离了。
EMD实际上是线性规划中运输问题的最优解。首先,简要描述下运输问题。我们假设这个例子是从多个工厂运输货物到多个仓库。在上图左侧,P从在P1到Pm代表m座工厂,工厂Pi有重量为wPi的货物。在上图右侧,Q从Q1到Qn代表n个仓库,仓库Qj最大容量为wQj。货物之间没有什么区别,都是同一类东西。每个仓库都希望装尽可能多的货物。如何尽可能高效把所有货物(实际上不一定是所有货物,部分也OK)从P运送到Q,就是运输问题的优化目标。在本例中,P、Q都是离散的,那么EMD可以用运输问题的Hungarian算法来计算它们之间的距离。挖个坑而已,这里不具体讨论。
这里定义,货物从工厂Pi运到仓库Qj,距离是,运送货物的重量为。这样一次运输需要的工作量为∗。显然,距离越远、或货物越重,工作量就越大。(注:运输可能是多对多的,即一个工厂运输货物到多个仓库,或者一个仓库接收多个工厂的货物。)货物从工厂运到仓库需要很多次这样的运输,经过一些计算和优化,这时我们得到了工作量总和的最小值W。
W =
距离是事先定义的,所以运输量fij是式中唯一的变量,对作如下4个约束:
(1)运输过程从工厂P到仓库Q,不能反向。
≥ 0 (1≤i≤m,1≤j≤n)
(2)从工厂Pi一次次运出去的所有货物重量的和不可能超过该工厂中所有货物的总重量wPi
≤ wPi (1≤i≤m)
(3)仓库Qj接收的所有货物总重量不可能超过其总容量wQj。
≤ wQj (1≤j≤n)
(4)总运输量的上限是工厂中货物总重、仓库总容量中的最小值。
通过词嵌入(Word Embedding),我们可以得到词语的分布式低维实数向量表示,我们可以计算词语之间的距离,即我们可以得到dij,因此可以将EMD引入自然语言处理领域。
假定数据集中只有两个文档,则这两个文档生成的归一化nBOW向量如下图所示。
综上,Matt等人提出了WMD算法,WMD是EMD的一个特殊形式。
由于文档向量是经过归一化的,与EMD算法相比,WMD没有
的约束。
WMD算法的复杂度是,其中p表示nBOW模型的长度,即数据集中不同词语的数目(去处停用词)。该算法已经有成熟的解决方法,详情参考[3]
为了降低模型的计算复杂度,Matt等人提出了WCD和RWMD两个算法,这两个算法是WMD的两个不同下限,通过降低精度来降低计算复杂度。
将作为WCD。其中X是一个的矩阵,d表示词向量的维度,p表示nBOW模型的长度。d表示一个nBOW文档向量。如下图所示
Relaxed word moving distance(RWMD)
通过放松限制条件,得到WMD的下限。通过去掉条件2,保留条件1,我们得到
我们将作为RWMD。在计算文档距离时,我们可以事先计算该数据集中,每个词语之间的相似度,复杂度为,之后计算两个文档的时,只需要。
对比实验使用的是欧式距离,欧式距离是否适用于所有的文本表示方式?譬如LDA得到的应该是一个主题概率分布向量,对于概率分布KL距离是否更合适?
[1]http://blog.mckelv.in/articles/1474.html
[2] From word embeddings to document distances, Matt J. kusner et al.
[3] Fast and robust earth mover’s distance, Pele et al.
WMD:基于词向量的文档相似度计算相关推荐
- 向量空间模型(VSM)在文档相似度计算上的简单介绍
向量空间模型(VSM:Vector space model)是最常用的相似度计算模型,在自然语言处理中有着广泛的应用,这里简单介绍一下其在进行文档间相似度计算时的原理. 假设共有十个词:w1,w2 ...
- vsm java_向量空间模型(VSM)在文档相似度计算上的简单介绍
C#实现在: 向量空间模型(VSM:Vector space model)是最常用的相似度计算模型,在自然语言处理中有着广泛的应用,这里简单介绍一下其在进行文档间相似度计算时的原理. 假设共有十个词: ...
- Python自然语言处理:文档相似度计算(gensim.models)
目录 1. tf-idf(每个文档形成一个tfidf向量) 2. 仅频率(每个文档形成一个频率值向量) 3. 仅出现与否(每个文档形成一个出现与否的二元向量) 4. Word2vec模型(每个词形成一 ...
- java文档相似度计算,计算文档与文档的相似度
最近帮很多本科毕业生做文本数据分析,经常遇到的一个需求是计算文档相似度. 思路: 抽取语料(所有文档)中的词语,构建词典(词语与数字对应起来). 根据构建的词典对每个文档进行重新编码(将文档转化为向量 ...
- 文本相似度计算(切词、生成词向量,使用余弦相似度计算)
项目需求 有多个文本,分别是正负样本,使用余弦相似度计算负样本与正样本的样本相似度,若准确率高,后期可判断新加样本与正样本的相似度. 输入如下所示: content label 今天下午,在龙口市诸由 ...
- 使用JS距离实现LDA文档相似度计算
问题提出: [1] [2] 实现源码: topicmodel = gensim.models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, ...
- 文档相似度之词条相似度word2vec、及基于词袋模型计算sklearn实现和gensim
文档相似度之词条相似度word2vec.及基于词袋模型计算sklearn实现和gensim 示例代码: import jieba import pandas as pd from gensim.mod ...
- 文档词频矩阵_论文理解:从词嵌入到文档距离
论文作者简介 本论文第一作者Matt J. Kusner是牛津大学的副教授,致力于设计适应现实世界问题需求的新机器学习模型(例如,fair algorithms, discrete generativ ...
- 四个数据欧几里得距离_从单词嵌入到文档距离 :WMD一种有效的文档分类方法...
文档分类和文档检索已显示出广泛的应用. 文档分类的重要部分是正确生成文档表示. 马特·库斯纳(Matt J. Kusner)等人在2015年提出了Word Mover's Distance(WMD)[ ...
最新文章
- 揭秘vue——vue-cli3全面配置
- 调用java_UiPath如何调用Java
- git 只merge部分_[Skill]俩小时掌握多人开发中git的主要用法
- 魔兽世界高法伤技能列表
- Web前端技术分享:什么是块元素?什么是行内元素?
- ASP.NET MVC上传图片前后台内容
- OpenGL之深入解析渲染架构和数据传递
- linux系统运维指南 pdf_linux运维:系统监控命令实践
- java 的 CopyOnWriteArrayList类
- vue 后台返回的文件流进行预览_vue实现下载文件流完整前后端代码
- hello bash
- WinForm列表控件美化
- JAVA学习笔记 || 使用Point 类的注意事项
- Axure RP使用攻略--入门级(一)
- Python定时执行程序(schedule)
- WAP、触屏版网站及APP的区别
- 官网下载git缓慢问题
- 网络游戏引入人工智能:游戏玩家并非真人
- oracle中LOB字段相关概念(自动创建LOB索引段和重建索引方法)
- idea设置控制台为单独的窗口