1. 文本表示
文本是一种非结构化的数据信息,是不可以直接被计算的。文本表示的作用就是将这些非结构化的信息转化为结构化的信息,这样就可以针对文本信息做计算,来完成我们日常所能见到的文本分类,情感判断等任务。 文本表示的方法有很多种,下面只介绍 3 类方式:- 独热编码 | one-hot representation
- 整数编码
- 词嵌入 | word embedding
2. 独热编码(One-Hot Representation)
假如我们要计算的文本中一共出现了4个词:猫、狗、牛、羊。向量里每一个位置都代表一个词。所以用 one-hot 来表示就是: 猫:[1,0,0,0] 狗:[0,1,0,0] 牛:[0,0,1,0] 羊:[0,0,0,1] 但是在实际情况中,文本中很可能出现成千上万个不同的词,这时候向量就会非常长。其中99%以上都是 0。one-hot 的缺点如下:- 无法表达词语之间的关系
- 这种过于稀疏的向量,导致计算和存储的效率都不高
3. 整数编码
这种方式也非常好理解,用一种数字来代表一个词,上面的例子则是: 猫:1 狗:2 牛:3 羊:4 将句子里的每个词拼起来就是可以表示一句话的向量。 整数编码的缺点如下:- 无法表达词语之间的关系
- 对于模型解释而言,整数编码可能具有挑战性。
4. 词嵌入(Word Embeding)
word embedding 是文本表示的一类方法。跟 one-hot 编码和整数编码的目的一样,不过他有更多的优点。 词嵌入并不特指某个具体的算法,跟上面2种方式相比,这种方法有几个明显的优势:- 他可以将文本通过一个低维向量来表达,不像 one-hot 那么长。
- 语意相似的词在向量空间上也会比较相近。
- 通用性很强,可以用在不同的任务中。
4.1 主流的Word Embeding算法
4.1.1 Word2vec
这是一种基于统计方法来获得词向量的方法,他是 2013 年由谷歌的 Mikolov 提出了一套新的词嵌入方法。 这种算法有2种训练模式:- 通过上下文来预测当前词
- 通过当前词来预测上下文