数据集快照:
我得到以下图表:
代码如下:
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”这个词出现了四次“耻辱”。实际上,这首歌中只出现过两次。
什么是正确的方法?
答案 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