始める無料で始める

スケーリングした比較クラウド

レンタルレビューの極性スコアに「採点のインフレ」が起きていたのを覚えていますか? インサイトを掘り下げる別の方法として、スコアをいったん 0 に合わせてスケーリングし、その後にコーパスをサブセットするやり方があります。平均を 0 にするため、以前はポジティブだったコメントがネガティブ側に入れ替わる(その逆も)ことがあります。この演習ではスコアをスケーリングし、続いて comparison.cloud() を描き直します。「採点のインフレ」を取り除くことで、新たな気づきが得られるかもしれません。

前の演習では、bos_reviews$commentspolarity() を適用し、comparison.cloud() を作成しました。今回は comparison.cloud() を作る前に、結果を scale() でスケーリングします。可視化で新しい発見が見えるか確認してみましょう!

今回は復習要素が多いので、コードはほとんど用意されています。正しいオブジェクト名とパラメータを埋めて完成させてください。

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

Rで学ぶSentiment Analysis

コースを見る

演習の手順

  • 事前に読み込まれている bos_pol$all の一部を、インデックス [1:6,1:3] で確認します。
  • 極性スコア列 bos_pol$all$polarityscale() を適用し、scaled_polarity という新しい列を追加します。
  • ポジティブコメント用に、新しい列 bos_reviews$scaled_polarity が 0 より大きい (>) 行で subset() を作成します。
  • ネガティブコメント用に、新しい列 bos_reviews$scaled_polarity が 0 より小さい (<) 行で subset() を作成します。
  • pos_comments に対して paste() を用い、pos_terms を作成します。
  • 続いて neg_commentspaste() を用い、neg_terms を作成します。
  • まとめたドキュメント pos_termsneg_terms を 1 つにまとめ、all_terms というコーパス用の入力ベクトルにします。
  • いつもの tm のワークフローに従い、all_terms に対して VectorSource()VCorpus() の内側にネストして適用します。
  • all_corpus オブジェクトを使って TermDocumentMatrix() を作成します。これは基本的なクリーニング関数を含む TfIdf 重み付きの TDM です。
  • all_tdmas.matrix()all_tdm_m に変換します。既存のコードで列名を "positive""negative" に変更します。
  • 最後に! 行列オブジェクト all_tdm_m に対して comparison.cloud() を適用します。新しく頻出するネガティブ語に注目してみてください。思わぬ発見があるかもしれません。

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

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

# Review
___

# Scale/center & append
bos_reviews$___ <- scale(___)

# Subset positive comments
pos_comments <- subset(bos_reviews$comments, ___)

# Subset negative comments
neg_comments <- subset(bos_reviews$comments, ___)

# Paste and collapse the positive comments
pos_terms <- paste(___, collapse = " ")

# Paste and collapse the negative comments
neg_terms <- paste(___, collapse = " ")

# Organize
all_terms<- c(___, ___)

# VCorpus
all_corpus <- ___(VectorSource(___))

# TDM
all_tdm <- TermDocumentMatrix(
  ___, 
  control = list(
    weighting = weightTfIdf, 
    removePunctuation = TRUE, 
    stopwords = stopwords(kind = "en")
  )
)

# Column names
___ <- as.matrix(___)
colnames(all_tdm_m) <- c("___", "___")

# Comparison cloud
comparison.cloud(
  ___, 
  max.words = 100,
  colors = c("darkgreen", "darkred")
)
コードを編集して実行