前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >文本的词嵌入是什么?

文本的词嵌入是什么?

作者头像
StoneDemo
发布2018-02-11 10:36:41
4K0
发布2018-02-11 10:36:41
举报
文章被收录于专栏:小石不识月小石不识月

词嵌入(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培训模式
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),但嵌入会在模型训练期间进行联合更新。如果您希望充分利用模型并将其嵌入到您的任务中,这可能是一个不错的选择。

你应该使用哪个选项?

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

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

扩展阅读

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

文章

论文

项目

书籍

总结

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

具体来说,你学到了:

  • 表示文本的嵌入方法是什么,以及它是如何区别于其他特征提取方法的。
  • 从文本数据中学习词嵌入的三种主要算法。
  • 你可以在自然语言处理任务中训练一个新的嵌入,或者使用预训练的嵌入。
评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概览
  • 什么是词嵌入?
  • 词嵌入的算法
    • 1.嵌入层
      • 2. Word2Vec
        • 3.GloVe
        • 词嵌入的使用
          • 1.学习嵌入
            • 2.重用嵌入
              • 你应该使用哪个选项?
              • 扩展阅读
                • 文章
                  • 论文
                    • 项目
                      • 书籍
                      • 总结
                      相关产品与服务
                      NLP 服务
                      NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档