python - 读取 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']))
解决方案
推荐阅读
- ruby-on-rails - 如何在rails控制器中使用redirect_to url运行js?
- python - 如何在 Python 中的二进制图像中找到多个质心?
- python - 集成石墨和蝗虫时出错
- python - 如何创建一个 node.js 脚本,该脚本可以单击启动该服务器的外部网站上的按钮
- dynamics-crm - Power App 自定义连接器:无法调用 CRM 函数 RetrieveRolePrivilegesRole
- testing - 如何在不使用滚动和模拟用户活动的情况下从下拉列表中选择一个项目 - 在 TestCafe Studio 中拖动?
- docker - 仅在容器中运行某些部分的应用程序
- sql-server - 使用 SQL Server 在数据中查找循环
- android - 颤振中是否有任何应用程序交互检测器?
- reactjs - 使用 Express.js、React 和 Socket.io 实现通知系统的最佳方式?