【TEACH-NLP】文本数据处理-利用gensim训练词向量

利用gensim训练词向量的步骤相对来说比较简单。

准备工作,运行以下命令安装gensim,结巴分词

pip install gensim

pip install jieba

 

接下来得有一份数据,本文还是用获取词表时用到的news.txt文档。

首先要对数据进行预处理,gensim需要的数据是列表形式,简单举个例子:

[

[“我","是","中国人"]

[”我“,”爱“,”我的“,”祖国“]

[”钓鱼岛“,”是“,”中国“,”的“]

]

列表有二维,外面的一维代表整个数据,里面的每一行代表一个句子,句子又包含了很多词,句子的长度可以不固定。分词采用结巴分词。

原始文本是这样的:

【TEACH-NLP】文本数据处理-利用gensim训练词向量_第1张图片

预处理的代码如下:

【TEACH-NLP】文本数据处理-利用gensim训练词向量_第2张图片

预处理后的结果:

【TEACH-NLP】文本数据处理-利用gensim训练词向量_第3张图片

剩下的就“简单”了,直接把gensim当成黑盒来调用即可。

其中size是指词向量的维度,window是指滑动窗口的大小,其他含义感兴趣的可以搜狗一下。

第一行是定义并训练词向量,第二行保存训练好的词向量到指定位置。最后一行,打印出“首富”这个词的词向量。min_count=5是指一个词出现5次以上才会被加入词表中。对于我们这次用到的很短的文本来说,会丢失掉很多词,因此我在实际操作时设置min_count=1。

若设置成min_count=5,会出现以下错误提示。

KeyError: "word '首富' not in vocabulary"

最终的代码如下:

【TEACH-NLP】文本数据处理-利用gensim训练词向量_第4张图片

输出结果如下:

【TEACH-NLP】文本数据处理-利用gensim训练词向量_第5张图片

原始代码请前往:https://github.com/pkulics/teach_NLP/blob/master/2_process_data/get_vector.py

更多文章可前往:lichangsong.win

你可能感兴趣的:(自然语言处理)