0

我正在尝试在 R 中执行情绪分析。我想使用 afinn 或 bing 词典,但问题是我无法标记单词。

以下是我需要感悟的词:

情绪词

所以有 6 个词我想要表达: Pass Fail Not Ready Out of Business Pass w/conditions No entry

我如何使用任何词典来为这些词分配情绪

这是我的代码:

d<- as.data.frame(data$Results)
d<- as.data.frame(d[1:2000,])

colnames(d) <- "text"



#Making preprocessed file for raw data
preprocess<-data.frame(text=sapply(tweet_corpus_clean, identity), 
                       stringsAsFactors=F)

# tokenize
tokens <- data_frame(text = preprocess$text) %>% unnest_tokens(word, text)

当运行这个我得到:

senti_new

因为词典要分配情感,每行必须有一个标记

所以我不得不把这些词合并在一起。现在,当我使用 afinn 时,它无法理解什么是 outofbusiness 是显而易见的

tokens <- data_frame(text = preprocess$text) %>% unnest_tokens(word, text)


contributions = tokens %>%ungroup()%>%
  inner_join(get_sentiments("afinn"), by = "word") %>%
  group_by(word) %>%
  summarize(score = as.numeric(sum(score * n) / sum(n))) %>%
  arrange(desc(sentiment))

我如何对这 6 个单词进行情感分析?

4

1 回答 1

1

嗯,这对我来说听起来不像是情绪分析问题。你有六个确切知道的单词/短语,并且你知道它们在你的上下文中的含义。这听起来就像您只想分配这些单词/短语分数,甚至只是一个因素的级别。

你可以像我在这里展示的那样做一些事情,作为分析师决定你的每个短语应该有什么分数。这scores是您作为分析师构建的数据框,为每个文本选项合理选择分数,并且df是您正在分析的数据。

library(dplyr)

scores <- data_frame(text = c("pass",
                              "fail",
                              "not ready",
                              "out of business",
                              "pass w/conditions",
                              "no entry"),
                     score = c(3, -1, 0, 0, 2, 1))

scores
#> # A tibble: 6 x 2
#>   text              score
#>   <chr>             <dbl>
#> 1 pass               3.00
#> 2 fail              -1.00
#> 3 not ready          0   
#> 4 out of business    0   
#> 5 pass w/conditions  2.00
#> 6 no entry           1.00

df <- data_frame(text = c("pass",
                          "pass",
                          "fail",
                          "not ready",
                          "out of business",
                          "no entry",
                          "fail",
                          "pass w/conditions",
                          "fail",
                          "no entry",
                          "pass w/conditions"))

df %>%
  left_join(scores)
#> Joining, by = "text"
#> # A tibble: 11 x 2
#>    text              score
#>    <chr>             <dbl>
#>  1 pass               3.00
#>  2 pass               3.00
#>  3 fail              -1.00
#>  4 not ready          0   
#>  5 out of business    0   
#>  6 no entry           1.00
#>  7 fail              -1.00
#>  8 pass w/conditions  2.00
#>  9 fail              -1.00
#> 10 no entry           1.00
#> 11 pass w/conditions  2.00

情绪分析最适合您需要从中提取洞察力的大量非结构化文本。在这里,您只有六个文本元素,您可以使用您对领域和上下文的了解来分配分数。

于 2017-12-05T16:10:40.720 回答