Hơn cả từ ngữ: tokenization (2)
Gói tidytext cho phép bạn phân tích dữ liệu văn bản bằng các gói thuộc "tidyverse" như dplyr và sparklyr. Cách làm sentiment analysis nằm ngoài phạm vi khóa học này; bạn có thể xem thêm ở Sentiment Analysis. Bài tập này nhằm giúp bạn trải nghiệm nhanh cách thực hiện trên Spark.
Về bản chất, sentiment analysis cho phép gán một điểm số hoặc cảm xúc cho từng từ. Ví dụ, trong bộ từ điển AFINN, từ "outstanding" có điểm +5 vì gần như luôn được dùng trong ngữ cảnh tích cực. "grace" hơi tích cực, có điểm +1. "fraud" thường dùng trong ngữ cảnh tiêu cực, có điểm -4. Bộ điểm AFINN được trả về bởi get_sentiments("afinn"). Để tiện lợi, dữ liệu từ đã được unnest và bộ từ điển sentiment đã được sao chép lên Spark.
Thông thường, bạn muốn so sánh sentiment giữa nhiều nhóm dữ liệu. Mẫu mã để làm việc này như sau.
text_data %>%
inner_join(sentiments, by = "word") %>%
group_by(some_group) %>%
summarize(positivity = sum(score))
Inner join lấy tất cả giá trị từ bảng thứ nhất, rồi tìm các giá trị khớp trong bảng thứ hai. Nếu tìm thấy, nó sẽ thêm dữ liệu từ bảng thứ hai. Khác với left join, inner join sẽ loại các hàng không khớp. Nguyên tắc được minh họa trong sơ đồ này.

Tương tự left join, inner join là một dạng mutating join vì chúng thêm cột vào bảng thứ nhất. Hãy thử đoán xem bạn nên dùng hàm nào cho inner join và cách dùng ra sao. (Gợi ý: cách dùng rất giống với left_join(), anti_join() và semi_join()!)
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 là spark_conn. Các tibble chứa từ trong tiêu đề và bộ từ điển sentiment lưu trên Spark đã được định nghĩa sẵn lần lượt là title_text_tbl và afinn_sentiments_tbl.
- Tạo biến tên
sentimental_artiststừtitle_text_tbl.- Dùng
inner_join()để nốiafinn_sentiments_tblvớititle_text_tbltheo"word". - Group by theo
artist_name. - Tóm tắt để tạo biến
positivity, bằng tổng của trườngscore.
- Dùng
- Tìm 5 nghệ sĩ có tiêu đề bài hát tiêu cực nhất.
- Sắp xếp
sentimental_artiststheo positivity tăng dần. - Dùng
slice_maxđể lấy 5 kết quả đứng đầu.
- Sắp xếp
- Tìm 5 nghệ sĩ có tiêu đề bài hát tích cực nhất.
- Sắp xếp
sentimental_artiststheo positivity giảm dần. - Lấy 5 kết quả đứng đầu.
- Sắp xếp
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.
# title_text_tbl, afinn_sentiments_tbl have been pre-defined
title_text_tbl
afinn_sentiments_tbl
sentimental_artists <- title_text_tbl %>%
# Inner join with sentiments on word field
___ %>%
# Group by artist
___ %>%
# Summarize to get positivity
___
sentimental_artists %>%
# Arrange by ascending positivity
___ %>%
# Get top 5
___
sentimental_artists %>%
# Arrange by descending positivity
___ %>%
# Get top 5
___