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

Connected

演習

Happy songs!

もちろん、単に肯定語と否定語だけでは十分ではありません。この演習では、書き手の感情的な意図を示す「感情価シフター(valence shifter)」について学びます。これまでに、感情価シフターを含まないテキストに polarity() を適用しました。ここでは、強調(amplification)語と否定(negation)語がどのように働くかを確認します。

思い出してください。polarity() では、肯定語に対して強調語があると +0.8 が加算され、肯定スコアは 1.8 になります。否定語に対しては 0.8 が減算され、合計は -1.8 になります。その後、スコアは単語総数の平方根で割られます。

Frank Sinatra の次の例を考えてみましょう。

  • "It was a very good year"

"good" は 1、そして "very" がさらに 0.8 を加えます。したがって、1.8/sqrt(6) により極性は 0.73 になります。

"not" のような否定語は主観スコアを反転させます。Bobby McFerrin の次の例を考えてみましょう。

  • "Don't worry Be Happy"

否定語 "don't" によって "worry" は 1 になります。ここに "happy"(+1)を加えると合計は 2 です。全体で 4 語なので、2 / sqrt(4) により極性スコアは 1 になります。

指示

100 XP
  • データフレーム conversation を確認し、text 列にある "never" のような感情価シフターに注目します。
  • conversation の text 列に polarity() を適用して、会話全体の極性を計算します。
  • 学生ごとの極性スコアを計算し、結果を student_pol に代入します。
    • もう一度 polarity() を呼び出し、conversation の2つの列を渡します。
    • テキスト変数は text、グループ変数は student です。
  • 学生単位の結果を見るには、student_pol に対して scores() を使います。
  • student_pol に counts() を適用すると、データフレーム全体の文レベルの極性と、特定されたレキシコンの単語が表示されます。
  • 極性オブジェクト student_pol は、plot() でプロットできます。