哪种词向量模型更胜一筹?Word2Vec,WordRank or FastText?

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud

作者介绍:

Parul Sethi,undergrad of Maths and IT at CIC, University of Delhi. RaRe Incubator Student.

     在众多词嵌入(有的也称作词向量)模型中选择一个合适的模型是很困难的任务,是选择NLP常用的Word2Vec还是其他模型?

     如图1所示,用WordRank,Word2Vec和FastText三种模型分别找出与“king”最相似的词语,WordRank的结果更加倾向于“king”这个词本身的属性或者和“king”同时出现最多的词,而Word2Vec的结果多是和“king”出现在相似的上下文。

           图1. WordRank, Word2Vec和FastText三种模型输出与"king"最相似的词

不同模型实验结果对比

                                                图2. 三种模型实验结果对比

实验对比数据集:

1.使用Google类比数据集进行词类比实验,包含19K词类比问题,包含语义和语法类比;

2.使用SimLex-999和WS-353数据集进行词相似度实验,参考此处介绍

      从上表可以看出,每种模型用于不同任务时其效果表现出显著差异如FastText在语法类比任务中效果最好,WordRank在语义类比任务中效果最好。其原因在于,FastText引入词的形态学信息,而WordRank则是把寻找最相似词形式化为一个排序问题。即,给定词w, WordRank输出一个序列化列表,将和词w共同出现最多的词排在列表前面。在词的相似度方面,Word2Vec在Simlex-999测试数据上表现效果更好,而wordrank在ws-353上表现更好。出现这些不同的结果可能是因为数据集使用了不同角度下的相似度,图1中三种模型输出"king"的最相似词的对比也说明了这些词嵌入模型对相似度理解方式的不同。

可视化比较

      在使用TensorBoard对这三种词嵌入模型的结果进行可视化处理后,得出的结论和最开始三种模型的输出结果相似。TensorBoard使用PCA或者t-SNE方法将原始多维词向量降维至2维或者3维,原始词向量的信息会丢失一些,词之间的余弦相似度/距离会有所改变,但仍然是相关的,所以可视化的结果相对于图1中的结果会有所改变。

       2D PCA results for Word2Vec                     2D t-SNE results for Word2Vec

          2D PCA results for FastText                        2D t-SNE results for FastText

     2D PCA results for WordRank            t-SNE results for WordRank

                           图3. 不同模型使用PCA与t-SNE的效果对比

     从图3可以看出,在Word2Vec模型中,两种方法都表现不错。要注意的是,由于t-SNE是一种随机方法,所以即使是使用相同的参数设置,也可能得到不同结果。在FastText中,两种方法表现相似,稍次于Word2Vec。在WordRank模型上 ,t-SNE方法效果好于PCA,因为在PCA方法中,一些最相似的词反而在图中被置于较远的位置。

词频和模型性能

          本节将会使用不同语料库分析不同词频范围上,词嵌入模型在词类比任务上的性能,如图4和图5所示。类比的四个词的平均频率会先算出来,然后和具有相似平均频率的类比一同存储。

             图4. 在 Brown corpus上,不同类比任务的准确率

                             图5. 在 text8 corpus上,不同类比任务的准确率

由图4和图5分析表明:   

  • 1.在语义类比中,三种模型在低频词语上表现相对较差,在高频词语上表现效果较好;
  • 2.在语法类比中,FastText优于Word2Vec和WordRank 。FastText模型在低频词语上表现的相当好,但是当词频升高时,准确率迅速降低,而WordRank和Word2Vec在很少出现和很频繁出现的词语上准确率较低;

3. FastText在综合类比中表现更好,最后一幅图说明整体类比结果与语法类比的结果比较相似,因为语法类比任务的数量远远多于语义类比,所以在综合结果中语法类比任务的结果占有更大的权重;

综上,WordRank更适合语义类比,FastText更适合不同语料库下所有词频的语法类比。

三种模型词类比

      原文中作者展示了不同词向量模型在不同语料库(Brown corpus和text8)上进行类比任务的日志,结果表明WordRank在语义类比任务上效果优于其他两种模型,而FastText在语法类比上效果更好。值得一提的是,如果用WordRank模型生成两个集合(词集合和上下文集合),WordRank使用它们词向量的内积对他们之间的关系建模,内积和他们之间的关系是直接成比例的,如果该词和上下文越相关,内积就会越大。将两者结合考虑,如:

 其中 w 和 分别表示词向量和上下文向量。实验结果表明这种向量合并的组合方法有助于降低过拟合和噪音的影响,并且能够进一步提升模型效果。

结论

1. 没有一种能够适用于不同NLP应用的词向量模型,应该根据你的具体使用场景选择合适的词向量模型。

2.  除了模型本身,词频也会对类比任务结果的准确率有重要影响。正如上面图中所示,语料库中词的频率不同,模型性能也不同,例如,如果词频很高,得到的精确度可能会比较低。

以上为译文

文章原标题《WordRank embedding: “crowned” is most similar to “king”, not word2vec’s “Canute”》  作者:Parul Sethi  译者:东东邪

文章为简译,更为详细的内容,请查看原文

PS:如果网站打不开,请下载本文附件查看原网页或点击此处

时间: 2024-09-02 14:29:09

哪种词向量模型更胜一筹?Word2Vec,WordRank or FastText?的相关文章

PaperWeekly 第52期 | 更别致的词向量模型:Simpler GloVe - Part 1

如果问我哪个是最方便.最好用的词向量模型,我觉得应该是 word2vec,但如果问我哪个是最漂亮的词向量模型,我不知道,我觉得各个模型总有一些不足的地方.且不说试验效果好不好(这不过是评测指标的问题),就单看理论也没有一个模型称得上漂亮的. 本文讨论了一些大家比较关心的词向量的问题,很多结论基本上都是实验发现的,缺乏合理的解释,包括: 如果去构造一个词向量模型? 为什么用余弦值来做近义词搜索? 向量的内积又是什么含义? 词向量的模长有什么特殊的含义? 为什么词向量具有词类比性质?(国王-男人+女

PaperWeekly 第53期 | 更别致的词向量模型:Simpler GloVe - Part 2

  前言 本文作者在更别致的词向量模型:Simpler GloVe - Part 1一文中提出了一个新的类似 GloVe 的词向量模型 - Simpler GloVe. 本期我们将带来该系列的后半部分,包括对该词向量模型的详细求解.结果展示,以及代码和语料分享.  模型的求解 损失函数 现在,我们来定义 loss,以便把各个词向量求解出来.用 P̃ 表示 P 的频率估计值,那么我们可以直接以下式为 loss: 相比之下,无论在参数量还是模型形式上,这个做法都比 GloVe 要简单,因此称之为 S

秒懂词向量Word2vec的本质

1. Word2vec参考资料总结 (以下都是我踩过的坑,建议先跳过本节,阅读正文部分,读完全文回头再来看) 先大概说下我深挖 word2vec 的过程:先是按照惯例,看了 Mikolov 关于 Word2vec 的两篇原始论文,然而发现看完依然是一头雾水,似懂非懂,主要原因是这两篇文章省略了太多理论背景和推导细节:然后翻出 Bengio 03年那篇JMLR和 Ronan 11年那篇JMLR,看完对语言模型.用CNN处理NLP任务有所了解,但依然无法完全吃透 word2vec:这时候我开始大量阅

用深度学习来获取文本语义: 词向量应用于自然语言处理

◆ ◆ ◆ 序 词向量是一种把词处理成向量的技术,并且保证向量间的相对相似度和语义相似度是相关的.这个技术是在无监督学习方面最成功的应用之一.传统上,自然语言处理(NLP)系统把词编码成字符串.这种方式是随意确定的,且对于获取词之间可能存在的关系并没有提供有用的信息.词向量是NLP领域的一个替代方案.它把词或短语映射成实数向量,把特征从词汇表大小的高维度空间降低到一个相对低的维度空间. 例如,让我们看看四个词:"woman"(女人)."man"(男人)."

java-利用word2vec进行词向量训练内存溢出问题

问题描述 利用word2vec进行词向量训练内存溢出问题 请问大家一下: 利用word2vec进行词向量进行训练时,所用语料进行分词后,还需要去除标点符号吗?我利用搜狗新闻语料(分词后2.09G)进行词向量训练时,出现Exception in thread "main" java.lang.OutOfMemoryError: Java heap,我设置了jvm heap的大小,还是出现这个错误,该怎么解决呢?谢谢解答!** 解决方案 内存设置还是太小,我使用这个参数 -Xmx6048M

深度学习和自然语言处理:诠释词向量的魅力

以下为译文: 今天的帖子,我收集的材料源于五篇论文.本次的主题是"word2vec",主要是总结了Google公司的Mikolov等人关于词向量的工作(以及你可以用它做什么).论文分别是: ·       Efficient Estimation of Word Representations in Vector Space – Mikolov et al. 2013 ·       Distributed Representations of Words and Phrases an

第2期Talk实录 | 词向量的几何分布及其应用

[ Q & A ] 本次 Talk 中涉及的三篇 paper 如下: https://arxiv.org/abs/1702.01417 https://arxiv.org/abs/1611.09799  https://arxiv.org/abs/1610.07569 请问穆博士,您能详细的讲一下 subspace representation 的方法吗? 穆佳琦:感谢提问!首先将所有词的 vector 堆叠成一个矩阵,提取这个矩阵的若干个(3-5)主成分,然后这几个主成分对应的 vector

斯坦福深度学习课程第二弹:词向量内部和外部任务评价

像追美剧一样追课程! 大数据文摘已获斯坦福大学深度学习课程CS224d翻译授权, 重磅启动"斯坦福深度学习课程CS224d"的翻译工程, 所有译文将会免费发布,计划每周发布1篇. 期待你的加入,加入要求见文末 报名请点击文末"阅读原文". 大数据文摘作品,转载需授权 翻译:熊杰 王昱森   调整校对:寒小阳 龙心尘 特别鸣谢:曾宪超 大数据文摘"机器学习"专栏介绍 本文为大数据文摘机器专栏推出的[数据科学/机器学习]学习分享项目启动篇,我们将以S

见微知著,从细节处提升词向量的表示能力 | 论文访谈间 #10

词向量是将词映射到低维空间进行表示的一种方法,它可以降低输入信息的稀疏性,同时赋予表示向量一定的词义.作为 NLP 领域的一项基本任务,词向量扮演着十分重要的角色,它为机器翻译,自动问答,对话系统等提供了一个较为准确的单词表达形式.但是词的意思是多种多样的,在不同的情境下会有不同的意义,如何能够更准确地表示出词的意义,对 NLP 领域中的其他任务来说具有重要的意义.来自清华大学的牛艺霖,谢若冰,刘知远老师和孙茂松老师发表在 ACL2017 上的论文"Improved Word Represent