如何解决R Dataframe 列到 Python 中的较小尺寸列表
我正在处理一个 1006150 行和 3 列的数据框,其中每一行都包含一个维基百科资源的摘要:
>>> print(df)
individual abstract type
0 -ismist_Recordings "-ismist Recordings was founded in 1992 as -is... RecordLabel
1 –30–_(The_Wire) ""–30–" is the series finale of the HBO origin... TelevisionEpisode
2 !!! "!!! is a dance-punk band that formed in Sacra... Band
3 !!!_(album) "!!! is the eponymous debut studio album by ro... Album
4 !Arriba!_La_Pachanga "!Arriba! La Pachanga is an album by Mongo San... Album
目标是对抽象列进行矢量化以提供文本模型。
问题是,在 R 中,当我尝试获取摘要列表以执行此转换时,我以一个大的变量(大约 800 MB)结束,这会导致用完当我尝试运行矢量化器时的内存。我已经从 superml 包中尝试了 quanteda 的 dfm() 和 TfIdfVectorizer。使用 quanteda 我得到了一个大小为 2 Gb 的 dfm(太大而无法训练模型)并且 superml 包抛出了内存不足错误:
> df <- read.csv(file="t.csv",stringsAsFactors = F)
> abstracts_list <- df$abstract
> object.size(abstracts_list)
806675688 bytes
> library("superml")
Loading required package: R6
> tf <- TfIdfVectorizer$new()
> tf$fit_transform(abstracts_list)
Error: no se puede ubicar un vector de tamaño 7822.6 Gb
奇怪的是,在python中我没有这个问题,加载数据并提取摘要列表后,变量重约8 MB。
import pandas as pd
import sys
df = pd.read_csv("t.csv")
train_data = df['abstract'].tolist()
sys.getsizeof(train_data)
>>> sys.getsizeof(df['abstract'])
1093787258
>>> sys.getsizeof(train_data)
8049256
似乎在python中,使用numpy.ndarray.tolist将列转换为列表可以大大减少大小(R=800MB,Py=8MB),R中是否有类似的方法可以让我转换将数据框的列转换为较小尺寸的列表?
注意:在 python 和 R 脚本中,我使用了相同的 csv 文件。 注 2:与 Python 中的 R 不同,我可以毫无问题地使用 TfidfVectorizer (sklearn.feature_extraction.text.TfidfVectorizer)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。