当前位置: 首页 > news >正文

什么是Word Embeddings

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

注:因为很喜欢一个博文,就把它部分翻译过来,原作者网名叫NSS。他的这篇博文的名字是: “An Intuitive Understanding of Word Embeddings: From Count Vectors to Word2Vec”. 原网址如下:https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/

注:这里只捡自己喜欢的部分写出来。

1 什么是Word Embeddings

我们知道计算机不认识字符串,所以我们需要将文字转换为数字。Word Embedding就是来完成这样的工作。 定义:A Word Embedding format generally tries to map a word using a dictionary to a vector。

2 Word Embeddings们

既然我们用向量来表示一个词或词语,那么这种表示一定不止有一种方式,所以在这里总结一下不同的表示。

2.1 Frequency based Embedding

在这个分类下有三个小分类.

  1. Count Vector
  2. TF-IDF Vector(不翻译,略过)
  3. Co-Occurrence Vector(不翻译,略过)

2.1.1 Count Vector

我们先举一个例子。先观察以下两句话,D1: He is a lazy boy. She is also lazy. D2: Neeraj is a lazy person. 这两句话一共有6个不同的单词,我们按照如下的方式来分下一下这6个单词在这两句话中的分布情况:

p44974699.webp

Fig 0.

这张表中的数字表示某个单词在某个句子中出现的次数,比如He在D1中出现1词,在D2中出现0词,如此等等。这时我们就可以看到He这个单词可以形成一个向量,[1,0],向量中的每个元素代表这个单词出现在某句话中的次数。

2.2 Prediction based Vector

2.2.1 CBOW (Continuous Bag of words)

CBOW这个模型是给定一个context的条件下,预测在该context下出现某个词的概率。假设我们有一句话:“I like Julia”,我们把context window设置为1,也就是我们只考虑一个词的前一个词或后一个词,然后这句话可以转换成Fig 1中的形式。右侧的矩阵是Input的unicode.

p44975044.webp

Fig 1. 注:原图太复杂,在这里我用了一个简单的例子。

这些数据点被传递给一个神经网络,如图Fig 2所示,输出层是一个softmax层,用来计算概率。流程是: 输入被映射到一个低维的向量,比如如Fig 3所示。得到这个二维向量后,再用一个矩阵将它转换成一个三维矩阵,这个三维矩阵经过softmax后就是我们的output。经过优化后得到的向量就是我们所求的向量。

p44975047.webp

Fig 2.

p44975063.webp

Fig 3.

注:这里的基本的思想是,一个词=它所处的环境(没有看出,这里的=是等于号)。恩,好有哲理的一句话。比如我们要判断某个人属于哪一个阶级,只需要看他的朋友圈就可以知道。比如在我们的例子中,当给我们一个context的时候,比如‘I’,那么这个context对应一个单词“like”。在这里我们的windows设置为1,也就是仅仅考虑一个词的前后词,当我们将windows设置为2的时候,Julia的context就变成了I和like,这个时候的Input就成了两个向量,也就是I向量和like向量,这两个向量分别经过W和W`两个矩阵的作用,得到两个vector,这个时候取这两个向量的平均值就是得到我们的output vector,最后经过softmax变换就可以得到最后的结果。如图Fig4所示。

p44975083.webp

Fig 4.

 

2.2.2 Skip – Gram model

这个方法正好和上边的方法相反,当给定我们一个word的时候,我们用这种方法来计算它的context。如Fig 5.2所示。比如我们有句话: ”Hey, this is sample corpus using only one context word.” 让我们构建training data:

p44975099.webp

Fig 5.

 

p44975127.webp

Fig 5.2

因为我们定义了context window=1,也就是该词的前后应该分别对应一个词,如Fig 5所示。

注意的是,在这里我们有两个输出,分别对应前后两个词。计算流程如Fig6-Fig 8所示.

p44975112.webp

Fig 6.

 

p44975122.webp

Fig 7.

p44975123.webp

Fig 8.

转载于:https://my.oschina.net/u/2935389/blog/2981037

相关文章:

  • 深度学习【一】理解神经网络
  • 微服务核心架构梳理
  • PostgreSQL checksum
  • 关于在vim中的查找和替换
  • Vuex的初探与实战小结
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 表格单元格td设置宽度无效的解决办法
  • python基础-数据类型
  • 【FPGA】Xilinx-7系的时钟资源与DDR3配置
  • 谈项目中如何选择框架和库(FEDAY主题分享总结)
  • 如何做线段绕着点旋转一定角度的动画
  • python写商品管理练习
  • React组件设计模式(一)
  • 【技能意志矩阵-skill will matrix】工作中究竟是个人能力更重要,还是我们的积极性更能提高我们的业绩?...
  • Kubernetes-架构路线图
  • 网络传输文件的问题
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • 0基础学习移动端适配
  • Android优雅地处理按钮重复点击
  • exports和module.exports
  • Github访问慢解决办法
  • HTML中设置input等文本框为不可操作
  • Java读取Properties文件的六种方法
  • Koa2 之文件上传下载
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Odoo domain写法及运用
  • Python学习笔记 字符串拼接
  • Spring Cloud Feign的两种使用姿势
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 当SetTimeout遇到了字符串
  • 订阅Forge Viewer所有的事件
  • 力扣(LeetCode)22
  • 聊聊hikari连接池的leakDetectionThreshold
  • 聊聊redis的数据结构的应用
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 实习面试笔记
  • 数据可视化之 Sankey 桑基图的实现
  • 通过git安装npm私有模块
  • 小程序开发中的那些坑
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​io --- 处理流的核心工具​
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (function(){})()的分步解析
  • (二)hibernate配置管理
  • (一)80c52学习之旅-起始篇
  • (原創) 物件導向與老子思想 (OO)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .NET : 在VS2008中计算代码度量值
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福