Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R计算列表中的单词在句子中出现的频率_R_Sentiment Analysis - Fatal编程技术网

R计算列表中的单词在句子中出现的频率

R计算列表中的单词在句子中出现的频率,r,sentiment-analysis,R,Sentiment Analysis,目前正在参加一个MOOC并尝试一些情绪分析,但在R代码方面遇到了问题 我有一张坏词和一张好词的清单。例如,我的坏话是c(“凹痕”、“破损”、“磨损”、“破裂”)等等 我的数据框中有一个描述列表,我想做的是统计列表中出现了多少我的坏单词,以及每行出现了多少我的好单词 例如,假设这是我的数据帧 desc = c("this screen is cracked", "minor dents and scratches", "100% good", "in perfect condition")

目前正在参加一个MOOC并尝试一些情绪分析,但在R代码方面遇到了问题

我有一张坏词和一张好词的清单。例如,我的坏话是c(“凹痕”、“破损”、“磨损”、“破裂”)等等

我的数据框中有一个描述列表,我想做的是统计列表中出现了多少我的坏单词,以及每行出现了多少我的好单词

例如,假设这是我的数据帧

desc = c("this screen is cracked", "minor dents and scratches", "100% good",     "in perfect condition")
id = c(1,2,3,4)
df = data.frame(id, desc)
bad.words = c("cracked", "scratches", "dents")
我想做的是做一个sum列,计算每个坏单词在描述中出现的频率

所以希望我最后的df看起来像

id    desc                        sum
1     "this screen is cracked"    1
2     "minor dents and scratches" 2
3     "100% good"                 0
4     "in perfect condition"      0
到目前为止,我得到的是

df$sum <- grepl(paste( bad.words, collapse="|"), df$desc)

df$sum如果您正在查找一个和,
vapply()
sapply()
更合适。你可以

library(stringi)
df$sum <- vapply(df$desc, function(x) sum(stri_count_fixed(x, bad.words)), 1L)

如果您正在查找一个和,
vapply()
sapply()
更合适。你可以

library(stringi)
df$sum <- vapply(df$desc, function(x) sum(stri_count_fixed(x, bad.words)), 1L)

因为你可能会尝试不同的单词列表,比如good.words,bad.words,really.bad.words;我会写一个函数。我喜欢拉普拉,但瓦皮和其他人也会工作

countwords <- function(x,comparison){
  lapply(x,function(x,comparewords){
    sum(strsplit(x,' ')[[1]] %in% comparewords)
  },comparewords = comparison)
}
df$good <- countwords(df$desc,good.words)
df$bad <- countwords(df$desc,bad.words)

countwords因为你可能会尝试不同的单词列表,比如good.words,bad.words,really.bad.words;我会写一个函数。我喜欢拉普拉,但瓦皮和其他人也会工作

countwords <- function(x,comparison){
  lapply(x,function(x,comparewords){
    sum(strsplit(x,' ')[[1]] %in% comparewords)
  },comparewords = comparison)
}
df$good <- countwords(df$desc,good.words)
df$bad <- countwords(df$desc,bad.words)

countwords总和(grepl(粘贴(bad.words,collapse=“|”)和描述))?如果是这样的话,yeah尝试了一下,但是结果似乎并不正确,因为所有列都有相同的值。最终的目标是尝试使用正则表达式,所以crack也会匹配cracked和或crackstried,以使其更加清晰,因为仍然无法使用sapply可能是
colSums(sappy)(df$desc,function(x)sappy)(bad.words,function(y)sum(grepl(y,x‘‘)’)
sapply(strsplit(as.character(df$desc),“”),函数(x)sum(x%以%bad.words表示))
sum(grepl(粘贴(bad.words,collapse=“|”)说明))?如果是这样的话,yeah尝试了一下,但结果似乎并不正确,因为所有列都有相同的值。最终的目标是尝试使用正则表达式,所以crack也会匹配cracked和/或crackstried,以使其更加清晰,因为仍然无法使用sapply可能是
colSums(sappy)(df$desc,function(x)sappy)(bad.words,function(y)sum(grepl(y,x‘‘‘‘)
sapply(strsplit(as.character(df$desc),“”),函数(x)和(x%在%bad.words中))