Word Embedding
学习资料
Count based
Prediction based
Continuous bag of word (CBOW) model
Skip-gram
将文本表示为数字
机器学习模型接受向量(数字数组)作为输入。在处理文本时,首先需要制定一种策略将字符串转换为数字(或将文本向量化),然后再将其输入模型进行训练。在本节中,您将了解三种实现这一目标的策略。
One-hot encodings
作为第一个想法,您可以对词汇表中的每个单词进行“one-hot”。考虑句子 "The cat sat on the mat"。该句子中的词汇(或唯一单词)为(cat,mat,on,sat,the)。为了表示每个单词,您将创建一个长度与词汇表相等的零向量,然后在对应单词的索引位置上放置一个一。这种方法在以下图示中展示出来。
为了创建一个包含该句子编码的向量,您可以将每个单词的
one-hot
向量连接起来。
Encode each word with a unique number
第二种方法是使用唯一的数字对每个单词进行编码。继续上面的例子,您可以给 "cat" 分配数字 1,"mat" 分配数字 2,以此类推。然后,可以将句子 "The cat sat on the mat" 编码为如 [5, 1, 4, 3, 5, 2] 的密集向量。这种方法是高效的。与稀疏向量不同,您现在有一个密集向量(所有元素都是非零值)。
然而,这种方法有两个缺点:
- 整数编码是任意的(它不捕捉单词之间的任何关系)。
- 对于模型来说,整数编码可能很难解释。例如,线性分类器会为每个特征学习一个单一的权重。由于两个单词的编码之间没有相似性关系,因此这种特征权重组合是没有意义的。
Word embeddings
词嵌入(Word embeddings)为我们提供了一种使用高效且密集的表示方法,其中相似的单词具有相似的编码。重要的是,您不必手动指定这种编码。词嵌入是一组浮点数值的密集向量(向量的长度是您指定的参数)。与手动指定嵌入的值不同,它们是可训练的参数(模型在训练过程中学习的权重,就像模型学习密集层的权重一样)。常见的词嵌入维度为 8(对于小型数据集),在处理大型数据集时可以达到 1024 维。更高维的词嵌入可以捕捉单词之间的细粒度关系,但需要更多的数据来学习。
上面是一个词嵌入的图示。每个单词被表示为一个包含四个浮点数值的向量。另一种理解词嵌入的方式是将其视为一个"查找表"。在这些权重被学习之后,您可以通过在表中查找对应的密集向量来对每个单词进行编码。