分割して攻略:極性を使った比較クラウド
極性でコーパスを分割できることが分かったところで、実際にやってみましょう。ここでは感情に基づいてコーパスを分割し、全体ではなくサブセットごとに中身をのぞけるように、コードで手順を追っていきます。
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
___()