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
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_texttừtrack_metadata_tbl.- Chọn các trường
artist_namevàtitle. - Dùng
ft_tokenizer()để tạo trường mớiword, 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ằnglapplyvàas.character. - Dùng
unnest()để làm phẳng cột danh sách và đưa về mỗi hàng một từ.
- Chọn các trường
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
___