AFINN:I'm your Huckleberry
ここでは AFINN 語彙に移ります。AFINN 語彙は、単にポジティブ/ネガティブだけでなく、5 から -5 までの数値スコアを持ちます。Bing 語彙の sentiment 列とは異なり、AFINN 語彙の感情スコア列は value と呼ばれます。
これまでと同様に、まず inner_join() を適用し、その後に count() を使います。次に、各行のスコアを合計するために、dplyr の group_by() と summarize() を使います。group_by() は既存のデータフレームを受け取り、処理が「グループごと」に行われるグループ化データフレームに変換します。続いて summarize() は、sum() や mean() のような集約関数を使って、各グループに対する値を計算できます。今回のケースでは次のように書けます。
data_frame %>%
group_by(book_line) %>%
summarize(total_value = sum(book_line))
tidy 版の『Huckleberry Finn』では、9703 行目に "best"、"ever"、"fun"、"life"、"spirit" という語が含まれています。"best" と "fun" の AFINN スコアはそれぞれ 3 と 4 です。集計後、9703 行目の合計スコアは 7 になります。
Tidyverse では、subset() よりも filter() を推奨します。subset() の機能を、より簡潔な文法で実現できるためです。以下は、column1 の値が 24 に等しい行で data_frame を filter() する例です。列名はクォートで囲まない点に注意してください。
filter(data_frame, column1 == 24)
afinn オブジェクトには AFINN 語彙が含まれます。huck オブジェクトは、分析用に整えた Mark Twain の『Adventures of Huckleberry Finn』の tidy 版です。
5400 行目は「All the loafers looked glad; I reckoned they was used to having fun out of Boggs.」です。ストップワードと句読点はすでにデータセットから除去されています。
この演習はコースの一部です
Rで学ぶSentiment Analysis
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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
___(___, ___)