开始使用免费开始使用

AFINN:I'm your Huckleberry

现在我们转到 AFINN 词典。AFINN 词典使用从 5 到 -5 的数值评分,而不仅仅是正面或负面。与 Bing 词典的 sentiment 不同,AFINN 词典的情感分数字段名为 value

与之前一样,先使用 inner_join(),再使用 count()。接着,为了对每一行的得分求和,我们使用 dplyrgroup_by()summarize() 函数。group_by() 会将已有的数据框转换为分组数据框,后续操作会"按组"执行。然后,summarize() 允许您对数据框中的每个分组计算一个汇总值,使用诸如 sum()mean() 这样的聚合函数。因此,在我们的场景中可以这样写:

data_frame %>% 
    group_by(book_line) %>% 
    summarize(total_value = sum(book_line))

在整洁版的《哈克贝利·芬恩》中,第 9703 行包含单词 "best"、"ever"、"fun"、"life" 和 "spirit"。其中 "best" 和 "fun" 的 AFINN 分别为 3 和 4。聚合后,第 9703 行的总分为 7。

在 tidyverse 中,建议用 filter() 代替 subset(),因为它在更简洁的语法下整合了 subset() 的功能。下面示例对 data_frame 进行 filter(),筛选 column1 等于 24 的记录。请注意列名不加引号。

filter(data_frame, column1 == 24)

afinn 对象包含 AFINN 词典。huck 对象是马克·吐温的《哈克贝利·芬恩历险记》的整洁版,用于分析。

第 5400 行是:All the loafers looked glad; I reckoned they was used to having fun out of Boggs. 数据集中已经移除了停用词和标点。

本练习是课程的一部分

R 中的情感分析

查看课程

交互式实操练习

通过完成这段示例代码来试试这个练习。

# See abbreviated line 5400
huck %>% filter(line == 5400)

# What are the scores of the sentiment words?
afinn %>% filter(word %in% c("fun", "glad"))

huck_afinn <- huck %>% 
  # Inner Join to AFINN lexicon
  inner_join(___, by = c("___" = "___")) %>%
  # Count by value and line
  ___(___, ___)
编辑并运行代码