1. เรียนรู้
  2. /
  3. Courses
  4. /
  5. Rで学ぶSentiment Analysis

Connected

Exercises

Stressed Out!

ここでは、特定のテキストに合わせてネガティブ語彙を調整します。 そのうえで、基本の polarity() スコアとカスタムのスコアを比較します。

Twenty One Pilots の人気曲に「Stressed Out」があります。 歌詞をざっと読むと、若き日のノスタルジーがテーマであることがわかります。 全体として、多くの人は極性(ポラリティ)はネガティブだと感じるでしょう。 歌詞では繰り返し、ストレス、不安、そして「ふるまう(pretending)」といった表現が登場します。

この曲の歌詞を、デフォルトの主観性レキシコンと、カスタムのレキシコンの両方で比較してみましょう。

最初に、追加したい用語がすでに key.pol の主観性レキシコンに含まれていないことを確認する必要があります。 確認方法の1つは grep() を使うことです。 grep() は、検索パターンに一致する文字を含む行を返します。 以下は、インデックス参照で使う例です。

data_frame[grep("search_pattern", data_frame$column), ]

スラングや新語がすでに key.pol レキシコンにないことを確認したら、追加します。 次のコードは、新しいレキシコンを構築するために sentiment_frame() を使っています。 このコードでは、sentiment_frame() は元のポジティブ語ベクトル positive.words を受け取ります。 次に、元の negative.words に、いずれもネガティブなスラングとみなされる "smh" と "kappa" を連結しています。 重みは指定することもできますが、デフォルトは 1 と -1 なので、以下では省略しています。

custom_pol <- sentiment_frame(positive.words, c(negative.words, "hate", "pain"))

これで極性スコアを適用する準備ができました。これ以降は「カスタム」主観性レキシコンが参照されます!

คำแนะนำ

100 XP

Twenty One Pilots の「Stressed Out」の歌詞を含む stressed_out を用意しました。

  • polarity() を stressed_out に適用し、デフォルトのスコアを確認します。
  • "stress" を含む語が key.pol にあるか確認します。 grep() を使い、x 列を検索してデータフレームをインデックス指定してください。
  • 新しい感情データフレームとして custom_pol を作成します。
    • まず、sentiment_frame() を呼び出し、最初の引数に positive.words を、新しい用語は連結せずにそのまま渡します。
    • 次に、c() を使って、negative.words に新しい用語 "stressed" と "turn back" を連結します。
  • もう一度 polarity() を stressed_out に適用し、追加パラメータ polarity.frame = custom_pol を指定して、新しい語がスコアをどのように変え、曲の内容をより正確に表すかを比較します。