将大文件读入内存进行word2vec转换

Reading large files into memory for word2vec conversion

我正在尝试将一个大型 .log 文件(超过六万行)读入内存。我想应用在 gensim 中实现的 Word2Vec 算法。我尝试了多种解决方案,但其中 none 似乎有效。任何帮助将不胜感激。

代码 1:

def file_reader(file_obj):
    return [word for line in open(file_obj, 'r') for word in line.split()]

代码2:

for i,line in enumerate(open(file_obj,'r')):
       print(i,line)
       sentences += line

您需要以某种方式对文件进行分块。由于您的文件是基于行的,因此您可以使用 python 的正常行分块(即 for line in file)。你 运行 遇到的问题是这个

def file_reader(file_obj):
    return [word for line in open(file_obj, 'r') for word in line.split()]

将整个文件加载到您的 return 语句中。

您需要在读取该行的同时 assemble 向量而不是这样做。当您遇到每个单词时,就在那里进行停用词删除和左词化,如果还有任何剩余,请将其添加到您的向量中。

或者,如果您需要每个词的更多上下文,则逐句处理。在任何一种情况下,在读入时在 reader 中进行处理,而不是从文件中收集所有数据然后进行处理。