1. Learn
  2. /
  3. Courses
  4. /
  5. Rで学ぶSentiment Analysis

Connected

Exercise

積み上げ棒グラフで比較してみよう

テキストを別の角度から見る方法として、文書全体のうち前向き(ポジティブ)な語と後ろ向き(ネガティブ)な語がそれぞれどれくらい含まれているかを把握するやり方があります。たとえばレストランのレビューでは「料理は良かった」と書かれていても、その後に「店内は汚く、スタッフは無礼で、駐車場は最悪だった」と続くかもしれません。そこで、文書のうちポジティブとネガティブのどちらに多くの分量が割かれているかを把握したくなります。この例では、ポジティブよりネガティブの割合が高くなります。

そのための1つの方法は、ポジティブ語とネガティブ語をそれぞれcount()で数え、特性語(subjectivity words)の総数で割ることです。レストランの例では、"good" はポジティブ1件、"dirty"、"rude"、"awful" はネガティブ3件として数えます。特性語が合計4件なので、単純計算ではそのレビューは25%がポジティブ、75%がネガティブと判断できます。

まずは、4冊の本(Agamemnon、Oz、Huck Finn、Moby Dick)を1つにまとめた tidy データフレームに対してinner_join()を実行します。前の演習と同様に、filter()とgrepl()を使います。

count()を実行するには、まず本ごと、次に感情ごとにデータをグループ化する必要があります。たとえば Agamemnon のポジティブ語は一度グループ化してから合計し、他の本のポジティブ語と混ざらないようにします。幸い、count()には複数の変数を直接渡せます。

Instructions 1/3

undefined XP
    1
    2
    3
  • all_booksを語彙辞書nrcと内部結合(inner join)します。
  • sentiment列に"positive"または"negative"が含まれる行だけに絞り込みます。つまり、sentiment列に対して否定なしのgrepl()を使い、"positive|negative"を残します。
  • bookとsentimentで集計してcount()します。