记录一下通过Python+Gensim+jieba进行中文分词及特征提取的坑

最近想提取一些图片tags的word2vec特征,用于图文匹配。图片的特征通过预训练的VGG-16网络提取,这个没什么可细说的,今天主要讲讲如何提取中文tags的word2vec特征。

提取特征的第一步,就是通过gensim工具预训练好一个支持中文的word2vec模型。第二部,我们需要对tags进行精细分词。中文分词所采用的工具是jieba,用的人也比较多,网上也有很多的使用教程,这里不再赘述。一般情况下,通过语句“ jieba.cut(tags) ”得到的是一个生成器,因此我们通过语句“ ' '.join(jieba.cut(tags)) ”来得到分词后的结果。注意,这里已经出现坑了,分词之后的结果在python代码中的编码格式是unicode编码,然而,中文word2vec的key的编码格式是gbk编码,因此我们需要把unicode编码转换成gbk编码,语句是"sents.encode('gbk')"。这样转换完成之后,就能通过预训练好的word2vec模型正确索引了。

如果当前数据集中的中文单词不在vocabulary中,那又应该怎么办呢?暂时想到的方法是异常捕获的方式,即通过try...except语句,对于那些键值不存在的词,直接将其特征全部置为0,在后期训练的过程中,将这些数据点抛弃。

你可能感兴趣的:(记录一下通过Python+Gensim+jieba进行中文分词及特征提取的坑)