始める無料で始める

Tidy Text の Tibble を作成しましょう!

tidy の考え方を学んだので、このコードでデータを tibble に整理し、tidyverse で作業できるようにします。

以前、TermDocumentMatrix() オブジェクトに tidy() を適用すると、TDM が tibble に変換されることを学びました。今回は、comments というレビュー列から、単語データを直接作成します。

まずは unnest_tokens() を使って、テキストを小文字化し、レビューを単語ごとにトークン化します。

コーパスの各グループ内で、元の単語順を保持したいことがあります。その場合は mutate() を使います。mutate() の中で seq_along() を使い、オブジェクトの長さに応じて 1 からの連番を作成します。これで、記述されたとおりの単語順を保持できます。

tm パッケージでは、ストップワードを削除するのに removeWords() を使います。tidyverse では、まずストップワード辞書を読み込んでから、整形したテキストデータフレームとストップワードの間で anti_join() を適用します。

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

Rで学ぶSentiment Analysis

コースを見る

演習の手順

  • 元のレビューオブジェクト bos_reviews をパイプ(%>%)で unnest_tokens() に渡し、tidy_reviews を作成します。新しい列名として word を指定し、comments 列を宣言します。tidyverse では $ や引用符は不要です。
  • 新しい変数を tidy な方法で作成します。tidy_reviewsgroup_by にパイプして id 列でグループ化し、さらに %>%mutate() に渡します。mutate の中で、新しい変数 original_word_orderseq_along(word) として作成します。
  • tibble の tidy_reviews を出力します。
  • 事前作成された「SMART」ストップワードを data("stop_words") で R セッションに読み込みます。
  • もとの tidy_reviewsanti_join()%>% で渡して上書きします。anti_join() の中には、あらかじめ用意された stop_words 辞書を渡します。

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

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

# Vector to tibble
tidy_reviews <- bos_reviews %>% 
  ___(___, ___)

# Group by and mutate
tidy_reviews <- tidy_reviews %>% 
  ___(___) %>% 
  ___(original_word_order = ___(___))

# Quick review
___

# Load stopwords
___

# Perform anti-join
tidy_reviews_without_stopwords <- tidy_reviews %>% 
  ___(___)
コードを編集して実行