NLP[3] - [Word Embedding系列] : one-hot编码

 
本《Word Embedding系列》文章包括:

(1)One-hot编码
(2)Word Embedding
(3)LSA(Latent Semantic Analysis)
(4)Word2vec的CBOW模型
(5)Word2vec的Skip-gram模型
(6)GloVe模型
(7)相关编程实现
 

本文介绍one-hot编码

目录

      • 一、前言
      • 二、举例
      • 三、缺点

一、前言

自然语言处理的目标在于希望计算机能够理解(NLU,Understanding)和生成(NLG,Generating)自然语言。
           NLP[3] - [Word Embedding系列] : one-hot编码_第1张图片
无论是NLU过程还是NLG过程,与计算机打交道,就需要转换为计算机能够识别的数字编码方式,one-hot编码是其中最简单的一种方法。

 
 

二、举例

给定一句话s = “I am a Chinese and I love China”
如何用one-hot来对每一个单词进行编码,为了简单,我们认为s构成了全体单词集合。
我们可以建立一个词汇表如下:
          
每个单词的one-hot编码获取步骤是:
1)建立一个|V|(代表词汇表总长度)的全零向量.
2)将每个单词在词汇表对应的index维度置为1,其它元素保持不变,就能得到最终的one-hot向量.

以s = “I am a Chinese and I love China”为例,下图给出了每个单词的one-hot表示:
          
得到了每个单词的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编码方式中无法体现。

 
链接:https://zhuanlan.zhihu.com/p/105357841

你可能感兴趣的:(NLP,nlp,深度学习)