gensim的word2vec模型分批学习

自然语言处理的数据量通常很大,当数据集已经没办法装在整个内存里面了, 我们就需要分批构建word2vec。代码如下:


from gensim.models.word2vec import Word2Vec
from tqdm import tqdm

WORK_PATH = '.'

class Word2VecTrainingMaster():

    def __init__(self, new_work=True, corpus_path='', work_path='.', base_name='word2vec.model', num_features=100, min_word_count=1, context=4, auto=True, batch_size=100000, step_save=False):

        self.work_path = work_path
        self.corpus_path = corpus_path
        self.word2vec_model = self.make_word2vec_model(num_features, min_word_count, context)
        self.base_name=base_name
        self.word2vec_model.save(self.work_path + '/' + self.base_name)
        self.step_save = step_save

        if auto:

            with open(self.corpus_path) as f:

                reader = f.readlines()

                f.close()

            length = len(reader)

			INIT = True

            for batch_index in tqdm(range(0, length, batch_size)):

                batch = reader[batch_index: batch_index+batch_size]

                self.update_model(batch, init=INIT)

				INIT = False

            self.word2vec_model.save(self.work_path + '/' + self.base_name)

    def make_word2vec_model(self, num_features, min_word_count, context):

        return Word2Vec(size=num_features, min_count=min_word_count, window=context)

    def update_model(self, batch, init):

		if init:
			self.word2vec_model.build_vocab(batch)
		else:
			self.word2vec_model.build_vocab(batch, update=True)

        self.word2vec_model.train(batch, total_examples=self.word2vec_model.corpus_count, epochs=self.word2vec_model.iter)

        if self.step_save:

            self.word2vec_model.save(self.work_path + '/' + self.base_name)




if __name__ == '__main__':

    w2v = Word2VecTrainingMaster(corpus_path='lang.txt', num_features=300, work_path=WORK_PATH)






  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我可以为您讲解如何用gensim训练英文词向量。首先,您需要准备一份包含英文文本的语料库,可以是一个文本文件或者是一个文件夹中包含多个文本文件。然后,您需要安装gensim库以及其他相关依赖库。 接下来,您可以使用以下代码进行训练: ```python from gensim.models import Word2Vec import logging # 设置日志等级 logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO) # 读取语料库 with open('corpus.txt', 'r') as f: corpus = f.readlines() # 对文本进行预处理,例如分词、去除停用词等 processed_corpus = [[word for word in document.lower().split() if word.isalpha()] for document in corpus] # 训练模型 model = Word2Vec(processed_corpus, size=100, window=5, min_count=5, workers=4) # 保存模型 model.save('word2vec.model') ``` 在上述代码中,`size`参数表示词向量的维度,`window`参数表示窗口大小,`min_count`参数表示词频阈值,`workers`参数表示训练时使用的线程数。您可以根据需要调整这些参数。 训练完成后,您可以使用以下代码加载模型并进行相关操作: ```python # 加载模型 model = Word2Vec.load('word2vec.model') # 获取某个词的向量 vector = model.wv['word'] # 查找与某个词最相似的词 similar_words = model.wv.most_similar('word') ``` 以上就是使用gensim训练英文词向量的基本流程和操作,希望对您有帮助。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值