任务描述
词袋模型:离散、高维、稀疏。
分布式表示:连续、低维、稠密
word2vec词向量原理并实践,用来表示文本。
word2vec原理
词向量
向量空间模型(VSM)是一类被提出表示文本信息的方法,该模型的思想是通过一种向量化的方式对文本数据进行表示,根据该向量空间模型的思想,词向量的概念开始引入。第一种使用词向量对文本数据进行表示的方法被称为独热编码(One-hot)表示方法,该方法对文本单词进行独热编码,单词使用One-hot表示。该词向量是这样一种形式,向量中每一维都代表了一个词语,如果目标词语和某一维代表的词语相等,则该维度的数值为1,其他维度都为0。该方法虽然理解和表示简单,但也存在几个明显的缺点,其一在于该向量的长度和语料中词语的数量有关,且只有当目标单词和向量元素一致时该元素才为1,其他元素都为0,是一个非常稀疏的向量,这会带来沉重的存储和计算方面的问题。其二在于使用One-hot形式对词语进行表征,该方法忽视了文本数据中上下文之间的联系,使得每个单词被当成独立的元素,并且不同词语之间的距离变得难以度量,因为不同单词之间的距离都是1,这样就很难通过距离来定义相似或完全相反的词语。第二种词向量的表达方式是Hinton提出的,是一种词语的分布式表征,主要思想是通过词语的上下文单词对目标词汇进行训练刻画的,它能将每个单词刻画成一个等长的向量,使用这种方法训练的词向量,还有一个特点就是,相似的词语在空间中位置接近,这样就将每个单词的表示和该词的上下文建立了联系,通过词向量在空间中距离的度量,就能得到不同单词的近似词。
word2vec
Word2vec算法的提出是改进Bengio提出的神经网络语言模型,经过中间层和输出层的优化,Word2vec方法极大节约了训练时间,也有着极高的准确率。该词向量方法主要有两种语言模型,CBOW(Continuous Bag-of-Words Model)模型和Skip-gram(Continuous Skip-gram Model)模型。CBOW模型的原理图为
Skip-gram模型的原理图为
使用范例
下面使用gensim词向量训练
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
import pickle
import os