python训练work2vec词向量(python gensim)

本文详述了使用Python的gensim库训练word2vec词向量的步骤,包括语料格式、模型训练、保存与加载,并介绍了模型在词语相似度、集合相似度等方面的使用方法。提供了一个从入门到实践的清晰流程。
摘要由CSDN通过智能技术生成

目录

看了很多文章,对与word2vec语料的处理没有那么清晰,现在写下自己处理流程,方便入手的小伙伴,望大家使用的过程中,少走弯路。

训练语料格式

模型训练

1.安装gensim

2.模型训练

3.模型保存

3.1模型训练保存与加载1(模型可继续训练)

3.1.1模型继续训练

3.2模型训练保存与加载2(模型不可继续训练)

模型使用汇总(词语相似度、集合相似度、词向量计算等)

1.获取每个词的词向量

2支持词语的加减运算。(实际中可能只有少数例子比较符合)

3计算两个词之间的余弦距离

4计算余弦距离最接近“word”的10个词,或topn个词

5计算两个集合之间的余弦似度

6.选出集合中不同类的词语

他词嵌入模型Other embeddings


看了很多文章,对与word2vec语料的处理没有那么清晰,现在写下自己处理流程,方便入手的小伙伴,望大家使用的过程中,少走弯路。

本博客主要是针对word2vec的使用,做一下介绍,理论部分不过多解释。

训练语料格式

语料需要处理为可迭代的列表见word2vec教程 语料处理,形成我们的参数“sentences

模型训练

1.安装gensim

pip install gensim

gensim中封装了包括了word2vec, doc2vec等模型,word2vec采用了CBOW(Continuous Bag-Of-Words,连续词袋模型)和Skip-Gram两种模型。

2.模型训练

from gensim.models import Word2Vec
model = Word2Vec(sentences, sg=1, size=100,  window=5,  min_count=5,  negative=3, sample=0.001, hs=1, workers=4)
 

gensim参数解释 

  1. sentences  第一个参数是预处理后的训练语料库。可迭代列表,但是对于较大的语料库,可以考虑直接从磁盘/网络传输句子的迭代。
  2. sg=1是skip-gram算法,对低频词敏感;默认sg=0为CBOW算法。
  3. size(int) 是输出词向量的维数,默认值是100。这个维度的取值与我们的语料的大小相关,比如小于100M的文本语料,则使用默认值一般就可以了。如果是超大的语料,建议增大维度。值太小会导致词映射因为冲突而影响结果,值太大则会耗内存并使算法计算变慢,一般值取为100到200之间,不过见的比较多的也有300维的。
  4. window(int)是一个句子中当前单词和预测单词之间的最大距离,window越大,则和某一词较远的词也会产生上下文关系。默认值为5。windows越大所需要枚举的预测此越多,计算的时间越长。
  5. min_count 忽略所有频率低于此值的单词。默认值为5。
  6. workers表示训练词向量时使用的线程数,默认是当前运行机器的处理器核数。
  • 还有关采样和学习率的,一般不常设置
  1. negative和sample可根据训练结果进行微调,sample表示更高频率的词被随机下采样到所设置的阈值,默认值为1e-3。
  2. hs=1表示层级softmax将会被使用,默认hs=0且negative不为0,则负采样将会被选择使用。
  3.  
from gensim.models import Word2Vec
sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]]
#数据也可以时分好词的文档,按行读取
#sentences=word2vec.Text8Corpus("分词后文件.txt")
model = Word2Vec(sentences, min_count=1)

详细请参考gensim的word2vec的官方说明,里面讲的很详细,不过常用到的参数就是上面介绍的。

3.模型保存

模型保存两种方式:

model = Word2Vec(common_texts, size=100, window=5, min_count=1, workers=4)
model.save(path) 或者 

model.wv.save(path)

两种的区别见3.1及3.2。

ps:model.save_word2vec_format("w2v_vector.bin", binary=False)这种方式是二进制保存,已经弃用改为 model.wv.save

3.1模型训练保存与加载1(模型可继续训练)

model.save(path)

Word2Vec.load(path)

使用以下命令初始化模型
from gensim.test.utils import common_texts, get_tmpfile
from gensim.models import Word2Vec

path = get_tmpfile("word2vec.model") #创建临时文件

model = Word2Vec(sentences, size=100, window=5, min_count=1, workers=4)
model.save("word2vec.model")

#加载模型
model = Word2Vec.load("word2vec.model")
</
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值