【发布时间】:2022-12-16 21:22:19
【问题描述】:
基本上我有一个包含 300 000 行的数据框,我需要对其进行情绪分析。数据框包含 reddit cmets,所以我需要将它们转换成语料库,但我的函数只适用于 10 000 行:
IntelCorpus1 %>% tm_map(content_transformer(tolower)) %>% tm_map(removePunctuation) %>%
tm_map(removeNumbers) %>%
tm_map(removeWords, stopwords("english")) %>%
tm_map(stemDocument) %>%
tm_map(stripWhitespace) -> IntelCorpus1
基本上我需要将 300 000 个数据帧分成 10 000 个部分,对它们使用这个语料库函数,然后使用以下方法对其进行情感分析:
IntelSentiment1 <- analyzeSentiment(IntelCorpus1)
之后我需要把它放回去。它保持顺序很重要,因为我需要一个日期变量。
如果不重复相同的代码 30 次,最好的方法是什么? 不确定 split() 是否有效?
【问题讨论】:
-
你需要将
IntelCorpus1拆分成10,000份,因为analyzeSentiment只能取IntelCorpus1的10,000行,对吧?该函数是否返回一个数据框,即IntelSentiment是一个新的数据框吗? -
它更多的是 RAM 限制,因为创建的矢量将使用 20-30 gb 的 RAM,但是,是的,大约 10,000 是它可以使用的。是的,IntelSentiment 是一个新的数据框,intelcorpus 是一个大型的简单语料库。 @浪塘
-
还是
IntelCorpus1代表更大的IntelCorpus的 30 个拆分中的“第一个”?如果我知道其中哪一个(代码块中的管道或analyzeSentiment()函数是限制为 10,000 行的管道),我可以使下面的答案更相关 -
IntelCorpus1 是主数据帧的前 10,000 行。限制因素是 analyzeSentiment() 会使用太多 RAM,因此代码无法运行,所以这就是我必须分解它的原因。它不完全是 10,000,但大约是我的电脑可以运行的数量。 @浪塘
-
好吧,我删除了我的答案,因为您可能觉得它没有帮助。您仍然可以使用相同的方法(为 30 个左右的组创建一个指标,并循环遍历子集,每次运行
tm_map()调用,并将该管道的结果提供给analyzeSentiment()函数。您可以运行如果在每次运行该函数后(即在下一次循环之前)没有快速释放 RAM,就会遇到麻烦
标签: r dataframe sentiment-analysis corpus