Nlp 我们能否以分布式方式构建word2vec模型?

Nlp 我们能否以分布式方式构建word2vec模型?,nlp,deep-learning,distributed-computing,gensim,word2vec,Nlp,Deep Learning,Distributed Computing,Gensim,Word2vec,目前我有1.2tb的文本数据来构建gensim的word2vec模型。大约需要15到20天才能完成 我想为5tb的文本数据构建模型,然后可能需要几个月的时间来创建模型。我需要尽量减少执行时间。我们有没有办法使用多个大系统来创建模型 请建议任何可以帮助我缩短执行时间的方法 仅供参考,我的所有数据都在S3中,我使用smart_open module来流式传输数据。由于涉及大量权重,训练一个拥有大量语料库的模型肯定需要很长时间。假设你的词向量有300个成分,你的词汇量是10000。权重矩阵的大小为30

目前我有1.2tb的文本数据来构建gensim的word2vec模型。大约需要15到20天才能完成

我想为5tb的文本数据构建模型,然后可能需要几个月的时间来创建模型。我需要尽量减少执行时间。我们有没有办法使用多个大系统来创建模型

请建议任何可以帮助我缩短执行时间的方法


仅供参考,我的所有数据都在S3中,我使用smart_open module来流式传输数据。

由于涉及大量权重,训练一个拥有大量语料库的模型肯定需要很长时间。假设你的词向量有300个成分,你的词汇量是10000。权重矩阵的大小为300*10000=300万

要为大型数据集构建模型,我建议您首先对数据集进行预处理。可以应用以下预处理步骤:

  • 删除停止词
  • 把成对的词或短语当作单个词来对待,比如把纽约当作纽约,等等
  • 对频繁出现的单词进行二次抽样,以减少训练示例的数量
  • 使用一种他们称为“负采样”的技术修改优化目标,这使得每个训练样本只更新模型权重的一小部分
上述任务也在谷歌发布的官方word2vec实现中完成。Gensim提供了非常漂亮的高级API来执行上述大部分任务。另外,请看一下这一点,以进一步优化技术


可以做的另一件事是不用训练你自己的模型,而是使用谷歌发布的已经训练过的l,它是1.5GB,包括300万个单词和短语的词汇向量,他们从谷歌新闻数据集中训练了大约1000亿个单词

您可以使用apachespark

Word2Vec在文本语料库中创建单词的向量表示。这个 该算法首先从语料库中构造一个词汇表,然后 学习词汇表中单词的向量表示。向量 表示可以用作自然语言处理中的特征 和机器学习算法

为了使我们的实现更具可伸缩性,我们训练每个分区 在每次迭代后分别合并每个分区的模型。 为了使模型更精确,可能需要多次迭代


您可以使用TensorFlow来完成这项工作。我建议您尝试对数据的样本子集进行培训。众所周知,在所有机器学习任务中,都存在一个点,即任何数量的额外数据都无法帮助学习。