使用R语言Bing词典统计酒店评论积极词时遇函数返回错误求助
问题解决:Bing词典积极词统计错误修正
错误原因
你遇到的Error: no function to return from, jumping to top level是因为原代码逻辑完全混乱:
- 定义的函数参数
id,review,count从未使用,反而在函数内部重复生成变量 for循环未用大括号包裹代码块,导致循环仅执行第一行(且每次都只处理第一条评论)- 不必要地构建语料库
Corpus,统计词频无需这一步 - 函数整体冗余,完全没必要用自定义函数实现需求
修正方案
R是向量化语言,无需写循环,直接用向量操作即可高效完成统计。以下是完整可运行代码:
1. 加载必要包
library(stringr) # 若使用tidytext自带的Bing词典,加载tidytext包 library(tidytext)
2. 获取Bing积极词列表
# 从tidytext提取Bing词典中的积极词 bing_pos <- get_sentiments("bing") %>% filter(sentiment == "positive") %>% pull(word) # 如果你已经有自己的bing.pos积极词向量,直接跳过上面的代码,使用你的向量即可
3. 处理数据集并统计积极词
# 假设你的数据集是名为reviews的data.frame,包含Reviews列(存储酒店评论) # 添加评论ID reviews$id <- 1:nrow(reviews) # 统计每条评论中的积极词数量:用正则匹配所有积极词 reviews$positive_count <- str_count( string = reviews$Reviews, pattern = paste(bing_pos, collapse = "|") # 将积极词拼接成正则表达式,匹配任意一个 ) # 生成最终结果(仅保留需要的列) result <- reviews %>% select(id, Reviews, positive_count) # 查看前几条结果 head(result)
说明
- 该代码直接对整个评论向量进行统计,比循环效率高得多
- 最终结果
result包含你需要的评论ID、评论内容和积极词数量三列 - 若你的评论中有大小写问题,可在统计前用
str_to_lower(reviews$Reviews)统一转为小写,避免漏匹配
内容的提问来源于stack exchange,提问作者ponyo
相关产品推荐
相关产品推荐

