Gensim模块
一款开源的第三方Python工具包,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。它支持包括TF-IDF,LSA,LDA和word2vec在内的多种主题模型算法。
训练语料的预处理:
通常需要对原始的文本进行分词、去除停用词等操作得到每一篇文档的特征列表。
利用gensim训练word2vec
word2vec简介:word2vec基于语言学中经典的分布式假设,包含了基于中心词预测周围词的skip-gram和基于周围词预测中心词的CBOW两大类方法,同时为了解决词表庞大带来的softmax计算问题,可分别采用基于Huffman树的层次softmax方法以及基于局部小样本优化的negative sampling方法来减少计算规模。
● gensim中与word2vec模型相关的重要类包括:
①gensim.models.keyedvectors.Word2VecKeyedVectors
词向量,记录了每个分词对应的n_dim维向量
②gensim.models.word2vec.Word2VecVocab
词字典,记录了分词字典,可用字典或通过Huffman树的形式存储
③gensim.models.word2vec.Word2VecTrainables
用全连接神经网络NN训练出来的权重矩阵
④gensim.models.word2vec.LineSentence
参数可为文件路径或者文件流对象
● word2vec是直接训练word
2vec词向量的类,其参数包括:
santence:语料,可为双层列表,即外层为sentence,内层为token,或者通过gensim.models.word2vec.LineSentence封装的语料文件;
size:词嵌入空间,默认值100;
window:上下文窗口大小c(整个上下文+中心词长度问2c+1),默认值5;
min-count:低频词阈值,在构建词汇表时不考虑频数低于该参数的值,默认值为5;
workers:并行数,如设定workers=multiprocessing.cup_count();
sg:模型框架,0-CBOW , 1-skip-gram;
hs:优化算法,0-negative-sampling,1-层softmax;
negative:负采样的个数,一般为5-20;
ns_exponent:负采样分布的幂指数,一般为0.75;
cbow_mean:在CBOW框架中,采用均值或和。0-和,1-均值;
alpha:梯度下降算法的学习率;
min_alpha:最小学习率,使得学习率动态线性下降。动态策略,可由min_alpha、alpha和iter共同得到;
max_vocab_size:限制RAM大小;
max_final_vocab:限制词汇表中的词个数;
sample:高频词的下采样阈值,即高于该值的词将采用下采样,默认值1e-3;
hashfxn:对初始词向量进行hash操作;
iter:迭代的epoch;
trim_rule:可定义对低频次的处理函数,默认None,即遵从min_count参数设定;
sorted_vocab:是否在构建词汇时,先对词进行长度排序,再编码。默认是;
compute_loss:是否保存中间的损失记录。
● 常用方法和属性
①model.wv
返回词向量对象
②model.wv.get_vector("word")
word词的向量
③model.wv.vocab
词汇表
④model.wv.most_similar("word")
最接近word的词向量
⑤model.wv.similar_by_word('word', topn=10)
最接近word的topn个的词向量
⑥model.wv.similarity('wd1', 'wd2')
wd1和wd2的相似度(夹角余弦)
⑦model.wv.doesnt_match(['wd1', 'wd2', 'wd3', 'wd4'])
词中不是同一类的
⑧model.save
整个训练模型的保存
⑨model.wv.save_word2vec_format( vector_file_path, vocab_file_path,, binary=False)
词向量的存储,分别存储为向量文件txt文件和模型bin文件(可为二进制或非二进制),注意顺序
⑩word2vec.Word2Vec.load()
整个模型的导入,然后主要调用其下wv的方法
⑩+①gensim.models.KeyedVectors.load_word2vec_format
直接导入词向量