1. 学ぶ
  2. /
  3. コース
  4. /
  5. sparklyr を使った Spark 入門(R)

Connected

演習

単語を超えて:トークン化(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 コースをご覧ください。

指示

100 XP

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単語の形式にします。