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

时间:2017-08-08 15:34:42

标签: python word2vec

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

代码1:

name := "demoSpark"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies ++= Seq("org.apache.spark"% "spark-core_2.11"%"2.1.0",
                              "org.apache.spark" % "spark-sql_2.10" % "2.1.0",
                              "org.apache.spark" % "spark-streaming_2.11" % "2.1.0",
                              "org.apache.spark" % "spark-mllib_2.10" % "2.1.0"
)

代码2:

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

1 个答案:

答案 0 :(得分:0)

你需要以某种方式对文件进行分块。由于您的文件是基于行的,因此您可以使用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语句中。

您需要在读取线条的同时组装矢量,而不是这样做。当你遇到每个单词时,你可以在那里删除停用词和lemitization,如果剩下任何东西,请将它添加到你的向量中。

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