1. 学ぶ
  2. /
  3. コース
  4. /
  5. Rで学ぶSentiment Analysis

Connected

演習

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.」です。ストップワードと句読点はすでにデータセットから除去されています。

指示1 / 3

undefined XP
    1
    2
    3
  • コードを実行して 5400 行目を確認し、いくつかの単語の感情スコアを見てみましょう。
  • inner_join() で huck を afinn 語彙と結合します。
    • huck はすでにパイプで関数に渡されているので、語彙を追加するだけでかまいません。
    • テキストの term 列と語彙の word 列で結合します。
  • count() を使い、value と line でグループごとの出現数を集計します。
    • 結果を huck_afinn に代入します。