想了解NLP 绕不开的第一个概念就是词向量。
什么叫词向量,他又是干什么的呢?怎么最通俗易懂的描述词向量呢?


要了解啥是词向量,首先要从NLP处理流程说起。

字典序

文本对于计算机来说就是一个个鬼画符,计算机看不懂也没办法直接处理

因此往往NLP任务中的第一步就是:

汉字词语转换为计算机能看懂的数字

设想一下,如何将文本描述为数字呢?

其实最简单直接的一个方法就是将文本转换为字典序,也就是说这个汉字是字典中的第几个

就像Abandon 是英语字典中永远的第1个字母一样

那么Abandon就可以用数字1来表示

依此类推,happy 可能对应第着2345个词

通过类似的操作,就初步完成了让计算机看懂文字的第一步

这种方式也被称为标签编码或者整数编码

one-hot编码 (独热编码)

我们已经能够将文本转换为字典序,但对于NLP而言还是无法直接使用字典序

因为字典序的整数之间存在自然排序关系:后出现词的字典序 > 先出现词的字典序

但实际上字词之间并不存在对应的自然排序关系,每个字词理应等价

因此如果直接使用字典序会让模型假设字词间存在自然的次序关系,从而导致结果不佳或得到意外的结果

这种情况下,就要对整数表示使用 One-Hot 编码了。One-Hot 编码会去除整数编码,并为每个整数值都创建一个二值变量。

在颜色(color)的示例中,有 3 种类别,因此需要 3 个二值变量进行编码。对应的颜色位置上将被标为“1”,其它颜色位置上会被标为“0”。