hot编码 字符one_[Word Embedding系列] onehot 编码

公众号关注 “ ML_NLP ” 设为 “ 星标 ”,重磅干货,第一时间送达!

12f098cc82d8ba0c695c32feb139131c.png

机器学习算法与自然语言处理出品

@公众号原创作者 忆臻

学校 | 哈工大SCIR在读博士生

本系列文章包括: 1) one-hot编码 2)word2vec的skip-gram模型 3)word2vec的CBOW模型 4)相关编程实现 本文介绍one-hot编码。 一、前言 自然语言处理的目标在于希望计算机能够理解(NLU,Understanding)和生成(NLG,Generating)自然语言。
d09bdf0db524d562278334d815fb83d2.png
无论是NLU过程还是NLG过程,与计算机打交道,就需要转换为计算机能够识别的数字编码方式,one-hot编码是其中最简单的一种方法。 二、举例 给定一句话s = “I am a Chinese and I love China” 如何用one-hot来对每一个单词进行编码,为了简单,我们认为s构成了全体单词集合。 我们可以建立一个词汇表如下:
87ca52e856eea624f4cb5329f25e379a.png
每个单词的one-hot编码获取步骤是: 1)建立一个|V|(代表词汇表总长度)的全零向量 2)将每个单词在词汇表对应的index维度置为1,其它元素保持不变,就能得到最终的one-hot向量 以s = “I am a Chinese and I love China”为例,下图给出了每个单词的one-hot表示:
961baffcae8f7bf02114b6bdf6111a58.png
得到了每个单词的embedding之后,就可以送入到机器学习或者深度学习模型中进行后续处理。 三、缺点 尽管one-hot编码是最简单有效的编码方法,它依然有下面几个缺点: 1)每个单词的one-hot编码维度是整个词汇表的大小,维度非常巨大,编码稀疏,会使得计算代价变大。 2)one-hot编码假设单词与单词之间是独立的,无法体现单词与单词的关系远近程度,例如,如果我们判断“Chinese”和“China”向量之间的相似性,得出的向量内积值为0 ([0,0,0,1,0,0,0]*[0,0,0,0,0,0,1]=0),与对“Chinese”和“and”之间的相似性没有任何区别,因为“Chinese”和“and”之间的one-hot向量内积也为0 ([0,0,0,1,0,0,0]*[0,0,0,0,1,0,0]=0).而明显“China”与“Chinese”的关系要近于“China”与“and”的,这在one-hot编码方式中无法体现。 PS:原创不易,如果觉得本文对你有任何帮助,希望右下角点个【在看】,谢谢。

e2742fe3a38f10dc95873430a9ae55c6.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值