【NLP】Word2Vec笔记(代码)

参考

word2vec源码详解(非Python)

Word2Vec的参数解释

word2vector从参数解释到实战


参数解释

from  gensim.models import Word2Vec
#下面的参数均是默认值
Word2Vec(sentences=None,  #sentences可以是分词列表,也可以是大语料
        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, #训练算法的选择,sg=1,采用skip-gram,sg=0,采用CBOW
        hs=0,# hs=1,采用hierarchica·softmax,hs=10,采用negative sampling
        negative=5,#这个值大于0,使用negative sampling去掉'noise words'的个数(通常设置5-20);为0,不使用negative sampling
        cbow_mean=1,#为0,使用词向量的和,为1,使用均值;只适用于cbow的情况
        iter = 5,#迭代次数
        null_word = 0,
        trim_rule = None, #裁剪词汇规则,使用None(会使用最小min_count)
        sorted_vocab = 1,#对词汇降序排序
        batch_words = 10000,#训练时,每一批次的单词数量
        compute_loss = False,
        callbacks = ())

size: 对应代码中layer1_size, 表示词向量的维度,默认值是100。
train: 对应代码中train_file, 表示语料库文件路径。
save-vocab: 对应代码中save_vocab_file, 词汇表保存路径。
read-vocab: 对应代码中read_vocab_file, 表示已有的词汇表文件路径,直接读取,不用从语料库学习得来。
debug: 对应代码中debug_mode, 表示是否选择debug模型,值大于1表示开启,默认是2。开启debug会打印一些信息。
binary: 对应代码中全局变量binary,表示文件保存方式,1表示按二进制保存,0表示按文本保存,默认是0.
cbow: 对应代码中cbow, 1表示按cbow模型训练, 0表示按skip模式训练,默认是1。
alpha: 对应代码中alpha,表示学习率。skip模式下默认为0.025, cbow模式下默认是0.05。
output: 对应代码中output_file, 表示词向量保存路径。
window: 对应代码中window,表示训练窗口大小。默认是5
sample: 对应代码中sample,表示下采样阀值。
hs: 对应代码中hs, 表示按huffman softmax模式训练。默认是0, 表示不使用hs。
negative: 对应代码中negative, 表示按负采样模式训练, 默认是5。值为0表示不采用负采样训练;如果使用,值一般为3到10。
threads: 对应代码中num_threads,训练线程数,一般为12。
iter: 对应代码中iter,训练迭代次数,默认是5.
min-count: 对应代码中min_count,表示最小出现频率,低于这个频率的词会被移除词汇表。默认值是5
classes: 对应代码中classes,表示聚类中心数, 默认是0, 表示不启用聚类。


文章一 笔记

构建词汇库

  先判断是否已经有处理好现成的词汇库,有的话直接读取,没有的话再进行训练。词汇表训练过程分为以下几个步骤:

  • 读取单词(假设单词通过空格或者tab键或者EOL键进行分割)
  • 计算单词对应hash值
  • 通过hash值得到单词在词汇表中索引
  • 将单词加入到词汇表
  • 对词汇表根据词频进行降序排序
  • 词汇表裁剪函数(当词汇表中词汇量大于一定值时进行裁剪,先裁掉低频词,然后再裁掉高频词,直到词汇量满足要求)
  • 保存训练好的词汇表

初始化网络

  • 初始化网络参数
  • 构建哈夫曼树
  • 初始化负采样概率表

模型训练

结果处理

可以直接保存结果或者用k-means聚类算法分析结果


文章二 笔记

Word2Vec的参数解释 (使用Gensim训练Word2vec)

语料库预处理

原始的训练语料转为sentence迭代器

每一次迭代返回的sentence是一个word(utf8格式)的列表。可以使用Gensim中word2vec.py中的LineSentence()方法实现。

训练

将上面处理的结果输入Gensim内建的word2vec对象进行训练即可

保存

将训练好的模型保存在文件中。随后,可以调用load()函数将保存的模型加载进来。

你可能感兴趣的:(NLP,自然语言处理,word2vec,人工智能)