tensorflow实现skipgram模型

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函数个参数定义如下

tensorflow实现skipgram模型_第1张图片
tensorflow实现skipgram模型_第2张图片


tensorflow实现skipgram模型_第3张图片

你可能感兴趣的:(tensorflow实现skipgram模型)