[Dict2vec]论文实现:Dict2vec : Learning Word Embeddings using Lexical Dictionaries

简介: [Dict2vec]论文实现:Dict2vec : Learning Word Embeddings using Lexical Dictionaries

论文:Dict2vec : Learning Word Embeddings using Lexical Dictionaries

作者:Julien Tissier, Christophe Gravier, Amaury Habrard

时间:2017

一、完整代码

# 完整代码在这里

二、论文解读

Dict2vec从字典条目构建新的单词对,使语义相关的单词移动得更近,负采样过滤掉字典中不相关的单词对。

2.1 方法介绍

    无监督学习的词向量有一个经典缺陷:在一个单词和那些在相关上下文中出现的单词之间缺乏监督。例如,近义词无法在一句话中同时出现,这里使用dict2vec通过字典中词的定义来优化这一步骤;


    单词的定义是一组解释其意义的单词或句子。字典是针对几个单词的一组元组(单词、定义)。例如,你可以在字典中找到:

car: A road vehicle, typically with four wheels, powered by an internal combustion engine and able to carry a small number of people.


从定义中我们可以发现car中有vehicle,road,engine等等词语;通过这样的词的出现,可以说明使用词定义来获得弱监督的相关性,允许我们得到语义上相关的词对是可行的;这里我们定义两个东西,weak pairsstrong pairs

  • weak pairs:如果A和B的定义中,只有一方有对方,那就是weak pairs
  • strong pairs:如果A和B的定义中,双方都有对方词语,那就是strong pairs

The word “vehicle” is in the definition of “car” and “car” is in the definition of “vehicle”. Hence, (car–vehicle) is a strong pair. The word “road” is in the definition of “car”, but “car” is not in the definition of “road”. Therefore, (car–road) is a weak pair.

“车辆”一词在“汽车”的定义中,“汽车”一词在“车辆”的定义中。因此,(汽车-汽车)是强有力的一对。“路”一词是在“汽车”的定义中,而“车”则不在“道路”的定义中。因此,(汽车-道路)是一个弱对。

为了把weak pairs和strong pairs与损失函数联系起来,同时为了避免影响运算速度,我们可以通过正采样和负采样结合的方式,首先是正采样,如下所示:

  image.png

其中  S(w)表示与 w 相关的所有strong pairs组成的集合; W(w)表示与 w相关的所有weak pairs组成的集合; Vs(w)表示从S(w)中抽出的pairs组成的集合; Vw(w)表示从  W(w)中抽出的pairs组成的集合;βsβw是两个系数;抽取的个数可以自定义;

接下来是负采样,首先定义随机采样的集合如下:

image.png

接下来可以得到负采样如下:

  image.png

    负采样用负数是为了尽可能的让他们不在一起,正采样用正数是为了尽可能的让他们在一起;得到最后的损失函数如下: image.png

模型介绍完毕!

2.2 参数设置事项

对于正抽样,经验网格搜索显示,βs和βw之间的比率为1:2 是调整这些超参数的一个很好的经验法则。我们还注意到,当这些系数过低时(βs≤0.5和βw≤0.2),结果会变得更糟,因为该模型没有考虑到来自强对和弱对的信息。另一方面,当它们过高时(βs≥1.2和βw≥0.6),模型会从上下文中丢弃太多的信息,而支持来自对的信息。当强对和弱对的数量过低或过高(ns,nw≤2或ns,nw≥5)时,这种行为是相似的。对于负抽样,我们注意到,与不受控制的版本相比,由成对带来的控制的平均加权得分增加了0.7%。我们还观察到,增加负样本的数量并没有显著提高结果,除了RW数据集,其中使用25个负样本可以提高10%的性能。实际上,这个数据集主要由罕见的单词组成,所以嵌入必须学会区分不相关的单词,而不是更接近相关的单词。

2.3 模型效果

提升不大,使用于小语料,个人认为小语料特征不明显,需要强化,而dict2vec通过字典定义添加了信息进行强化!

三、过程实现

四、整体总结

本文提出了一种利用词汇字典学习单词嵌入的新方法Dict2vec。它基于一个Skip-gram模型,其中目标函数通过利用从定义中提取的词对的强度对进行扩展。在单词相似性任务中,我们的方法比最先进的单词嵌入方法显示了更好的结果,包括基于来自外部来源的修改的嵌入方法。我们还提供了完整的源代码来重现实验。


目录
相关文章
|
5月前
|
关系型数据库 MySQL Linux
实现MySQL数据库的定时自动备份脚本。
拿走,不谢,这个脚本配方(指引)保证你的数据库数据像蛋糕店一样地天天更新,还能确保老旧的蛋糕(数据)不会堆积满仓库。这下可好,数据安全有保障,数据库管理员也能轻松一点,偶尔闲下来的时候,煮杯咖啡,看个剧岂不美哉?别忘了偶尔检查一下你的自动备份是否正常工作,以防万一蛋糕机器出了点小差错。
274 20
|
11月前
|
JSON 监控 安全
JSONP 被劫持后会对用户造成哪些危害?
JSONP 被劫持后可能对用户造成严重的危害,涉及信息安全、财产安全和隐私保护等多个方面。因此,在使用 JSONP 进行跨域数据交互时,必须采取有效的安全措施来防止劫持事件的发生。
277 7
|
存储
RAID与LVM
RAID与LVM
533 1
|
移动开发 JavaScript 前端开发
javascript监听浏览器离开、进入行为
javascript监听浏览器离开、进入行为
534 0
|
存储 持续交付 Docker
云效流水线问题之推送镜像报443连接超时如何解决
云效镜像是指存储在阿里云效服务中的容器镜像,它们可以用于持续集成和持续部署(CI/CD)流程中;本合集将介绍如何在云效平台上管理和使用镜像资源,以及常见的镜像问题和解决办法。
264 0
|
数据中心 芯片
什么是SFP?SFP的主要特点
【4月更文挑战第21天】
2531 0
什么是SFP?SFP的主要特点
|
机器学习/深度学习 算法 数据处理
ML之FE:数据处理—特征工程之稀疏特征的简介、如何处理、案例应用之详细攻略
ML之FE:数据处理—特征工程之稀疏特征的简介、如何处理、案例应用之详细攻略
ML之FE:数据处理—特征工程之稀疏特征的简介、如何处理、案例应用之详细攻略
|
机器学习/深度学习 人工智能 PyTorch
Mojo编程语言:Python易用性与C性能的完美结合
Mojo是Python的超集,也就是说,任何有效的Python代码也是有效的Mojo代码。Mojo还添加了一些新的语法和特性,如类型推断、编译时计算、内联函数等,以提高性能和灵活性。Mojo是一门新兴的编程语言,但已经有一些用户可以通过Mojo Playground在线体验Mojo的编程。Mojo的开发团队计划逐步开源Mojo,并与社区进行交流和反馈。Mojo的发展趋势是利用MLIR(多层次中间表示)作为其核心基础,实现跨平台、跨语言、跨硬件的优化和部署。Mojo还希望成为一个统一的AI语言,支持各种AI框架和库,如TensorFlow、PyTorch等。
6093 0
|
弹性计算 数据可视化 关系型数据库
使用阿里云部署基于docker的mysql云服务
本篇文章将介绍如何使用阿里云安装docker、部署mysql服务,并远程连接至远端mysql
900 1
使用阿里云部署基于docker的mysql云服务