《TensorFlow自然语言处理》—3.3 Word2vec—基于神经网络学习单词表示

举报
华章计算机 发表于 2019/07/21 21:51:18 2019/07/21
【摘要】 本节书摘来自华章计算机《TensorFlow自然语言处理》一书中的第3章,第3.3.1节,[澳] 图珊·加内格达拉(Thushan Ganegedara) 著 马恩驰 陆 健 译。

3.3 Word2vec—基于神经网络学习单词表示

"You shall know a word by the company it keeps."

—J.R. Firth

由J.R.Firth于1957年发表的这一陈述是Word2vec的基础,因为Word2vec利用给定单词的上下文来学习它的语义。Word2vec是一种开创性的方法,可以在没有任何人为干预的情况下学习单词的含义。此外,Word2vec通过查看给定单词周围的单词来学习单词的数字表示。

我们可以想象一个真实世界的场景来测试上述说法的正确性。比如,你正在参加考试,你在第一个问题中找到了这句话:“Mary is a very stubborn child. Her pervicacious nature always gets her in trouble.”。现在,除非你非常聪明,否则你可能不知道pervicacious是什么意思。在这种情况下,你会自动查看在感兴趣的单词周围的短语。在我们的例子中,pervicacious的周围是stubborn、nature、和trouble,这三个词就足以说明,pervicacious事实上是指顽固状态。我认为这足以证明语境对于认识一个词的含义的重要性。

现在,让我们讨论Word2vec的基础知识。如前所述,Word2vec通过查看单词上下文并以数字方式表示它,来学习给定单词的含义。所谓“上下文”,指的是在感兴趣的单词的前面和后面的固定数量的单词。假设我们有一个包含N个单词的语料库,在数学上,这可以由以w0,w1,…,wi和wN表示的一系列单词表示,其中wi是语料库中的第i个单词。

接下来,如果我们想找到一个能够学习单词含义的好算法,那么,在给定一个单词之后,我们的算法应该能够正确地预测上下文单词。这意味着对于任何给定的单词wi,以下概率应该较高:

 image.png

为了得到等式右边,我们需要假设给定目标单词(wi)的上下文单词彼此独立(例如,wi - 2和wi - 1是独立的)。虽然不完全正确,但这种近似使得学习问题切合实际,并且在实际中效果良好。

3.3.1 练习:queen = king – he + she吗

在继续之前,让我们做一个小练习,来了解如何最大化前面提到的概率以找到单词的好的含义(即表示)。考虑以下非常小的语料库:

 image.png

现在让我们手动做一些预处理并删除标点符号和无信息的单词:

 image.png

现在,让我们用其上下文单词为每个单词形成一组元组,其格式为:目标单词→上下文单词1,上下文单词2。我们假设两边的上下文窗口大小为1:

 image.png

 

请记住,我们的目标是给出左侧的单词能够预测右侧的单词。要做到这一点,对于给定的单词,右侧上下文中的单词应该与左侧上下文中的单词在数值或几何上具有很高的相似性。换句话说,感兴趣的单词应该可以用周围的词来表达。现在,让我们假定实际的数值向量来理解它是如何工作的。为简单起见,我们只考虑以粗体突出显示的元组。让我们首先假设rich这个词有以下数值:

 image.png

为了能够正确地从rich中预测was和king,was和king应该与rich这个词有很高的相似性。我们假定向量之间的欧几里德距离作为相似性结果。

让我们为单词king和rich尝试以下值:

 image.png

得到的结果不错:

 image.png

这里,Dist指的是两个词之间的欧几里德距离,如图3.3所示。

image.png

现在让我们考虑以下元组:

 image.png

我们已经建立了king与rich之间的关系。但是,它还没有完成,我们认为两个词之间的关系越紧密,这两个词就越接近。那么,让我们首先调整king的向量,使它更接近rich:

 image.png

接下来,我们需要在图片中添加单词he,he应该更接近king这个词,下面是我们现在关于he这个单词的所有信息:

 image.png

现在,包含这些单词的图与图3.4类似。

image.png

现在,让我们继续处理下面两个元组:queen→

beautiful, she和she→queen, was。请注意,我已经交换了元组的顺序,因为这使我们更容易理解该示例:

 image.png

现在,我们将不得不使用我们先前的英语知识。一个合理的决定是,将单词she放在与单词he同was在距离上同样远的地方,因为它们在单词was的上下文中的用法是等价的。

因此,让我们用这个:

 image.png

接下来,我们用queen接近单词she:

 image.png

如图3.5所示。

image.png

接下来,我们只有如下元组:

 image.png

在这里,找到了beautiful这个词。它与queen和she应该有大致相同的距离。我们使用以下表示:

 image.png

现在,我们用图表描述单词之间的关系。当我们观察图3.6时,词语含义似乎非常直观。

image.png

现在,让我们来看看自本练习开始以来潜伏在我们脑海中的问题。这个等式中的数量是等价的吗:queen = king – he + she好吧,我们现在已经拥有了解决这个谜团所需的所有资源。

让我们先计算方程式的右侧:

 image.png

最后的确是有用的。如果你看一下我们为单词queen设置的词向量,就会发现这与我们之前推断出的答案完全一致。请注意,这是一个粗略的工作,目的是说明如何学习词嵌入,如果使用算法进行学习,则一词嵌入的确切位置可能不同。

但请记住,对于现实世界的语料库来说,这是一个不切实际的缩小规模之后的练习。因此,仅仅通过处理十几个数字是无法手工计算出这些词向量的值的。这是复杂的函数逼近方法,如神经网络为我们做的那样。但是,要使用神经网络,我们需要以数学语言的方式来表达我们的问题。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。