利用搜狐新闻语料库训练100维的word2vec——使用python中的gensim模块

Posted 米仓山下

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用搜狐新闻语料库训练100维的word2vec——使用python中的gensim模块相关的知识,希望对你有一定的参考价值。

  关于word2vec的原理知识参考文章https://www.cnblogs.com/Micang/p/10235783.html

  语料数据来自搜狐新闻2012年6月—7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据
  数据处理参考这篇文章

  模型训练:

# -*- coding: utf-8-*-
from gensim.models.word2vec import Word2Vec 
sentences = [[\'A1\',\'A2\'],[\'A1\',\'A3\',\'A2\']] 

num=0
with open(\'sohu_train.txt\') as trainText:  #, encoding=\'utf-8\'
    for line in trainText:
        id,catgre,body= line.split(\'^_^\')
        words=body.replace(\'\\n\',\'\').split(\'    \')
        sentences.append(words)
        # if num>1000:break
        num+=1
        # print(sentences)

model= Word2Vec(min_count=1)
print("start train ...")
model.build_vocab(sentences)
model.train(sentences,total_examples = model.corpus_count,epochs = model.iter)
print("train finished!",num)

model.save(\'./sohu_model/Model\')
#model.save_word2vec_format(\'/tmp/mymodel.txt\',binary = False)
#model.save_word2vec_format(\'/tmp/mymodel.bin.gz\',binary = True)
#前一组方法保存的文件不能利用文本编辑器查看但是保存了训练的全部信息,可以在读取后追加训练
#后一组方法保存为word2vec文本格式但是保存时丢失了词汇树等部分信息,不能追加训练
print("save finished!")

  模型使用:

# #模型使用
model = Word2Vec.load(\'./sohu_model/Model\')
print("load model sesuess!")
# model.most_similar([\'北京\'])

print u\'most similar with 北京:\'
for i in model.most_similar("北京"): #计算余弦距离最接近“北京”的10个词
    print i[0].decode(\'utf-8\'),i[1]

print u\'皇帝+女性-男性:\'
for i in model.most_similar(positive = [\'皇帝\',\'女性\'],negative = [\'男性\'],topn = 3):print i[0].decode(\'utf-8\'),i[1]

print u\'手机+移动-智能:\'
for i in model.most_similar(positive = [\'手机\',\'移动\'],negative = [\'智能\'],topn = 3):print i[0].decode(\'utf-8\'),i[1]

print u\'电影+科幻-剧情:\'
for i in model.most_similar(positive = [\'电影\',\'科幻\'],negative = [\'剧情\'],topn = 3):print i[0].decode(\'utf-8\'),i[1]

print u\'北京 vector:\'
print model[\'北京\']

  输出:

C:\\Python27\\lib\\site-packages\\gensim\\utils.py:1212: UserWarning: detected Windows; aliasing chunkize to chunkize_serial
  warnings.warn("detected Windows; aliasing chunkize to chunkize_serial")
load model sesuess!
most similar with 北京:
C:\\Python27\\lib\\site-packages\\gensim\\matutils.py:737: FutureWarning: Conversion of the second argument of issubdtype from `int` to `np.signedinteger` is deprecated. In future, it will be treated as `np.int32 == np.dtype(int).type`.
  if np.issubdtype(vec.dtype, np.int):
南京 0.670382142067
上海 0.661236405373
成都 0.639219224453
杭州 0.63784122467
广州 0.631313323975
深圳 0.624626278877
武汉 0.624594151974
昆明 0.620243370533
长春 0.61394149065
长沙 0.60389906168
皇帝+女性-男性:
哥 0.60431176424
魔术师 0.586149096489
魔女 0.581812143326
手机+移动-智能:
智能手机 0.605030536652
互联网 0.54615008831
苹果 0.539426982403
电影+科幻-剧情:
纪录片 0.648482918739
动画 0.639703273773
迪斯尼 0.61851131916
北京 vector:
[-0.08981118  0.18538047 -4.7453156  -1.7730242   2.0390635   2.6085184
  5.088326    2.8057106   2.6798103  -1.4660915   2.778077    2.4279277
  0.69682086 -3.0003173   2.1341784   0.32419717 -5.2817945   0.18809023
 -1.3016417   3.8344557  -0.87402123 -0.26100433  2.8857462  -2.725345
 -2.5024219  -0.70686543 -0.4838663  -2.2535524   0.23617841  3.329134
  3.9053504  -1.9609474  -3.4581995   1.2530506  -2.079397    1.6266809
  0.23296945  1.4600109  -1.9104419   0.80835503 -0.13650164  3.355157
  2.4561696   0.6016032  -1.0312346   1.6474588   1.320931    1.4579619
  1.8017172  -3.5526018   1.2293625   4.798621   -3.5554793   0.5800354
  3.7429204  -0.4906999  -1.3069346  -1.0603447  -0.95469594 -0.35445935
 -1.7658769  -3.2370284  -2.2224278  -0.56134427 -0.46095294  2.8492029
  2.7202766  -3.3692176   1.1739812  -1.9770668   0.37050596  1.1764477
 -0.27834406  5.033905    0.09570877 -0.5670941  -2.1803875  -0.9094422
  1.0485793   0.03497482 -2.07145    -0.8045679  -1.8192968   2.6160874
  0.5630188  -0.45463613 -0.22750562  2.2233796   3.4276621  -0.8689221
  1.5558586  -0.39026013 -1.1843458  -3.378433   -4.2200727   1.6359595
  2.27458    -1.6011585  -0.89109504  2.3993087 ]

 

以上是关于利用搜狐新闻语料库训练100维的word2vec——使用python中的gensim模块的主要内容,如果未能解决你的问题,请参考以下文章

处理搜狐新闻语料

使用weka对word2vec进行分类

基于word2vec的中文词向量训练

如何检查 word2vec 训练模型中是不是存在密钥

Windows3.5下对维基百科语料用word2vec进行训练寻找同义词相似度

word2vec 构建中文词向量