读取20G文本作为gensim Word2vec分析的列表

2024-04-25 06:06:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

我的计算机的内存大小是32gb。我使用Ubuntu20.04LTS和pycharm的Python3

从根本上说,在我的计算机中,是否不可能将20gb的文本文件作为列表加载。。?这意味着我最好给电脑增加更多的内存

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

这是我使用的代码。谢谢你的建议

##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']))

Tags: csv数据内存text文本df列表过程