You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R语言按日期分组统计文本词频实现自动化批量处理

R语言百万级文本按日期聚合词频宽表实现方案

方案选型说明

针对百万行量级的文本数据,选用计算效率、内存利用率更高的data.table+stringi组合实现全流程自动化处理,无需手动逐行操作文本,普通消费级PC即可在分钟级完成计算,最终输出结果完全匹配需求:行维度为日期,列维度为去重后的独立词汇,单元格值为对应日期下词汇的出现频次,无出现记录的词汇频次自动填充为0。

步骤1:安装加载依赖包

首次运行需先安装依赖,后续使用直接加载即可:

# 安装依赖(仅首次运行需要执行)
install.packages(c("data.table", "stringi"))

# 加载包
library(data.table)
library(stringi)

步骤2:构造测试数据(验证流程用)

可以先用示例数据跑通流程,确认结果符合预期后再替换成自己的真实数据集:

# 示例测试数据
raw_df <- data.frame(
  date = c(201901, 201902, 201902),
  text = c("Thank you for helping me", "You are amazing", "For helping with this")
)

步骤3:文本标准化与分词

自动完成文本大小写统一、标点去除、分词操作,解决大小写词汇(如Thank/thank)被识别为不同词的问题:

# 将原始数据转换为data.table高性能格式
setDT(raw_df)

# 文本清洗:全部转小写,移除标点符号
raw_df[, text_clean := stri_trans_tolower(stri_replace_all_regex(text, "[[:punct:]]", ""))]

# 分词,长格式存储(每条词汇占一行,保留原始行号避免计数错误)
word_long <- raw_df[, 
  .(word = unlist(stri_split_boundaries(text_clean, type = "word", skip_word_none = TRUE))),
  by = .(date, row_id = seq_len(.N))
]

步骤4:按日期聚合词频

统计每个日期下所有词汇的累计出现次数:

word_count <- word_long[, .N, by = .(date, word)]

步骤5:转换为目标宽表格式

直接生成行是日期、列是词汇、值为频次的宽表,未出现的词汇自动填充0:

word_freq_wide <- dcast(word_count, date ~ word, value.var = "N", fill = 0)

结果验证

以上述示例数据跑通后,输出的宽表完全匹配预期:

  • 201901行:thank/you/for/helping/me列值均为1,其余词汇列值为0
  • 201902行:you/are/amazing/for/helping/with/this列值均为1,thank/me列值为0

大数据量优化提示

如果数据集超过500万行、独立词汇量超过10万,可以先做过滤减少内存占用:

  • 移除无意义停用词(如the、a、an等通用虚词)后再转宽表,示例代码:
# 自定义需要过滤的停用词
stop_words <- c("the", "a", "an", "is", "was", "were", "of")
word_count <- word_count[!word %in% stop_words]
  • 分词完成后及时删除原始文本列释放内存:
raw_df[, c("text", "text_clean") := NULL]
gc() # 主动触发内存回收

内容的提问来源于stack exchange,提问作者cheeseburger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 21:03:18