文档分类和文档检索已显示出广泛的应用。 文档分类的重要部分是正确生成文档表示。 马特·库斯纳(Matt J. Kusner)等人在2015年提出了Word Mover’s Distance(WMD)[1],其中将词嵌入技术用于计算两个文档之间的距离。 使用给定的预训练单词嵌入,可以通过计算“一个文档的嵌入单词需要“移动”以到达另一文档的嵌入单词所需的最小距离”来用语义含义来度量文档之间的差异。

在以下各节中,我们将讨论WMD的原理,WMD的约束和近似,预取和修剪,WMD的性能。

WMD原理

如前所述,WMD尝试测量两个文档的语义距离,并且语义测量是通过word2vec嵌入实现的。 具体而言,在他们的实验中使用了跳过语法word2vec。 一旦获得单词嵌入,文档之间的语义距离就由以下三个部分定义:文档表示,相似性度量和(稀疏)流矩阵。

文本的文字表示

文本文档用向量d表示,其中每个元素表示文档中单词的归一化频率,即

注意,文档表示d是高维空间中的稀疏向量。语义相似性度量定义

两个给定单词xi和xj在嵌入空间中的欧几里得距离定义如下:

在WMD中,xi和xj来自不同的文档,而c(i,j)是从单词xi到xj的“移动成本”。

流矩阵定义

假设有一个原始文件A和一个目标文件B。定义了流矩阵T。 流矩阵中的每个元素T _ {ij}表示单词i(在文档A中)转换为单词j(在文档B中)的次数,然后通过词汇中单词的总数对值进行归一化。 也就是说,

因此,语义距离定义如下:

通过调整T中的值,可以获得两个文档之间的语义距离。 距离也是将所有单词从一个文档移动到另一个文档所需的最小累积成本。
约束和下界近似

最低累计成本有两个限制,即

对于文档A中的任何单词i,文档B中的任何单词j

总的来说,受约束的最小累积成本的计算复杂度为O(p³logp),其中p是文档中唯一单词的数量。 也就是说,WMD可能不适用于大型文档或具有大量唯一单词的文档。 在本文中,作者提出了两种加快WMD计算的方法。 两种加速方法均导致实际WMD值近似。

Word centroid distance(WCD)

通过使用三角不等式,可以证明累积成本始终大于或等于由单词嵌入的平均值加权的文档向量之间的欧几里得距离。这样,计算复杂度降低到O(dp)(在此,d代表文档向量d的维。)

Relaxed WMD(RWMD)

目标有两个限制。如果删除一个约束,则累积成本的最佳解决方案是将一个文档中的每个单词都移动到另一个文档中最相似的单词上。这意味着成本最小化问题变成了在嵌入空间中找到两个单词嵌入的最小欧几里得距离。因此,通过删除一个约束并保留另一个约束,可以得到两个近似的下限:我们称它们为l1(对i保持约束)和l2(对j保持约束)。更严格的近似值l可以定义为:

l = max(l1,l2)

利用这种近似的累积成本(作者称为“松弛WMD”(RWMD)),计算复杂度降至O(p²)。

预取和修剪

为了找到有效时间的查询文档的k个最近邻居,可以同时使用WCD和RWMD来减少计算成本。

  1. 使用WCD估计每个文档到查询文档之间的距离。
  2. 按升序对估计的距离进行排序,然后使用WMD计算到这些文档的前k个确切的距离。
  3. 遍历其余文档(不在上一步的前k个文档中),计算RWMD下限。
  4. 如果文档(到查询文档)的RWMD近似值大于到前k个文档的所有计算的WMD距离(在步骤2中),则意味着该文档不得位于查询文
  5. k个最近邻居中,因此 可以修剪。 否则,将计算确切的WMD距离并更新到k个最近的邻居。

WMD性能表现

作者在kNN上下文中对八个文档数据集评估了WMD性能,并将其与BOW,TFIDF,BM25 LSI,LDA,mSDA和CCG进行了比较。 他们的实验表明,WMD在8个数据集中的6个数据集中表现最佳。 对于其余两个数据集,即使WMD的性能不佳,错误率也非常接近最佳性能者。

一个有趣的实验结果是作者进行了一项实验,如果下限用于最近邻居检索,则评估下限的紧密度与kNN错误率之间的关系。 它表明紧密度并不能直接转化为检索精度。 在作者的陈述中,一次仅受到一个约束的RWMD的紧密度(称为RWMDc1和RWMDc2)明显高于WCD,但就kNN精度而言,RWMDc1和RWMDc2的性能都比WCD差。 就我的新观点而言,这可能是由于对RWMDc1和RWMDc2施加了不对称约束。 因为仅剩下一个约束得出距离度量的非严格定义,所以RWMDc1和RWMDc2都不是严格的距离近似值。

潜在的工作扩展

WMD在文件分类任务中表现出色。 我认为,可以做一些试验来进一步探究WMD。

作者使用了不同的数据集进行单词嵌入生成,但是嵌入方法已通过skip-gram固定在word2vec上。 通过将word2vet更改为其他方法(例如GloVe),看到嵌入方法对WMD的重要性将很有趣。

请注意,WMD无法处理词汇量(OOV)数据,并且在距离计算中遇到时会直接丢弃OOV单词。 这可能是WMD性能未超过所有数据集的所有其他方法的原因。 可以基于上下文信息构建OOV词的嵌入。 例如,BiLSTM语言模型可以帮助生成OOV词嵌入[2]。 同样,字节对编码(BPE)也可以建立OOV词嵌入。

引用

[1]From Word Embeddings To Document Distances http://proceedings.mlr.press/v37/kusnerb15.pdf

[2] Language Modelling for Handling Out-of-Vocabulary Words in Natural Language Processing https://www.researchgate.net/publication/335757797LanguageModellingforHandlingOut-of-VocabularyWordsinNaturalLanguageProcessing?showFulltext=1&linkId=5d7a26a04585151ee4afb0c5

[3] WMD 代码 https://github.com/mkusner/wmd

作者:Adjacent

deephub翻译组

四个数据欧几里得距离_从单词嵌入到文档距离 :WMD一种有效的文档分类方法...相关推荐

  1. 和佳股份有没有纳米机器人_新高赛复赛入围项目(49)一种纳米硅质绝热材料及其制备方法...

    点击上方"蓝字"关注我们 "2020中国·山东新旧动能转换高价值专利培育大赛"(简称"新高赛")是由山东省市场监督管理局(知识产权局)主办, ...

  2. ajax后台返回数据中文乱码_解决Jmeter返回值显示中文乱码 的三种方法及设置随机动态参数(非原创侵删)...

    一.Jmeter返回值显示中文乱码解决方法 第一种解决方法: 1. 点击线程组--添加--后置处理器--BeanShell后置处理程序 2.点击BeanShell后置处理程序,编写:prev.setD ...

  3. 两个形状不同的长方形周长_借助思维导图玩转小学阶段三种不同计算图形周长的方法!...

    小数老师说: 认识长方形.正方形.三角形等平面图形,周长是这些图形的一个基本特性.展开对周长的学习,首先要理解周长的意义,通常可以通过结合实例来理解,也可以经过实际的描边来具体感受周长的实际意义. 点 ...

  4. TensorFlow2简单入门-单词嵌入向量

    用数字表示文本 机器学习模型将向量(数字数组)作为输入.在处理文本时,我们必须先想出一种策略,将字符串转换为数字(或将文本"向量化"),然后再其馈入模型.在本部分中,我们将探究实现 ...

  5. Python +大数据-知行教育(四)-意向用户主题看板_全量流程

    Python +大数据-知行教育(四)-意向用户主题看板_全量流程 5. 意向用户主题看板_全量流程 5.1 需求分析 主要分析什么内容:1) 每一个需求涉及到那些维度, 那些直白2) 每一个需求涉及 ...

  6. python创建学生类姓名学号_定义一个学生类,包含学号、姓名、平时成绩和考核成绩四个数据成员和以下成员方法(用Python语言):...

    定义一个学生类,包含学号.姓名.平时成绩和考核成绩四个数据成员和以下成员方法(用Python语言):Python实验题目:类与文件实验要求:1.定义类2.定义并使用类对象3.打开和存取文件... 定义 ...

  7. 四、CDA数据分析师系列_从零进阶_数据分析的统计基础_简明笔记

    目录 1.数据分析概述 1.1 什么是数据分析 1.2 数据分析六部曲 1.2.1 明确分析目的和内容 1.2.2 数据收集 1.2.3 数据预处理 1.2.4 数据分析 1.2.5 数据展现 1.2 ...

  8. python英语单词 扇贝英语安卓下载_扇贝单词app下载-扇贝单词英语版 安卓版v3.6.503-pc6手机下载...

    扇贝单词app是一款可以和小伙伴一起学英语背单词的app,扇贝单词英语版属于千万用户的背单词神器,让你的英语水平突飞猛进,你确定不要来试一试吗? 软件介绍 扇贝单词英语版是一款很实用的英语单词学习软件 ...

  9. python 文本相似度计算函数_四种计算文本相似度的方法对比

    作者:Yves Peirsman 编译:Bing 编者按:本文作者为Yves Peirsman,是NLP领域的专家.在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的.词嵌入(w ...

最新文章

  1. 面向汽车应用的硬件推理芯片
  2. 从Google Scholar看各大科技公司的科研水平
  3. TP、TN、FP、FN
  4. python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器
  5. 数组工具类Arrays
  6. Socket.IO for Unity 简要介绍
  7. 【ESSD技术解读-01】 云原生时代,阿里云块存储 ESSD 快照服务如何被企业级数据保护所集成?
  8. while循环中指针会自动释放吗_C++】C++常见面试题汇总_持续更新中...
  9. 【linux】telnet ctrl+c 不退出问题解决
  10. ajax——优化0126(增删改查:添加查看详情,返回结果类型为JSON型,在窗口显示)...
  11. commons fileupload的DiskFileItemFactory
  12. 智慧园区大数据平台建设方案(ppt)
  13. html唱片机效果,黑胶唱片风格音频播放器jQuery插件
  14. SATA硬盘电源线或数据线引发的故障
  15. CDH6.2.1安装Kudu maste无法启动 Unable to initialize catalog manager
  16. nefu--15--八阵图
  17. WDK_基于Fabric的区块链系统开发
  18. 自考工作分析之工作分析的基础方法
  19. C++控制台RPG游戏(序)
  20. safari cookie_如何在OS X上清除Safari的浏览历史记录和Cookie

热门文章

  1. [转]Vector、ArrayList和hashtable hashmap数据结构
  2. Mysql8官方分布式数据库MGR最佳实践
  3. Office报错:错误代码:30015-6(-1)
  4. nginx代理tomcat,https
  5. 力扣题目——653. 两数之和 IV - 输入 BST
  6. android工程怎么连手机,安卓手机怎么进工程模式 安卓手机进工程模式教程【详解】...
  7. datetime插入数据_量化学习:聚宽jqdatasdk对接vnpy的数据服务
  8. [Unity3D]无缝场景切换解决方案(1) - 简单场景切换
  9. SimpleDateFormat 线程不安全及解决方案
  10. IDEA 报 「Could not autowire. No beans of ‘UserMapper‘ type found」错误解决方案