単語を超えて:トークン化(1)
テキストマイニングは、購買者の商品に対する感情を把握するためのショッピングレビュー分析や、株価に関する感情を予測するための金融ニュース分析など、幅広い用途に活用されています。テキストデータを分析するための一般的な前処理として、テキストを小文字に変換する(tolower() を参照)ことや、文章を個々の単語に分割することが挙げられます。
ft_tokenizer() は、この2つの処理を同時に行います。他の引数は不要で、これまでに見てきた変換と同じパターンで使用できます。
shop_reviews %>%
ft_tokenizer("review_text", "review_words")
出力は行ごとに含まれる単語数が異なるため、output.col はリスト列となり、各要素は文字列のリストになります。テキストデータを分析する際は、通常1行に1単語の形式が扱いやすくなります。文字列リストのリスト形式は、tidyr パッケージの unnest() を使って単一の文字ベクトルに変換できます。現時点では Spark 上でデータをアンネストするメソッドがないため、変換前に R へ収集する必要があります。処理のコードパターンは以下の通りです。
library(tidyr)
text_data %>%
ft_tokenizer("sentences", "word") %>%
collect() %>%
mutate(word = lapply(word, as.character)) %>%
unnest(word)
tidyr パッケージの詳細については、Cleaning Data in R コースをご覧ください。
この演習はコースの一部です
sparklyr を使った Spark 入門(R)
演習の手順
Spark への接続は spark_conn として作成済みです。Spark に保存されたトラックメタデータに接続されたtibbleは、track_metadata_tbl として事前に定義されています。
track_metadata_tblをもとに、title_textという変数を作成します。artist_nameフィールドとtitleフィールドを選択します。ft_tokenizer()を使用して、タイトルを単語に分割した内容を含む新しいフィールドwordを作成します。- 結果を収集します。
lapplyとas.characterを使ってword列を文字ベクトルのリストに変換し、mutate()で更新します。unnest()を使用してリスト列を展開し、1行に1単語の形式にします。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# track_metadata_tbl has been pre-defined
track_metadata_tbl
title_text <- track_metadata_tbl %>%
# Select artist_name, title
___ %>%
# Tokenize title to words
___ %>%
# Collect the result
___ %>%
# Flatten the word column
___ %>%
# Unnest the list column
___