贪心科技|让每个人享受个性化教育服务Skip-gram源码解读王老师2020/04/011贪心科技|让每个人享受个性化教育服务2贪心科技|让每个人享受个性化教育服务2主要工作•预处理。即变量的声明,全局变量的定义等•构建词库。即包含文本的处理,以及是否需要有指定词库等•初始化网络结构。即包含CBOW模型和Skip-Gram模型的参数初始化,Huffman编码的生成等•多线程模型训练。即利用HierarchicalSoftmax或者NegativeSampling方法对网络中的参数进行求解•最终结果的处理。即是否保存和以何种方式保存贪心科技|让每个人享受个性化教育服务3贪心科技|让每个人享受个性化教育服务3预处理•对word2vec需要使用的参数进行初始化,在word2vec中是利用传入的方式对参数进行初始化的贪心科技|让每个人享受个性化教育服务4贪心科技|让每个人享受个性化教育服务4构建词库•在word2vec源码中,提供了两种构建词库的方法,分别为•指定词库:ReadVocab()方法•从词的文本构建词库:LearnVocabFromTrainFile()方法贪心科技|让每个人享受个性化教育服务5贪心科技|让每个人享受个性化教育服务5构建词库的过程贪心科技|让每个人享受个性化教育服务6贪心科技|让每个人享受个性化教育服务6对词的哈希处理•在存储词的过程中,同时保留这两个数组:•存储词的vocab•存储词的hash的vocab_hash贪心科技|让每个人享受个性化教育服务7贪心科技|让每个人享受个性化教育服务7对词的哈希处理•在vocab_hash中存储的是词在词库中的Index。•在对词的处理过程中,主要包括:•计算词的hash值•检索词是否存在。如不存在则返回-1,否则,返回该词在词库中的索引贪心科技|让每个人享受个性化教育服务8贪心科技|让每个人享受个性化教育服务8对词的哈希处理贪心科技|让每个人享受个性化教育服务9贪心科技|让每个人享受个性化教育服务9对低频词的处理•在循环读取每一个词的过程中,当出现”vocab_size>vocab_hash_size*0.7”时,需要对低频词进行处理。其中,vocab_size表示的是目前词库中词的个数,vocab_hash_size表示的是初始设定的hash表的大小。在处理低频词的过程中,通过参数“min_reduce”来控制,若词出现的次数小于等于该值时,则从词库中删除该词。在删除了低频词后,需要重新对词库中的词进行hash值的计算。贪心科技|让每个人享受个性化教育服务10贪心科技|让每个人享受个性化教育服务10根据词频对词库中的词排序•基于以上的过程,程序已经将词从文件中提取出来,并存入到指定...