首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在有多个文本的一天中对情绪得分进行平均?

如何在有多个文本的一天中对情绪得分进行平均?
EN

Stack Overflow用户
提问于 2017-06-08 20:26:50
回答 1查看 870关注 0票数 0

我正在使用tm包在R中进行文本情感分析。我从路透社抓取了一些新闻文章,并根据它们的日期给它们起了一个变量名。我添加了a、b、c等来表示每天多篇文章,如下所示:

art170411a

art170411b

art170411c

art170410a

..。

..。

然后,我运行标准的正/负术语分析,给出每篇文章的情绪评分。我的问题是:我如何平均这些分数,以便我每天都能得到情绪分数?

我有一个包含3年多2000+文章的VCorpus。每篇文章都有日期戳。为了匹配肯定/否定术语,我已经将我的语料库转换为一个列表,然后是一个单词包,如下所示:

代码语言:javascript
复制
corp_list <- lapply(corp, FUN = paste, collapse=" ")
corp_bag <- str_split(corp_list, pattern = "\\s+")

我有两种格式的最终分数:

代码语言:javascript
复制
score_naive_list <- lapply(corp_bag, function(x) { sum(!is.na(match(x, pos))) - sum(!is.na(match(x, neg)))})

score_naive <- unlist(lapply(corp_bag, function(x) { sum(!is.na(match(x, pos))) - sum(!is.na(match(x, neg)))}))

所以我的问题是:如何将多个情绪得分平均为一天得分?

EN

回答 1

Stack Overflow用户

发布于 2017-06-08 21:03:01

我用可重现的数据重复了我的回答,一旦你对数据进行了排序,这应该可以很好地工作。

代码语言:javascript
复制
library(tm)
reut21578 <- system.file("texts", "crude", package = "tm")
corp <- VCorpus(DirSource(reut21578),readerControl = list(reader = readReut21578XMLasPlain))

timestamps <- meta(reuters,"datetimestamp")
days <- sapply(timestamps,strftime,format="%Y-%m-%d")
pos <- c("good","excellent","positive","effective")
neg <- c("bad","terrible","negative")

corp_list <- lapply(corp, FUN = paste, collapse=" ")
daily_bows <- aggregate(corp_list ~ days,data.frame(corp_list = unlist(corp_list),days = days),FUN=paste,collapse = " ")
corp_bag <- str_split(daily_bows$corp_list, pattern = "\\s+")

score_string <- function(x){
  sum(!is.na(match(x, pos))) - sum(!is.na(match(x, neg)))
}
daily_bows$scores <- sapply(corp_bag,score_string)
print(daily_bows[,c("days","scores")])

# days scores
# 1 1987-02-26      3
# 2 1987-03-01      1
# 3 1987-03-02      1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44435778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档