始める無料で始める

感情による内省

この演習では、ポジティブ/ネガティブという単純な抽出を超えて、Plutchikの感情の輪にある8つの感情ごとにテキストを抽出し、ビジュアルを作成します。これにより、単なるポジティブ/ネガティブではなく、特定の感情に対応づけることで、単語の使われ方がより明確になります。

tidytext の主観性辞書「nrc」を使い、テキストとinner_join()を行います。「nrc」辞書には、8つの感情に加えて、positive と negative の語彙クラスも含まれています。そのため、inner_join()の後で positive と negative の語を除外する必要があります。方法の一つは、否定 !grepl() を使うやり方です。

「Global Regular Expression Print Logical」関数である grepl() は、各行で文字列パターンが見つかったかどうかを True または False で返します。この演習では、| 演算子を使って positive もしくは negative を検索します。これは「or」を表し、キーボードではエンターキーの上にある縦棒で表されることが多いです。! による否定が grepl() の前に付くため、T/F が反転し、"positive|negative" に一致するものは保持ではなく除外されます。

Object <- tibble %>%
  filter(!grepl("positive|negative", column_name))

次に、特定された単語に対して count() を適用し、pivot_wider() と組み合わせてデータフレームを整形します。

comparison.cloud() は行名を持つ入力を必要とするため、row.names 引数を指定して base R の data.frame に変換する必要があります。

この演習はコースの一部です

Rで学ぶSentiment Analysis

コースを見る

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

moby_tidy <- moby %>%
  # Inner join to nrc lexicon
  ___(___, by = c("term" = "word")) %>% 
  # Drop positive or negative
  ___(!___("___", sentiment)) %>% 
  # Count by sentiment and term
  ___(___, ___) %>% 
  # Pivot sentiment, using n for values
  ___(names_from = ___, values_from = ___, values_fill = ___) %>%
  # Convert to data.frame, making term the row names
  data.frame(row.names = "___")

# Examine
head(moby_tidy)
コードを編集して実行