開始使用免費開始

不只是文字:斷詞(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_nametitle 欄位。
    • 使用 ft_tokenizer() 建立新欄位 word,其內容為將標題切分成的單字。
    • 收集結果。
    • 針對 word 欄位進行 mutate,使用 lapplyas.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
  ___
編輯並執行程式碼