R - 使用 syuzhet 包在每个 NRC 情绪和情绪中查找热门词
R - Finding top words in each NRC sentiment and emotion using syuzhet package
数据集快照:
我得到以下图表:
代码如下:
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()
问题是我不确定得到的结果是否正确。例如,您可以看到 'bad' 是多种情绪的一部分。此外,如果我们检查 lyric_sentiment
,我们会看到单词 'shame' 在 'Tim McGraw' 中出现了四次。实际上它在这首歌中只出现了两次。
正确的做法是什么?
你做得对。 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
数据集快照:
我得到以下图表:
代码如下:
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()
问题是我不确定得到的结果是否正确。例如,您可以看到 'bad' 是多种情绪的一部分。此外,如果我们检查 lyric_sentiment
,我们会看到单词 'shame' 在 'Tim McGraw' 中出现了四次。实际上它在这首歌中只出现了两次。
正确的做法是什么?
你做得对。 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