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

Connected

演習

感情による内省

この演習では、ポジティブ/ネガティブという単純な抽出を超えて、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 に変換する必要があります。

指示1 / 2

undefined XP
    1
    2
  • inner_join() を使って moby と nrc を結合します。
  • filter() で否定(!)と grepl() を用いて "positive|negative" を検索します。検索する列は sentiment です。
  • count() を使い、sentiment と term ごとにカウントします。
  • pivot_wider() でデータフレームを整形し、names_from = sentiment、values_from = n、values_fill = 0 を指定します。
  • data.frame() で通常のデータフレームに変換し、term 列を行名にします。
  • head() を使って moby_tidy を確認します。