R-使用syuzhet程序包查找每个NRC情绪和情感中的热门单词

时间:2018-07-11 12:51:28

标签: r text-mining sentiment-analysis tidytext

数据集快照:

enter image description here

我得到以下图表:

enter image description here

代码如下:

library(tidytext)
library(syuzhet)

lyrics$lyric <- as.character(lyrics$lyric)

tidy_lyrics <- lyrics %>% 
  unnest_tokens(word,lyric)

song_wrd_count <- tidy_lyrics %>% count(track_title)

lyric_counts <- tidy_lyrics %>%
  left_join(song_wrd_count, by = "track_title") %>% 
  rename(total_words=n)

lyric_sentiment <- tidy_lyrics %>% 
  inner_join(get_sentiments("nrc"),by="word")

lyric_sentiment %>% 
count(word,sentiment,sort=TRUE) %>%
group_by(sentiment)%>%top_n(n=10) %>% 
ungroup() %>%
  ggplot(aes(x=reorder(word,n),y=n,fill=sentiment)) + 
  geom_col(show.legend = FALSE) + 
  facet_wrap(~sentiment,scales="free") + 
  coord_flip()

问题是我不确定我得到的结果是否正确。例如,您可以看到“不良”是多种情绪的一部分。另外,如果我们检查lyric_sentiment,我们将看到“ Tim McGraw”这个词出现了四次“耻辱”。实际上,这首歌中只出现过两次。

什么是正确的方法?

1 个答案:

答案 0 :(得分:1)

您做对了。 nrc情绪可以将单词放入多个情绪部分。您可以在下面的示例中看到它。您还可以在nrc homepage

上查找值
library(dplyr)
library(tidytext)

nrc <- get_sentiments("nrc")
nrc %>% filter(word %in% c("bad", "shame"))
# A tibble: 9 x 2
  word  sentiment
  <chr> <chr>    
1 bad   anger    
2 bad   disgust  
3 bad   fear     
4 bad   negative 
5 bad   sadness  
6 shame disgust  
7 shame fear     
8 shame negative 
9 shame sadness