word2vec中文语料训练

star2017 1年前 ⋅ 1114 阅读

word2vec api

看下api:

gensim.models.word2vec.Word2Vec(sentences=None, size=100, alpha=0.025, window=5, min_count=5, max_vocab_size=None, sample=0.001, seed=1, workers=3, min_alpha=0.0001, sg=0, hs=0, negative=5, cbow_mean=1, hashfxn=<built-in function hash>, iter=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000)

其中的sentences是句子列表,而每个句子又是词语的列表,即list[list]类型。 切记!!

  • size是embedding纬度,即每个词的向量纬度
  • window是窗口大小
  • min_count用来做筛选,去除总的词频小于该值的词语

2 中文语料的csv文件

采用的是csv格式的中文语料:

chnl, nid, doc分别是频道,新闻id,文本

3 实现

# -*- coding: utf-8 -*-
import pandas as pdfrom gensim.models 
import Word2Vecfrom gensim.models.word2vec 
import LineSentence
df = pd.read_csv('体育.csv')
sentences = df['doc']
line_sent = []
for s in sentences:
    line_sent.append(s.split())  #句子组成list
model = Word2Vec(line_sent, 
                 size=300, 
                 window=5
                 min_count=1, 
                 workers=2)
model.save('./word2vec.model')
for i in model.vocab.keys(): #vocab是dict
    print type(i)    
    print i#model = Word2Vec.load('word2vec_model')
print model.wv['球员']

如果语料文件不是csv,而直接是训练的txt文件,可以使用LineSentence直接把文件读成正

确的格式

#model = Word2Vec(LineSentence('体育.txt'), size=300, window=5,min_count=1,

workers=2)

4 注意编码

训练用的编码格式要与使用model时的编码格式一致。 

例如,如果文件是utf-8的文件,读取时没有转成unicode,则model使用时也要使用utf-8格式,例如model.wv[‘球队’]; 训练是用unicode,则使用model.wv[u’球队’]

更多内容请访问:IT源点

相关文章推荐

全部评论: 0

    我有话说: