不只是文字:斷詞(1)
文字探勘的常見用途包括分析購物評論來判斷購買者對產品的感受,或分析財經新聞以預測對股價的情緒走向。為了分析文字資料,常見的前處理步驟是把文字轉成小寫(參考 tolower()),並將句子切分為單字。
ft_tokenizer() 會同時完成這兩個步驟。它的使用方式與你已看過的其他轉換相同,且不需要額外引數。
shop_reviews %>%
ft_tokenizer("review_text", "review_words")
由於輸出中每一列可能包含不同數量的單字,output.col 會是一個清單欄位,其中每個元素都是字串的清單。要分析文字資料,通常希望資料中是一列一個單字。這種「清單中的清單」的字串格式,可以使用 tidyr 套件的 unnest() 轉換成單一的字元向量。現在在 Spark 上尚無法直接進行 unnest,因此你需要先把資料收集回 R 再做轉換。達成這件事的程式碼範例如下。
library(tidyr)
text_data %>%
ft_tokenizer("sentences", "word") %>%
collect() %>%
mutate(word = lapply(word, as.character)) %>%
unnest(word)
如果你想更深入了解 tidyr 套件的使用方式,可以參考課程《Cleaning Data in R》:https://www.datacamp.com/courses/cleaning-data-in-r。
本練習屬於課程
使用 R 的 sparklyr:Spark 入門
練習說明
我們已為你建立 spark_conn 的 Spark 連線。連結到儲存在 Spark 中之曲目中繼資料的 tibble 已預先定義為 track_metadata_tbl。
- 從
track_metadata_tbl建立名為title_text的變數。- 選取
artist_name和title欄位。 - 使用
ft_tokenizer()建立新欄位word,其內容為將標題切分成的單字。 - 收集結果。
- 針對
word欄位進行 mutate,使用lapply和as.character將其攤平成字元向量的清單。 - 使用
unnest()攤平清單欄位,讓每列只包含一個單字。
- 選取
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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
___