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

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ư dplyrsparklyr. 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.

An inner join, explained using table of colors.

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()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

Xem khóa học

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_tblafinn_sentiments_tbl.

  • Tạo biến tên sentimental_artists từ title_text_tbl.
    • Dùng inner_join() để nối afinn_sentiments_tbl với title_text_tbl theo "word".
    • Group by theo artist_name.
    • Tóm tắt để tạo biến positivity, bằng tổng của trường score.
  • Tìm 5 nghệ sĩ có tiêu đề bài hát tiêu cực nhất.
    • Sắp xếp sentimental_artists theo positivity tăng dần.
    • Dùng slice_max để lấy 5 kết quả đứng đầu.
  • Tìm 5 nghệ sĩ có tiêu đề bài hát tích cực nhất.
    • Sắp xếp sentimental_artists theo positivity giảm dần.
    • Lấy 5 kết quả đứng đầu.

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