1. 什么是词(字)向量?
    将单词(apple、吃饭)用向量的形式进行表示,比如将单词“吃饭”表示为一个三维向量x=[x1,x2,x3]。一个词语或者一个字在NLP中被称为一个token。
  2. one-hot来编码字典
    比如一个汉语字典有3个单词“(index:0)吃饭”、“(index:1)睡觉”、“(index:2)打牌”构成,则one-hot编码结果如下:

单词

one-hot编码

吃饭

001

睡觉

010

打牌

100

经过one-hot编码以后,一个单词就被编码为一个向量,该向量只有一个元素为1,其余全为0;
one-hot编码的缺点:
(1)特征稀疏。one-hot编码具有很大的稀疏性,例如一个语料库有10000个单词,则每一个单词都被编码为一个长度为10000的向量,而该向量则含有9999个0。
(2)无法表征词与词之间的相互关系。因为one-hot编码后的任意两个词语都是正交的。
所以提出了更高效的Embedding(嵌入)编码方法。

  1. 使用Embedding将单词的one-hot编码格式转换为词向量形式
    所谓的Embedding其实就是指一个线性变换矩阵,通过该变换矩阵,将one-hot编码格式,转换为词向量形式。

    这个Embedding矩阵,是需要训练的,不过前人已经训练好了很多中文、英文等语料库的Embedding矩阵,可以直接拿来使用。

Embedding编码的优势:

NLP文本向量化工具 nlp词向量_词向量


当单词以词向量的形式表达出来以后,就可以计算两个单词之间的相关性,本质是计算两个词向量之间的相关性,从几何的角度来讲:两个词向量之间的相关性越高,向量之间的夹角就越小,反之亦然。

Embedding矩阵的维度:height=length(one-hot_vector),width=length(word_vector)

即如果一个词的one-hot编码长度为100,通过一个维度为100(height)*20(width)的Embedding矩阵之后,该词的词向量的长度为20维。

  1. 句向量
    如果我们需要分析两个句子之间地相似性,则需要将句子表示成句向量的形式,最简单的句向量的构造方式就是单纯地将句子中各个词向量相加,例如句子:“我 吃 了 饭”,

单词

词向量


0.1,0.1,0.1,0.1


0.2,0.2,0.2,0.2


0.3,0.3,0.3,0.3


0.4,0.4,0.4,0.4

则该句子的句向量为:[1.0,1.0,1.0,1.0],有了句向量,就可以计算句子之间的相关性。

(文中所用图片来自百度飞桨Ai Studio 平台课程《基于深度学习的自然语言处理 》)