始める無料で始める

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))

tidy 版の『Huckleberry Finn』では、9703 行目に "best"、"ever"、"fun"、"life"、"spirit" という語が含まれています。"best" と "fun" の AFINN スコアはそれぞれ 3 と 4 です。集計後、9703 行目の合計スコアは 7 になります。

Tidyverse では、subset() よりも filter() を推奨します。subset() の機能を、より簡潔な文法で実現できるためです。以下は、column1 の値が 24 に等しい行で data_framefilter() する例です。列名はクォートで囲まない点に注意してください。

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
  ___(___, ___)
コードを編集して実行