专栏首页小石不识月文本的词嵌入是什么?

文本的词嵌入是什么?

词嵌入(Word embeddings)是一种单词的表示形式,它允许意义相似的单词具有类似的表示形式。

它们是文本的分布式表示,这大概是在挑战自然语言处理问题的深度学习方法时,令人印象深刻的关于性能的重大突破之一。

在这篇文章中,您将会了解到用于表示文本数据的词嵌入方法。

读完本文后,您会知道:

  • 用于表示文本的词嵌入方法究竟是什么,以及它是如何与其他特征提取方法不同的。
  • 关于从文本数据中学习词嵌入的三种主要算法。
  • 你可以训练一个新的词嵌入,或者在你的自然语言处理任务中使用预训练好的词嵌入。

我们开始本次学习之旅吧!

文本的词嵌入是什么?

图片作者 Heather,保留部分版权。

概览

这篇文章分为三大部分,分别是:

  1. 词嵌入是什么?
  2. 词嵌入的算法
  3. 词嵌入的使用

什么是词嵌入?

词嵌入是文本的学习表示,其中意义相同的单词具有相似的表示形式。

正是这种表达单词和文档的方法,被人们认为可能是在挑战自然语言处理问题时,有关深度学习的重大突破之一。

使用密集和低维向量的好处之一是利于计算:大多数神经网络工具包无法很好地处理非常高维的稀疏向量。... 密集表示最重要的益处在于其泛化能力:如果我们相信某些特征可能提供关于相似性的线索,那么为了捕获这些线索而准备一些表示则是值得的。

- 引用自 2017 年出版的 Neural Network Methods in Natural Language Processing(自然语言处理中的神经网络方法),第 92 页。

实际上,词嵌入是一类技术,这种技术将单独的词在预定义的向量空间中表示为实值向量。其中每个单词映射到一个向量上,向量值是以类似于神经网络的方式学习得来,该技术因此常被归类于深度学习领域。

为每个单词使用密集的分布式表示,这是词嵌入方法的核心思想。

每个单词由一个实值向量表示,这一向量通常有数十或几百个维度。这与稀疏词表示所需的成千上百万个维度形成鲜明对比,稀疏表示的一个例子就是独热编码(One-hot encoding)。

词汇表中一个分布式的词特征向量将每个单词互相关联在一起 ... 特征向量表示了词的不同方面:每个词与向量空间中的一个点相关联。特征的数量 ... 远小于词汇表的大小。

- 引用自 2003 年发表的 A Neural Probabilistic Language Model(一个神经概率语言模型)。

分布式表示是基于单词的用法学习得来的。这使得以类似的方式使用的单词能具有相似的表示,并自然地捕捉它们的意义。这可以与词袋模型(Bag-of-words model)中的脆而易碎的表示形成对照:(词袋模型中)除非显式地进行管理,否则不论单词如何被使用,不同的单词都会具有不同的表示。

这种方法有着更深层的语言学理论背景,即 Zellig Harris 的 “distributional hypothesis(分布假说) ”,这一假说可以概括为:具有相似语境的词语具有相似的意义。欲知详情,请参阅 Harris 在 1956 年发表的论文 “Distributional structure(分布式结构)”。

这种概念(让词的用法来定义它的意义)可以用 John Firth 所再三重复的妙语作为总结:

识词于其所友!(You shall know a word by the company it keeps!)

(译者注:这句妙语的翻译源自搜狐网站的一篇文章

- 引用自 1962 年发表的,对 1930 - 1955 年语言学分析的相关研究, “A synopsis of linguistic theory 1930-19551930-1955 年语言学理论概览)”,

词嵌入的算法

词嵌入方法是对文本语料库进行学习,从而得到预定义的固定大小词汇表的实值向量表示。

其学习的过程要么是与某些任务(如文档分类)的神经网络模型的结合,要么就是使用文档统计的无监督过程。

本小节对可用于从文本数据中学习到词嵌入的三种技术进行了综述。

1.嵌入层

一个嵌入层(Embedding layer),没有比这更贴切的名称了,它是一种与特定自然语言处理任务(如语言建模或文本分类)的神经网络模型共同学习的词嵌入。

它要求对文档文本进行准备与清理,以使得每个单词都是一个独热编码。向量空间的大小被指定为模型的一部分,例如 50, 100 或 300 个维度。向量使用小的随机数进行初始化。嵌入层用于神经网络的前端,并且它采用反向传播算法(Backpropagation algorithm)以有监督(Supervised)的方式进行拟合。

... 当神经网络的输入包含符号分类特征时(例如,从一个封闭的词汇表中取出 k 个不同符号的特征),通常我们将每个可能的特征值(即词汇表中的每个词)通过一些 d 维向量联系起来。然后将这些向量视为模型的参数,并与其他参数一起训练。

- 引用自 2017 年出版的 Neural Network Methods in Natural Language Processing(自然语言处理中的神经网络方法),第 49 页。

词的独热编码被映射到词向量中。如果我们使用多层感知器(Perceptron)模型,那么在将单词向量输入给模型之前,我们要将它们串联在一起。如果使用的是循环神经网络,那么每个单词可以作为输入序列中的一员。

这种学习嵌入层的方法需要大量的训练数据,并且训练速度低下,但是会学习到针对特定文本数据和 NLP 任务的嵌入。

2. Word2Vec

Word2Vec 是一种统计学方法,它可以从文本语料库中高效地学习独立的词嵌入。

2013 年,它由 Tomas Mikolov 等人在谷歌开发,它作为一个响应,使得对基于神经网络的嵌入的训练更加有效。从那时起,它就已成为开发预训练词嵌入的一个约定俗成的标准。

此外,该研究还涉及到对学习到的向量的分析,以及在单词表示方面对向量数学的探索。例如,从 “King”(国王) 中减去 “man-ness”(男人),其结果再加上 “women-ness”(女人)就会得到 “Queen”(女王) 这个词,掌握到这样的类比“king is to queen as man is to woman(国王与女王是对应的,正如男人对于女人一样)

我们发现,这些表示法非常善于捕捉语言中的句法和语义规律性,并且每种关联都以特定关系(Relation-specific)的向量偏移作为特征。这允许基于词之间的偏移来进行面向向量的推理。例如,男性/女性的关联是自动学习得到的,在诱导向量的表示下,“ King - Man + Woman” 的结果是一个非常近似于 “Queen” 的向量。

- 引用自 2013 年发表的 Linguistic Regularities in Continuous Space Word Representations( 连续空间词表达中的语言规律)。

有两种不同的学习模型被引入,它们可以作为 word2vec 方法的一部分来学习词嵌入:

  • 连续词袋模型(CBOW,Continuous Bag-of-Words) 模型。
  • 连续跳跃元语法(Continuous Skip-Gram)模型。

CBOW 模型基于上下文来预测当前的词,从而学习到词嵌入。连续 Skip-Gram 模型则是通过预测当前单词的邻近词来学习。

Word2Vec 训练模型

图片源自 2013 年发表的 “Efficient Estimation of Word Representations in Vector Space(向量空间中词表示的有效估计)”。

这两种模型都侧重于在局部使用的上下文语境下进行学习,其中上下文是由一个邻近词窗口来定义的。这个窗口是模型的一个可配置参数。

滑动窗口的大小对得到的向量相似性具有深刻影响。大的窗口趋于产生更多的局部相似性 [...] 而较小的窗口则倾向于产生更多在功能上和句法上的相似性。

- 引用自 2017 年出版的 Neural Network Methods in Natural Language Processing(自然语言处理中的神经网络方法),第 128 页。

这种方法的主要优点就是可以高效地学习到高质量的词嵌入(具有低维度和低时间复杂度的特性),它允许从更大的文本语料(数十亿个词)中学习更大规模的嵌入(更多维度)。

3.GloVe

用于词表示的全局向量算法(或称为 GloVe)是由 Pennington 等人于 Stanford 大学开发的,这一算法是对于 word2vec 方法的一个扩展,它可以高效地学习到词向量。

经典的向量空间模型的词表示是使用矩阵分解技术(例如潜在语义分析 [LSA,Latent Semantic Analysis])开发的,这些技术在使用全局文本统计这方面表现优异,但它们并不像 word2vec 那样学习方法一样,能够捕获(词的)意义并在任务中表示出来,比如计算出类比(例如上面描述的国王与女王的例子)。

GloVe 是一种将矩阵分解技术的全局统计(例如 LSA)与 word2vec 中基于局部语境的学习结合起来的方法。

不同于使用窗口来定义局部上下文(word2vec),GloVe 使用了整个文本语料库,语料库中的统计信息用于构造明确的词的上下文或者词的共生矩阵(Co-occurrence matrix)。使用整个文本语料库的结果,是得到一个通常能获得更好的词嵌入的学习模型。

GloVe 是一个新的全局的 Log-bilinear 回归模型,这个模型用于无监督学习的词表示,它在词类比,词相似性以及命名实体识别任务方面皆优于其它模型。

- 引用自 2014 年发表的 GloVe: Global Vectors for Word Representation(GloVe:用于词表示的全局向量)。

词嵌入的使用

当您在自然语言处理项目中使用词嵌入时,您有一些可选设置。

本节将对这些选项进行概述。

1.学习嵌入

你可以选择学习一个词嵌入以帮助解决你的问题。

而这将需要大量的文本数据(如数百万甚至数十亿个词)来确保能学习到有使用价值的嵌入。

训练词嵌入时,您有两个主要选项:

  1. 单独学习(Learn it Standalone),此时模型被训练来学习词嵌入,它会被保存起来,并在以后作为另一个模型中的一部分。如果你想在多个模型中使用同样的嵌入,这会是一个很好的方法。
  2. 联合学习(Learn Jointly),此时学习到的嵌入将作为一个大型的特定任务模型的一部分。如果你只打算在一个任务上使用嵌入,这会是一个好方法。

2.重用嵌入

通常情况下,研究人员会基于一些许可协议来免费提供预训练的词嵌入,以便您可以在自己的学术或商业项目中使用它们。

例如,word2vec 和 GloVe 词嵌入都可以免费下载。

你可以在项目中使用它们,而不需要从头开始训练自己的嵌入。

在使用预训练的嵌入时,您有两个主要选项:

  1. 静态的(Static),其中嵌入保持静态(不变的)并作为模型中的一个组件来使用。如果嵌入很好地拟合您的问题并且给出好的结果,则这是一个合适的方法。
  2. 更新的(Updated),预训练嵌入作为模型的种子(Seed),但嵌入会在模型训练期间进行联合更新。如果您希望充分利用模型并将其嵌入到您的任务中,这可能是一个不错的选择。

你应该使用哪个选项?

如果可以,请对不同的选项进行探索,测试一下,看看哪个能给出最好的结果。

或许您可以从快速的方法开始(比如使用预训练的嵌入),并且只有当使用新的嵌入才能在问题上获得更好的性能时,才使用新的嵌入。

扩展阅读

如果您正在深入研究,本节将提供更多有关该主题的资源。

文章

论文

项目

书籍

总结

通过本文,您了解到了深度学习应用中作为文本表示方法的词嵌入技术。

具体来说,你学到了:

  • 表示文本的嵌入方法是什么,以及它是如何区别于其他特征提取方法的。
  • 从文本数据中学习词嵌入的三种主要算法。
  • 你可以在自然语言处理任务中训练一个新的嵌入,或者使用预训练的嵌入。

本文的版权归 StoneDemo 所有,如需转载请联系作者。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度学习解决文本分类问题的最佳实践

    文本分类(Text classification)描述了一类常见的问题,比如预测推文(Tweets)和电影评论的情感,以及从电子邮件中区分出垃圾邮件。

    StoneDemo
  • 20分钟搞定——通过Docker部署Spring Boot应用程序到Bluemix云计算平台

    我很想了解关于 Java 中 Spring 框架的更多内容。借 Spring 之势来构建企业应用程序,其简单性使得它非常有趣。于是我着手实践了一个简单的教程,并...

    StoneDemo
  • 用于物联网的大数据参考架构

    工业物联网(IIOT,Industrial Internet of Things)正成为社会中的技术趋势与核心业务。IIOT 赋能诸如市政(Municipali...

    StoneDemo
  • 如何可视化BERT?你需要先理解神经网络的语言、树和几何性质

    语言的结构是离散的,而神经网络则基于连续数据运作:高维空间中的向量。成功的语言处理网络必须要能将语言的符号信息转译为某种几何表征——但是这种表征该是怎样的形式呢...

    机器之心
  • Jeff Dean强推:可视化Bert网络,发掘其中的语言、语法树与几何学

    这篇文章是为了补充解释论文,大致呈现了主要的结论。请参阅论文以获得完整的参考文献和更多信息

    代码医生工作室
  • Jeff Dean强推:可视化Bert网络,发掘其中的语言、语法树与几何学

    本文是论文(Visualizing and Measuring the Geometry of BERT)的系列笔记的第一部分。这篇论文由Andy Coenen...

    大数据文摘
  • CVPR2020 | 人脸识别基于通用表示学习

    认识wild faces是非常困难的,因为他们出现了各种各样的变化。传统的方法要么训练来自目标域的特定注释的变异数据,要么引入未标记的目标变异数据来适应训练数...

    计算机视觉研究院
  • 【干货】Entity Embeddings : 利用深度学习训练结构化数据的实体嵌入

    【导读】本文是数据科学家Rutger Ruizendaal撰写的一篇技术博客,文章提出深度学习在非结构数据中有不错的表现,当前通过实体嵌入也可以使之在结构化数据...

    WZEARW
  • CoNLL 2018 | 最佳论文揭晓:词嵌入获得的信息远比我们想象中的要多得多

    昨日,CoNLL 公布了最佳论文,由来自西班牙巴斯克大学 IXA NLP 组的 Mikel Artetxe 等人获得。该论文展示了词嵌入模型能够捕获不同层面的信...

    机器之心
  • 深度 | 万物向量化:用协作学习的方法生成更广泛的实体向量

    选自blog.insightdatascience 作者:Javed Qadrud-Din 机器之心编译 参与:Edison Ke、刘晓坤 来自 Insight...

    机器之心

扫码关注云+社区

领取腾讯云代金券