如何用gensim word2vec处理大量的句子?

How to deal with large amount of sentences with gensim word2vec?

我有很多句子,问题是我无法一次将它们全部加载到内存中,特别是当我标记句子并将它们分成单词列表时,我的 RAM 很快就满了。

但我找不到任何示例来说明如何批量训练 gensim word2vec,这意味着在每个时期我想我必须以某种方式从磁盘加载批量数据,标记它们然后将其提供给模型卸载它并加载下一批。

当我没有足够的内存来加载所有句子(甚至不到 20%)时,我该如何克服这个问题并训练 word2vec 模型。

我的句子基本上都在一个文本文件里,每一行代表一个句子。

您可以按照 docs 中的建议定义自己的语料库,在这种情况下语料库的大小基本上无关紧要:

from gensim.test.utils import datapath
from gensim import utils

class MyCorpus(object):
    """An interator that yields sentences (lists of str)."""

    def __iter__(self):
        corpus_path = datapath('lee_background.cor')
        for line in open(corpus_path):
            # assume there's one document per line, tokens separated by whitespace
            yield utils.simple_preprocess(line)

然后训练如下:

import gensim.models

sentences = MyCorpus()
model = gensim.models.Word2Vec(sentences=sentences)