通俗易懂的Word Embeddings

  Word Embeddings是机器学习领域最酷的事情之一,因为它可以从海量的文本数据中挖掘出单词之间纷繁复杂的联系。例如你可以在不给定任何先验知识的情况下,利用Word Embeddings学习到所有和颜色相关的词汇。为了方便理解,我们先给出一个简单的例子:

I painted the bench _______

  不难发现上述例句中缺少一个单词,显然这里需要填入一个有关色彩的词汇,例如:

I painted the bench red
I painted the bench green

  甚至我们可以说这里所填入的内容很可能与颜色有关,但不幸的是,这里也可以填入和色彩无关的单词,比如:

I painted the bench today

  但不管怎么样,语境与语义其实是息息相关的。所以上述的例子中,我们在空白地方填入不同的单词,并且会假设这些单词是相关的。
  除了以上情况之外,还有另外一种方式可以利用语境来帮助我们理解两个单词之间的相关性。若两个单词通常出现在同样的语境中
,我们便认为这两个单词是有关联的。我们给出3个不同的句子来帮助我们理解上述内容:

Donald Trump is the United States president.
I laughed at his joke.
His joke didn't make me laugh.

  第一个句子中United和States通常都会一起出现,所以我们会将这两个单词合并使用。在第二个以及第三个句子中,我们会发现joke和laugh是有关联的单词,因为他们往往会出现在相似的语境中。在这里我们想要指出的是laughed和laugh有可能是不同的单词,laughed是过去式而laugh是动词原形。同样的,jokes表示复数形式而joke是单数形式。这些都是同一单词的不同形态。Word Embeddings可以通过语料学习到单词的时态以及单复数的变换。在上例中,我们可以发现laughed和joke出现在了同一语境中,并且joke和laugh也出现在同一语境中,所以Word Embeddings会认为laughed和laugh都和joke有关,故而认为他们是有关联的。
  Word Embeddings其实就是将单词转变为向量,比如你给定hamburger,模型会将其转换为64维的向量,向量中的数值可以对该单词进行描述。比如我们给了hamburger和cheeseburger,Word Embeddings会用非常相近的向量来表述这两个单词。但当我们输入Ferrari,我们希望表述Ferrari的词向量离hamburger以及cheeseburger很远。

  Word Embeddings中很经典的一个例子就是man-woman+queen=king。所以我们不仅希望相似的单词具有相一致的向量表述,还希望不同单词的向量表述之间的差异也包含有用的信息。

如何实现呢

  第一种实现方法就是Word2vec,其工作过程如下:


  我们从语料中任选一个单词,并将该单词抽出,例如将yellow这个单词取出来。然后将该单词喂入word2vec神经网络,并预测其它单词与喂入单词在同一句话中的概率。所以本例中的Word2vec模型是根据给定单词预测上下文单词。

  神经网络对不同的单词有不同的输入神经元。所以我们可以将输入的神经元置1而将其它神经元置0,这个过程类似于独热编码。然后将输入层与隐层相连,隐层具有较少的神经元,例如64个神经元。然后我们将隐层与输出层相连,输出层包含所有上下文有关的单词。通过这种方式,不同的单词若具有相似的上下文,那他们的隐层表示就会很相近。
  除了word2vec以外,我们也可以使用Co-occurrence Matrix表示单词之间的联系:

  矩阵中的数值表示两个单词出现在同一句话中的次数。通过Co-occurrence Matrix生成Word Embeddings的最简单的方法之一是利用矩阵分解的方法:

  这里的矩阵分解可以采用SVD分解等方法。我们可以将图右边的又瘦又高的矩阵加以利用,该矩阵的每一行都表示一个单词的Word Embedding。当然我们也可以将瘦高矩阵的某一行与矮胖矩阵对应的那一列相加后取平均值来表示一个单词的Word Embedding。

  除了上述方法之外,还有一种被称为GloVe的方法能够生成Word Embeddings。

参考链接

[1] Word Embeddings
[2] Try the web app
[3] Word2vec paper
[4] GloVe paper
[5] GloVe webpage
[6] http://www.aclweb.org/anthology/Q15-1016
[7] https://en.wikipedia.org/wiki/Word_embedding

通俗易懂的Word Embeddings相关推荐

  1. 吴恩达《序列模型》精炼笔记(2)-- NLP和Word Embeddings

    AI有道 不可错过的AI技术公众号 关注 1 Word Representation 上节课我们介绍过表征单词的方式是首先建立一个较大的词汇表(例如10000),然后使用one-hot的方式对每个单词 ...

  2. Coursera吴恩达《序列模型》课程笔记(2)-- NLP Word Embeddings

    红色石头的个人网站:redstonewill.com <Recurrent Neural Networks>是Andrw Ng深度学习专项课程中的第五门课,也是最后一门课.这门课主要介绍循 ...

  3. Improving Twitter Sentiment Classification Using Topic-Enriched Multi-Prototype Word Embeddings

    1. 介绍 本文主要介绍论文Improving Twitter Sentiment Classification Using Topic-Enriched Multi-Prototype Word E ...

  4. From Word Embeddings To Document Distances论文总结

    一.前言 最近阅读的论文From Word Embeddings To Document Distances.做一个小总结.作为一个NLP刚刚开始,而且还没有入门的小白,很多的概念都不懂,一点点的查吧 ...

  5. Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之Understanding Word Embeddings 1_ Just Letters

    Rasa课程.Rasa培训.Rasa面试.Rasa实战系列之Understanding Word Embeddings 1_ Just Letters 词嵌入 Word Embedding 理解 Wo ...

  6. BERT Word Embeddings 教程

    本篇文章译自 Chris McCormick 的BERT Word Embeddings Tutorial 在这篇文章,我深入研究了由Google的Bert生成的word embeddings,并向您 ...

  7. 什么是Word Embeddings

    2019独角兽企业重金招聘Python工程师标准>>> 注:因为很喜欢一个博文,就把它部分翻译过来,原作者网名叫NSS.他的这篇博文的名字是: "An Intuitive ...

  8. 【吴恩达深度学习】05_week2_quiz Natural Language Processing Word Embeddings

    (1)Suppose you learn a word embedding for a vocabulary of 10000 words. Then the embedding vectors sh ...

  9. Word embeddings in 2017: Trends and future directions (2017年里的词嵌入:趋势和未来方向)

    Word embeddings in 2017: Trends and future directions 原文作者:anonymous 原文地址:http://ruder.io/word-embed ...

最新文章

  1. kafka的topic和分区策略——log entry和消息id索引文件
  2. 5.1.4 IO软件层次结构
  3. Music Notes(前缀和+二分)
  4. get_children 方法里面参数 iv_as_copy 有什么用?
  5. Python矩阵的用法(使用numpy)
  6. 计算机报名显示事务已被锁死,ORA-01591错误处理: 锁定已被有问题的分配事务处理20.18.156406挂起(转载)...
  7. Tail Recursion尾递归
  8. [haoi2011]向量
  9. 服务器虚拟化技术有kvm,只用VMware开虚拟机?来了解一下更强大KVM虚拟化技术
  10. 让Win7系统屏幕来个大翻转
  11. SaaS ToB产品的易用性设计2
  12. 空空老师向青海地震捐款~~把我感动毁了
  13. Android Studio初学者实例:Fragment学习--仿美团外卖界面
  14. Nexus的权限管理及分配
  15. Mac使用小技巧及grapher作图神器
  16. 搜索引擎SEO快速排名算法大揭秘
  17. 安卓模拟器内存辅助技术讲解
  18. 你想体验后宫选妃吗?js带你体验后宫选妃
  19. GenZ最终还是并入了CXL
  20. 《涨知识啦37》-量子跃迁

热门文章

  1. Golang Context包的使用
  2. oracle 枚举_枚举导出为sql语句java实现
  3. 每次执行java命令 都要source_跟着平台混了四年,现在要单飞了!
  4. 主板19针接口_【新品上市】D4双通道还能组RAID!华南B365D4主板6/7/8/9代全兼容!...
  5. can通道采样频率_CAN总线基础(上)
  6. 环状同步造成的死锁问题
  7. java开头流程_【java读书笔记】——java开篇宏观把控 + HelloWorld
  8. 计算机成绩统计优秀率,基于决策树算法的成绩优秀率分析与研究.pdf
  9. python创建数组并运行,python中Numpy的数组创建
  10. php是否直接支持函数的重载,php函数重载的替代方法--伪重载详解