[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天前
|
机器学习/深度学习 自然语言处理 ice
[GloVe]论文实现:GloVe: Global Vectors for Word Representation*
[GloVe]论文实现:GloVe: Global Vectors for Word Representation*
20 2
[GloVe]论文实现:GloVe: Global Vectors for Word Representation*
|
5天前
|
算法 TensorFlow 算法框架/工具
[FastText in Word Representations]论文实现:Enriching Word Vectors with Subword Information*
[FastText in Word Representations]论文实现:Enriching Word Vectors with Subword Information*
20 2
|
机器学习/深度学习 自然语言处理 数据可视化
深入理解 Word Embedding
深入理解 Word Embedding
433 0
|
机器学习/深度学习 自然语言处理 运维
Word2Vec:一种基于预测的方法
Word2Vec:一种基于预测的方法
200 0
|
自然语言处理 数据可视化 数据处理
基于gensim实现word2vec模型(附案例实战)
基于gensim实现word2vec模型(附案例实战)
625 0
基于gensim实现word2vec模型(附案例实战)
|
自然语言处理 算法 Python
Gensim实现Word2Vec的Skip-Gram模型
gensim是一个开源的Python库,用于便捷高效地提取文档中的语义话题。它用于处理原始的、非结构化的电子文本(“纯文本”),gensim中的一些算法,如 Latent Semantic Analysis(潜在语义分析)、 Latent Dirichlet Allocation(潜在Dirichlet分布)、Random Projections(随机预测)通过检查训练文档中的共现实体来挖掘语义结构。
251 0
|
机器学习/深度学习 自然语言处理 算法
Word2Vec教程-Skip-Gram模型
这篇教程主要讲述了Word2Vec中的skip gram模型,主要目的是避免普遍的浅层介绍和抽象观点,而是更加详细地探索Word2Vec。现在我们开始研究skip gram模型吧
430 0
Word2Vec教程-Skip-Gram模型
|
机器学习/深度学习 资源调度 自然语言处理
Word Embedding
Word Embedding
118 0
Word Embedding
|
机器学习/深度学习 资源调度 算法
|
机器学习/深度学习 资源调度 自然语言处理
word2vec原理(二) 基于Hierarchical Softmax的模型
在word2vec原理(一) CBOW与Skip-Gram模型基础中,我们讲到了使用神经网络的方法来得到词向量语言模型的原理和一些问题,现在我们开始关注word2vec的语言模型如何改进传统的神经网络的方法。
2554 0