line.split()

本文介绍了如何使用Gensim构建和训练word2vec模型,包括参数设置、模型保存和加载,以及online learning。接着讲解了doc2vec模型,它是word2vec的扩展,用于计算长文本向量。doc2vec需要LabeledSentence对象作为输入,模型训练过程与word2vec类似但内存需求与训练数据大小相关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

line.split()
  
  sentences = MySentences('/some/directory') # a memory-friendly iterator
  
  接下来,我们用这个迭代器作为输入,构造一个Gensim内建的word2vec模型的对象(即将原始的one-hot向量转化为word2vec向量):
  
  model = gensim.models.Word2Vec(sentences)
  
  如此,便完成了一个word2vec模型的训练。
  
  我们也可以指定模型训练的参数,例如采用的模型(Skip-gram或是CBoW);负采样的个数;embedding向量的维度等。具体的参数列表在这里
  
  同样,我们也可以通过调用save()和load()方法完成word2vec模型的持久化。此外,word2vec对象也支持原始bin文件格式的读写。
  
  Word2vec对象还支持online learning。我们可以将更多的训练数据传递给一个已经训练好的word2vec对象,继续更新模型的参数:
  
  model = gensim.models.Word2Vec.load('/tmp/mymodel')
  
  model.train(more_sentences)
  
  若要查看某一个word对应的word2vec向量,可以将这个http://www.yxin7.com/ word作为索引传递给训练好的模型对象:
  
  model['computer']  # raw NumPy vector of a word
  
  Doc2vec
  
  Doc2vec是Mikolov在word2vec基础上提出的另一个用于计算长文本向量的工具。它的工作原理与word2vec极为相似——只是将长文本作为一个特殊的token id引入训练语料中。在Gensim中,doc2vec也是继承于word2vec的一个子类。因此,无论是API的参数接口还是调用文本向量的方式,doc2vec与word2vec都极为相似。
  
  主要的区别是在对输入数据的预处理上。Doc2vec接受一个由LabeledSentence对象组成的迭代器作为其构造函数的输入参数。其中,LabeledSentence是Gensim内建的一个类,它接受两个List作为其初始化的参数:word list和label list。
  
  from gensim.models.doc2vec import LabeledSentence
  
  sentence = LabeledSentence(words=[u'some', u'words', u'here'], labels=[u'SENT_1'])
  
  类似地,可以构造一个迭代器对象,将原始的训练数据文本转化成LabeledSentence对象:
  
  class LabeledLineSentence(object):
  
  def __init__(self, filename):
  
  self.filename = filename
  
  def __iter__(self):
  
  for uid, line in enumerate(open(filename)):
  
  yield LabeledSentence www.yyzx66.cn (words=line.split(), labels=['SENT_%s' % uid])
  
  准备好训练数据,模型的训练便只是一行命令:
  
  from gensim.models import Doc2Vec
  
  model = Doc2Vec(dm=1, size=100, window=5, negative=5, www.ludingyule66.cn/ hs=0, min_count=2, workers=4)
  
  该代码将同时训练word和sentence label的语义向量。如果我们只想训练label向量,可以传入参数train_words=False以固定词向量参数。更多参数的含义可以参见这里的API文档。
  
  注意,在目前版本的doc2vec实现中,每一个Sentence vector都是常驻内存的。因此,模型训练所需的内存大小同训练语料的大小正相关。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值