1、概述
在之前的章节当中我们从概率分布的角度来考虑文本的实际含义,并在此基础上进行了主题分析。但在实际的应用当中,我们对自然语言处理的需求远远不止这些。
其中一个非常重要的需求就是,我们能用vector的形式来表示单词的含义。以便于将这些vector进行其他的处理,如进入神经网络进行进一步处理,所以如何从语义角度将单词转化为向量就变得尤为重要。那如何使用vector来表示单词的含义呢,我们认为一个单词的含义是由其上下文的单词的含义所决定的。所以我们可以使用一种监督的机器学习的形式来实现这个过程。
在目前的行业应用中我们可以使用skip-gram 和 CBOW 模型来进行此过程。在gensim中已经集成了这个算法。我们可以使用搜狗实验室的新闻语料集合来测试一下word2vector的神奇效果。
2、生成vector
使用一份搜狗实验室的文本语料,该语料已经进行了分词处理,并使用一行存储一篇文章,文章中的关键词使用空格分割。如下图所示:
我们可以使用gensim直接读取这样的文件生成vector,如果数据预先存储到内存当中,则需要按照下面格式进行组织。
这里采用直接读取文件的形式,将语料输入给gensim并生成vector,请参照如下代码:
import multiprocessing
from gensim.models