词(汇)表与词向量
词(汇)表是指给每个单词(或字)编码,即用数字来表示单词(或字)。比较简单的词表是为每个单词(或字)按顺序进行编号,或将这种编号用One-Hot编码来表示。
由于计算机是无法识别文字的,所以必须要有一个向量来表示一个单词或者一个汉字(而图片天然就是一个二维向量),这个向量就叫做词向量。而用怎样的一个向量来代表这个单词或者汉字就是提取特征的过程,即向量化处理。
词向量(word embedding,词嵌入)是用向量来映射单词(或字),可以理解为One-Hot编码的升级版,它使用多维向量更好地描述词与词之间的关系,最大优势在于可以更好地表示上下文语义。
词嵌入算法是一种将词汇表中的词或短语映射为固定长度向量的技术。这种技术可以将one-hot编码表示的高维稀疏向量转换为低维且连续的向量。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。为了实现词嵌入,会通过特定的词嵌入算法,如word2vec、fasttext、Glove等,训练出一个通用的嵌入矩阵。这些词向量一旦训练完成,可以用在不同的NLP任务中。词嵌入既可以实现词向量的降维,又可以反映语义信息。
词向量的意义:词向量表示词与词之间的远近关系映射为向量间的距离,从而最大限度地保留了单词(或字)原有的特征,建立在分布假说(distributional hypothesis)基础上的,即假设词的语义由其上下文决定,上下文相似的词,其语义也相似。
One-Hot编码(独热编码):该编码的映射方法也可视为词向量,是最简单形式的词向量,即把每个字表示为一个很长的向量,这个向量的维度是词表大小,并且只有一个维度的值为1,其余的维度都为0。这个为1的度就代表了当前的字。就比如 [0, 1, 0, 0, ..., 0],其中向量维度为词典的个数|V|,当前词对应的位置为1,其他位置为0。
One-Hot编码与词向量的唯一区别就是仅仅将字词符号化,不考虑任何语义信息。而词的独热表示是高维的,且在高维向量中只有一个维度描述了词的语义。所以需要解决两个问题:
• 需要赋予词语义信息
• 降低维度
因而若将One-Hot编码每一个元素由整型改为浮点型,同时再将原来稀疏的巨大维度压缩嵌入到更小维度的空间,那么它就等同于词向量。
Distributed Representation(分布式表征):1984年由Hinton等人提出了分布式表示的思想。Hinton认为不应该将词表示成高维、稀疏、离散的向量,而应该将每个词对应到低维空间中的连续向量,词的含义由其向量表示及它与其他词的空间关系决定。分布式表征包含基于共现矩阵(Co-ocurrence Matrix)和基于语言模型两种,后者之中较为著名的有早期的Word2Vec模型。