1、读取语料库源文件,得到词表
预处理:分词jieba.cut( ) 、
去掉分词结果中的停用词if raw_words[i]not in stop_wordsand raw_words[i] !=' ']
vocabularys_list.extend(raw_words)
2、查看语料库信息、包括词频数、最高词频词语
排序:vocab_list =sorted(vocab_dict.items(), key=lambda x:x[1], reverse=True)
print('词典中词语总数:{}'.format(len(vocab_dict)))
print('top{}词频词语信息:{}'.format(topk, vocab_list[:topk]))
输出结果:
词典中词语总数:3514949
top10词频词语信息:[('年', 1108923), ('小行星', 665806), ('中', 637404), ('日', 455808), ('the', 345870), ('月', 314470), ('时', 289974), ('中国', 284148), ('日本', 263766), ('of', 254114)]
3、生成数据集
对词表中词出现的个数进行统计,并且将出现的罕见的词设置成了 UNK
4、训练 SkipgramModel
self.batch_size =128 #batch大小
self.vocabulary_size =200000 #词典大小
self.embedding_size =256 #word embedding大小
self.num_sampled =32 #负采样样本的数量
self.learning_rate =0.5 #学习率
self.valid_examples = valid_examples
self.skipgram()
这里提一下word2vec中常用的nce loss损失函数,nce loss函数个参数定义如下