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_reviewsをgroup_byにパイプしてid列でグループ化し、さらに%>%でmutate()に渡します。mutateの中で、新しい変数original_word_orderをseq_along(word)として作成します。 - tibble の
tidy_reviewsを出力します。 - 事前作成された「SMART」ストップワードを
data("stop_words")で R セッションに読み込みます。 - もとの
tidy_reviewsをanti_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 %>%
___(___)