NLP: P-1 词嵌入(Word Embedding) 技术
前言:文本处理是自然语言处理中的基础,即将文本翻译(编码)为计算机能够理解数字。进一步地,即是将词元用向量进行表征。本文从传统的独热编码出发,依据技术演变过程,引入并深入介绍词嵌入技术发展。包括但不限于:word2vec, 等
3.1 独热编码(one-hot encoding)
含义
用 N 位二进制向量编码 N 个状态的技术。具体来说,独热编码仅使用0、1作为向量元素,每个向量中有且仅有一个元素为1。可以理解为 N 维空间中每个轴的单位向量。这些向量表示是离散的。
流程
对于词表里的第 \(i\) 个词,使用一个长度为词表大小的一维向量,将向量的第 \(i\) 个元素置为 1,其余置为 0。
Example:
有这么一组词:cat, dog, pig, tree, red, fly 。对这组词进行独热编码,可以表示如下
| cat | dog | pig | tree | red | fly |
|---|---|---|---|---|---|
| 1 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 0 | 0 | 1 |
编码结果:
cat –> [1, 0, 0, 0, 0, 0];
dog –> [0, 1, 0, 0, 0, 0];
pig –> [0, 0, 1, 0, 0, 0];
tree –> [0, 0, 0, 1, 0, 0];
red –> [0, 0, 0, 0, 1, 0];
fly –> [0, 0, 0, 0, 0, 1];
优缺点
- 简单直接,提高算法对离散特征的处理能力
- 不同编码相互正交,无法表征不同词元之间的关系
- 矩阵稀疏,信息密度极低
- 当词元数量较多时,会导致维度爆炸,增加存储和计算成本
One-hot 编码只是对词进行了机械性地编号,只完成了单纯的将不同的词转化为不同向量的任务,没有表达出词的含义。
3.2 词袋模型(Bag of Words, BoW)
含义
将文本看成一个袋子,该文本是由其词汇组成(袋子由装有的词汇组成)。用袋子中每个词汇出现的频次组成的向量来表征这段文本。
流程
- 首先将要分析的文本找出所有的组成词汇(如一篇文章共有N个词汇),构建词袋
Example
文本1:good good study, day day up
文本2:people mountain people sea
–> 找出所有词汇,构成词袋:[“good”, “study”, “day”, “up”, “people”, “mountain”, “sea”],词袋长度为 7
–> 用长度为 7 的向量来表征文本,向量每个位置的数值为 该位置对应词袋中的词汇在该文本中出现的次数,则
–> 文本1:[2, 1, 2, 1, 0, 0, 0];文本2:[0, 0, 0, 0, 2, 1, 1]
优缺点
- 可以通过计算向量间相似度来一定程度判断文本相似度,或理解文本。如两个文本中出现较多cold, snow, ice, chrismas, scarf等,我们可能判断文本都描述冬天
- 缺乏相似词间的理解。如 I don’t like this city 和 I like this city,按照词袋模型,相似度可能较高,但实际上含义相反。
- 忽略语序、词汇间关系。会导致相同词汇组成的顺序不同的两句话在该模型下为完全相同的语义。
- 需要维护较大的词袋,同时向量稀疏
3.3 N-Gram
3.3 Word2Vec 模型
含义
2013年,google 团队提出训练词嵌入向量工具 word2vec。核心思想是根据上下文去预测关键词或根据关键词去预测上下文。
使用向量的多个维度甚至所有维度来表示一个词。具体来说,独热编码限制了每个向量里有且只有一个位置,有且只能为1,事实上可以取消这一限制,只限定向量长度。即给每个词元分配一个固定长度的不同向量。向量表示可以为连续、稠密的。大大压缩向量维度。
同时,不同向量间可以存在不同的关系。该关系可以反应词元间的关系。
流程
Reference
- Efficient Estimation of Word Representations in Vector Space -> word2vec, google, 2013.