0

我正在分析数据框中包含单词的列most_used_words。2180

most_used_words

        word times_used
       <chr>      <int>
 1    people         70
 2      news         69
 3      fake         68
 4   country         54
 5     media         44
 6       u.s         42
 7  election         40
 8      jobs         37
 9       bad         36
10 democrats         35
# ... with 2,170 more rows

当我inner_join使用 AFINN 词典时,2180 个单词中只有 364 个被评分。这是因为 AFINN 词典中的单词没有出现在我的数据框中吗?如果是这样的话,我很害怕这可能会在我的分析中引入偏见。我应该使用不同的词典吗?还有其他事情正在发生吗?

library(tidytext)
library(tidyverse)    

afinn <- get_sentiments("afinn")

most_used_words %>%
  inner_join(afinn)   

          word times_used score
         <chr>      <int> <int>
     1    fake         68    -3
     2     bad         36    -3
     3     win         24     4
     4 failing         21    -2
     5    hard         20    -1
     6  united         19     1
     7 illegal         17    -3
     8    cuts         15    -1
     9   badly         13    -3
    10 strange         13    -1
    # ... with 354 more rows
4

1 回答 1

4
"Is this because the words in the in the AFINN lexicon don't appear in my dataframe?" 

是的。

内连接只会从每个 data.frame 返回匹配的行(单词)。当然,您可以尝试不同的词典,但这可能对您使用名词没有帮助。名词表示人、动物、地点、事物或想法。在上面的示例中,“us”、“people”、“country”、“news”、“democrats”都是不存在的名词afinn。这些都没有任何没有上下文的情感。欢迎来到文本分析的世界。

但是,根据您分析显示的输出,我认为您可以得出结论,您的单词列的情绪绝大多数是“负面的”。“fake”这个词出现的次数几乎是下一个最常用的词“bad”的两倍。

如果你有完整的句子,你可以使用sentimentrr 包获得上下文。看看这个:

install.packages("sentimentr")
library(sentimentr)
?sentiment

这将比您在这里所做的工作需要更多的工作,并且会产生更丰富的结果。但最终,它们很可能是相同的。祝你好运。

于 2017-12-09T16:21:46.493 回答