跳到主要内容

AI-base-词嵌入模型

1. 词嵌入(文本向量化)

词嵌入是NLP中语言模型与表征学习技术的统称。它是指把一个维数为所有词的数量的高纬空间,嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为低维向量空间中的向量。

自然语言要能被计算机处理,需要转换成数值,所以自然语言需要一定的形式转化为数值,词嵌入就是将自然语言中的词语映射为数值的一种方式。

2. 词嵌入方法

2.1 one-hot模型

one-hot编码,就是找到输入中的所有tokens,然后对tokens编号(比如从1-1000,有1000个tokens),最后把输入的文本,里边的每个token去对应在1-1000里,对应的位置设置为1,其他为0,就会得到一个代表这个文本的1000维的向量。

one_hot模型,不考虑语法、词的顺序,只考虑是否出现,出现过就标为1,没出现就是0

很明显,这种编码方式,维度会很多,随着次的增加,维度快速爆炸

并且无法捕捉词之间的语义关系

维度爆炸,可以对通过hash(str)%dimension的方式,来做散列化处理(实质是指定了确定的维度,大家都压缩到这个维度里表达),但是当单词数较多的时候,散列冲突会比较严重,影响准确性

2.2 词袋模型(Bow Bag of Words)

不考虑语法、词的顺序,只考虑词出现的频率,将分好的词放到一个个袋子中,每个词都是独立的。

向量维度根据词典中不重复词的个数确定,向量中每个元素顺序与词典顺序一一对应,向量中每个数字是词典中当前单词在文本中出现的频率(次数)。

可能导致顺序不同的两句话,在机器看来是完全相同的含义(相同的向量)

2.3 N-gram模型

将文本内容,按字符进行大小为N的滑动窗口,每次滑动一个字符,每次滑动得到的gram组成词典序列。编码时,以该序列为词表,构造文本向量,计算词频,此模型考虑了词的顺序,出现频率。

N-gram 模型的基本原理是基于马尔可夫假设,在训练 N-gram 模型时使用最大似然估计模型参数——条件概率。当N更大的时候,对下一个词出现的约束性信息更多,有更大的辨别力,但是更稀疏,并且N-gram的总数也更多;当N更小的时候,在训练语料库中出现的次数更多,有更可靠的统计结果,更高的可靠性 ,但是约束信息更少。并且,N-gram模型无法避免零概率的问题,导致无法获得良好的语言模型

2.4 TF-IDF模型

前面两种考虑了词频的模型(bow,n-gram),基于单词在文本中出现的频率来猜测语义,但是频率越大的词往往对于判断没有实质性帮助,例如我、是、的之类的词语。

为了解决这个问题,有两种思路

  • 增加停用词stop word,通过自定义词典,去掉无用的高频词

  • TF-IDF模型

TF-IDF算法是一种可应用于多个领域的加权技术,它是基于统计的方法,根据某关键字或词在文档或语料集中出现的频率来估计它对于文件的重要程度[5]。TF-IDF算法常常被用于信息检索任务中。

算法的核心思想是,字词在文档中出现的次数越多,其重要程度就越高,但它如果在语料集出现的次数越多,它的重要程度则会随之降低。

TF(Term Frequancy)代表词频,表示词在文档中出现的频率。IDF(Inverse Document Frequency)代表逆文档频率。TF值和IDF值越高,则表示此词在一篇文档中出现概率高并且在其他文档中出现概率低,说明这个词具有良好的类别区分能力,应赋予其更高的权重。

由于tf-idf仅考虑词频相关的统计,没有关注单词之间的联系(用ngram不算吗?)所以依然存在向量维度较高、不能准确表示文本语义的缺点

2.5 word2vec模型

google团队2013年提出,核心思想是根据关键词预测其上下文,或者根据上下文预测关键词,从某种意义上讲,词的向量化表示是模型训练的副产物

word2vec词嵌入模型可以很好的表示词与词之间的类比关系和相似关系

word2vec模型包含两种结构:CBOWskip-gram;有两种优化方法softmax,negative sampling

2.5.1 CBOW(连续词袋)模型

CBOW(continuous bag of words)模型的核心思想是:在一个句子中遮住目标单词,通过其前面以及后面的单词来推测出这个单词w。首先规定词向量的维度V,对数据中所有的词随机赋值为一个V维的向量,每个词向量乘以参数矩阵W(VN维矩阵),转换成N维数据,然后要对窗口范围内上下文的词向量相加取均值作为输入层输入到隐藏层,隐藏层将维度拉伸后全连接至输出层然后做 一个softmax的分类从而预测目标词。最终用预测出的w与真实的w作比较计算误差函数,然后用梯度下降调整参数矩阵。

2.5.2 skip-gram(跳字)模型

skip-gram模型的核心思想是:模型根据目标单词来推测出其前面以及后面的单词。它的模型结构与CBOW正好相反,只不过它的输入是目标词,输出是目标词的邻接词,从模型结构示意图上看相当于输入层与输出层交换位置,先将目标词词向量映射到投影层,再将投影层的输出作为输出层的输入,最后预测目标词窗口范围内的邻接词。

Word2Vec 的缺点是,由于其训练出来的词嵌入向量表示与单词是一对一的关系,一词多义问题还是没有解决。单词在不同上下文中是具有不一样含义的,而 Word2Vec 学习出来的词嵌入表示不能考虑不同上下文的情况。 通过 Word2Vec 等技术方法得到的静态的词嵌入表示,其本质上就是当模型训练好之后,在不同的上下文语境中,单词的词嵌入表示是一样的,不会发生改变。

2.6 GloVe模型

GloVe模型是由斯坦福教授Manning、Socher等人于2014年提出的一种词向量训练模型。上文讲的 Word2vec模型只考虑到了词与窗口范围内邻接词的局部信息,没有考虑到词与窗口外的词的信息,没有使用语料库中的统计信息等全局信息,具有局限性。GloVe模型则使用了考虑全局信息的共现矩阵和特殊的损失函数,有效解决了 Word2vec的部分缺点。

GloVe模型训练词向量的第一步就是根据语料库构建共现矩阵。所谓的共现就是看一个词有没有在另一个词的附近出现,就是看一个词的移动窗口范围内出现词的次数。

GloVe 模型相对于Skip-Gram和CBOW利用了词共现的信息,克服了 word2vec 模型只关注上下文局部信息的缺点,在利用上下文信息的同时使用了词共现的信息,有效地结合了全局的统计信息和局部上下文信息。

同时,Glove的优点是训练快,可以拓展到大规模语料,也适用于小规模语料和小向量,且最终效果通常更好。