始める無料で始める

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

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

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() を使って可視化を作成しましょう。

この演習はコースの一部です

Rで学ぶSentiment Analysis

コースを見る

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

oz_df <- oz_pol$all %>%
  # Select text.var as text and polarity
  ___(text = ___, polarity = ___)

# Apply custom function pol_subsections()
all_terms <- ___(___)

all_corpus <- all_terms %>%
  # Source from a vector
  ___() %>% 
  # Make a volatile corpus 
  ___()
コードを編集して実行