Bắt đầu ngayBắt đầu miễn phí

Hơn cả từ ngữ: tokenization (1)

Các ứng dụng phổ biến của text-mining gồm: phân tích đánh giá mua sắm để xác định cảm nhận của người mua về sản phẩm, hoặc phân tích tin tức tài chính để dự đoán cảm xúc liên quan đến giá cổ phiếu. Để phân tích dữ liệu văn bản, các bước tiền xử lý thường gặp là chuyển văn bản về chữ thường (xem tolower()), và tách câu thành các từ riêng lẻ.

ft_tokenizer() thực hiện cả hai bước này. Cách dùng của nó theo cùng một mẫu như các phép biến đổi khác mà bạn đã thấy, không cần đối số nào khác.

shop_reviews %>%
  ft_tokenizer("review_text", "review_words")

Vì đầu ra có thể chứa số lượng từ khác nhau ở mỗi hàng, output.col là một cột danh sách, trong đó mỗi phần tử là một danh sách chuỗi. Để phân tích dữ liệu văn bản, thường sẽ thuận tiện hơn khi có mỗi hàng là một từ. Định dạng danh-sách-các-danh-sách-chuỗi này có thể được chuyển thành một vector ký tự duy nhất bằng unnest() từ gói tidyr. Hiện chưa có phương thức unnest dữ liệu trực tiếp trên Spark, vì vậy trước mắt bạn cần collect về R trước khi chuyển đổi. Mẫu mã để thực hiện như sau.

library(tidyr)
text_data %>%
  ft_tokenizer("sentences", "word") %>%
  collect() %>%
  mutate(word = lapply(word, as.character)) %>%
  unnest(word)

Nếu bạn muốn học thêm về cách dùng gói tidyr, hãy học khóa Cleaning Data in R.

Bài tập này là một phần của khóa học

Nhập môn Spark với sparklyr trong R

Xem khóa học

Hướng dẫn bài tập

Kết nối Spark đã được tạo sẵn cho bạn dưới tên spark_conn. Một tibble gắn với metadata của bản nhạc được lưu trong Spark đã được định nghĩa sẵn là track_metadata_tbl.

  • Tạo biến tên title_text từ track_metadata_tbl.
    • Chọn các trường artist_nametitle.
    • Dùng ft_tokenizer() để tạo trường mới word, chứa tiêu đề đã được tách thành các từ.
    • Thu kết quả bằng collect().
    • Biến đổi cột word, làm phẳng nó thành danh sách các vector ký tự bằng lapplyas.character.
    • Dùng unnest() để làm phẳng cột danh sách và đưa về mỗi hàng một từ.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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
  ___
Chỉnh sửa và Chạy Mã