首页 > 解决方案 > 读取 20GB 文本作为 gensim Word2vec 分析的列表

问题描述

我有大约 20GB 的文本数据,由 \n 分隔。

我想将该文本作为列表读取以将其放入 gensim 库的 Word2vec 分析中(据我所知,gensim Word2vec 进程只允许输入的列表形式)。

我试图逐行读取文本数据并附加到空列表中。但它一直导致内存错误。

由于根据我在搜索中发现的内容,逐行读取并没有真正损坏内存使用,我怀疑这可能是因为将结果附加到列表的过程。但我不知道如何解决这个问题。

我电脑的内存大小是 32gb。我使用 ubuntu 20.04 LTS 和 python 3 和 pycharm。

根本不可能将 20gb 的文本文件作为列表加载到我的计算机中..?这意味着我最好为计算机添加更多 RAM 大小。

另外,我想知道作为 csv 而不是作为文本阅读是否会更好,因为我发现 pandas 有很好的工具来阅读大文件。(我尝试了这种方法,但由于内存问题,我未能将文本列转换为列表)

这是我使用的代码。感谢您的任何建议。

##tried with text file
corpus = []
with open("textfile.txt", "r") as f:
    for line in f:
        corpus.append(line.splitlines()[0])


##tried with dataframe
iter_csv = pd.read_csv("textfile.csv", iterator=True, sep=',', chunksize=300, header=None
                       , usecols=[4], names=['text'],encoding='UTF-8')
df_forCount_tmp = pd.concat(iter_csv, axis=0, ignore_index=True) 
#memory error....
corpus = []
def convertTolist(text):
    return ast.literal_eval(text)

for dfi, df in df_forCount_tmp.iterrows():
    corpus.extend(convertTolist(df['text']))

标签: pythonlistgensimword2vec

解决方案


推荐阅读