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

Connected

演習

分割して攻略:極性を使った比較クラウド

極性でコーパスを分割できることが分かったところで、実際にやってみましょう。ここでは感情に基づいてコーパスを分割し、全体ではなくサブセットごとに中身をのぞけるように、コードで手順を追っていきます。

R セッションには、"The Wonderful Wizard of Oz" に対してpolarity()を適用して作成した oz_pol が用意されています。

簡単のため、極性スコアでコーパスを分割するシンプルなカスタム関数 pol_subsections() を用意しました。まず、この関数は各行がコーパスの文またはドキュメントであるデータフレームを受け取ります。次に、極性値が 0 より大きい(正)または小さい(負)箇所でデータフレームをサブセットします。最後に、正と負の文(ゼロ以外の極性)を、引数 collapse を使って結合し、用語がひとつのコーパスにまとまるようにします。最終的に、2 つのドキュメントを連結して、2 つの異なるドキュメントからなる 1 本のベクターにします。

pol_subsections <- function(df) {
  x.pos <- subset(df$text, df$polarity > 0)
  x.neg <- subset(df$text, df$polarity < 0)
  x.pos <- paste(x.pos, collapse = " ")
  x.neg <- paste(x.neg, collapse = " ")
  all.terms <- c(x.pos, x.neg)
  return(all.terms)
}

この時点で中立の文は省いており、残りのテキストを整理することに集中します。この演習でもオブジェクトを関数に渡すために %>% 演算子を使います。軽くクリーニングしたら、comparison.cloud() を使って可視化を作成しましょう。

指示1 / 3

undefined XP
    1
    2
    3
  • oz_pol から必要な部分を抽出します。
    • select() を呼び出し、1 列目の text を生テキストである text.var、2 列目の polarity を極性スコア polarity として指定します。
  • 次に pol_subsections() を oz_df に適用します。新しいオブジェクト名は all_terms とします。
  • all_corpus を作成するには、VectorSource() を all_terms に適用し、その結果を %>% で VCorpus() に渡します。