自然语言处理学习——CS224课程笔记

自然语言处理学习——CS224课程笔记

第一部分:词向量(Lecture 1)

对于自然语言处理问题,涉及到的基本处理单元是一个个单词(英文为单词,中文为词汇),将单词表示成计算机能够理解的符号是解决自然语言处理问题的基础。词向量就是目前发展出的分布式表示单词语义信息的关键方法。在正式介绍词向量之前,先介绍一下其它几种表示单词和文档的方法。

1. one-hot编码方式与词袋模型(bag of words)

one-hot编码是一种离散式的单词表示方式。先综合所有单词,计算单词的数量N,从而建立N维向量,用每个维度的单位向量表示一个单词。比如对于 “I love china”, 使用 [1, 0, 0] 表示 ” I ", 使用 [0, 1, 0] 表示 " love ", 使用 [0, 0, 1] 表示 " china "。one-hot 尽管可以用向量的方式表示单词,但是无法表达出单词之间的关系,同时对于较大的语料库,容易出现表示向量维度过大且过于稀疏的问题。

在 one-hot编码的基础上,可以对文档进行相应的编码。一篇文档由n个单词组成,可以将这n个单词的向量加总得到最终的向量。这样的方法被成为词袋模型(Bag of words)。从根本上开看,词袋模型通过统计各个单词出现的次数来表示一篇文档。词袋模型的问题在于1、没有考虑不同单词之间的关系,2、没有考虑不同单词的相对重要性。对于第二点,实际上,不同单词由于在所有文档中出现的频次不同,因此其对于文档的表示重要性也是不同的,由此进一步发展处理考虑单词重要性信息的TF-IDF方法。

2. TF-IDF

TF表示单篇文档中的词频,IDF表示逆向文档频率。TF考虑了不同单词在数据库中出现的频次不同,通过计算在文档中的”相对出现频率“来表示单词,相当于做了归一化处理。而IDF则考虑了不同单词在各个文档中的分布情况。综合TF-IDF可以更好地表示文档信息。
自然语言处理学习——CS224课程笔记

3. N-gram方法

N-gram方法考虑了单词的出现顺序。对于一段话而言,不同单词不是随机出现的,而是有很强的相互关系。N-gram 通过建立条件概率模型(马尔可夫模型),计算N个单词同时出现的概率,从而将N个单词作为整体用概率的形式表示出来。N-gram尽管考虑了单词的顺序,然而其序列会随着语料库快速膨胀,并且存在严重的数据稀疏问题。

以上的集中方法都是离散式的表示方法,主要有以下缺点:
(1)无法衡量词向量之间的关系
(2)词表维度随着原料库的增加而膨胀
(3)普遍存在数据稀疏问题

为了解决以上问题,词的分布式表示方法被提了出来。词的分布式表示的基本思想是语义相近的词,对应的词向量也应该相近。Word2Vec 方法是计算分布式词向量的关键方法。

Word2Vec

Word2Vec 利用大量的语料信息将单词表示成词向量,在词向量的生成过程充分利用了语句中的上下文信息,从而使得词向量能够反映出语义信息。Word2Vec可以将one-hot编码的稀疏词向量表示成稠密编码的低维词向量,并使得词向量具有语义信息。有两种处理方式:CBOW (continuous bag of words ) 方法和Skipgrams方法。
CBOW通过建立全连接神经网络,使用一段语句中的n-1个词预测剩下的一个词,从而获得该单词对应的隐向量,并将该向量最为词向量。模型结构如下所示。
自然语言处理学习——CS224课程笔记
Skipgrams 通过建立利用类似的方法来获得词向量。不过神经网络的输入是要表示的单词,而输出则是剩下的n-1个的单词。模型结构如下所示。

自然语言处理学习——CS224课程笔记
两种方法最后得到的词向量都具有表示语义的功能。语义相近的单词,对应的词向量也相近,从而很好的解决了单词离散表示方法存在的问题。