Tự soi chiếu cảm xúc
Trong bài tập này, bạn sẽ đi xa hơn việc chỉ lọc theo ngôn ngữ tích cực và tiêu cực. Thay vào đó, bạn sẽ lọc văn bản theo từng cảm xúc trong 8 cảm xúc của bánh xe cảm xúc Plutchik để tạo một hình trực quan. Cách làm này giúp bạn rõ ràng hơn về cách dùng từ bằng cách ánh xạ sang một cảm xúc cụ thể thay vì chỉ tích cực hoặc tiêu cực.
Sử dụng từ điển chủ quan của tidytext, "nrc", bạn sẽ thực hiện inner_join() với văn bản của mình. Từ điển "nrc" có 8 cảm xúc cộng thêm hai lớp thuật ngữ tích cực và tiêu cực. Vì vậy sau khi inner_join(), bạn cần loại bỏ các từ tích cực và tiêu cực. Một cách là dùng toán tử phủ định ! cùng với grepl().
Hàm "Global Regular Expression Print Logical" grepl() sẽ trả về True hoặc False nếu mẫu chuỗi được tìm thấy ở mỗi hàng. Trong bài này, bạn sẽ tìm "positive" HOẶC "negative" bằng toán tử |, biểu diễn "hoặc" như minh họa dưới đây. Thường ký tự gạch dọc này nằm phía trên phím Enter trên bàn phím. Vì có phủ định ! đứng trước grepl(), giá trị T hoặc F sẽ bị đảo, nên chuỗi "positive|negative" sẽ bị loại bỏ thay vì được giữ lại.
Object <- tibble %>%
filter(!grepl("positive|negative", column_name))
Tiếp theo, bạn dùng count() trên các từ đã xác định và kết hợp với pivot_wider() để sắp xếp lại data frame.
comparison.cloud() yêu cầu đầu vào có tên hàng (row names), nên bạn sẽ cần chuyển về data.frame của base R, gọi data.frame() với đối số row.names.
Bài tập này là một phần của khóa học
Phân tích cảm xúc trong R
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.
moby_tidy <- moby %>%
# Inner join to nrc lexicon
___(___, by = c("term" = "word")) %>%
# Drop positive or negative
___(!___("___", sentiment)) %>%
# Count by sentiment and term
___(___, ___) %>%
# Pivot sentiment, using n for values
___(names_from = ___, values_from = ___, values_fill = ___) %>%
# Convert to data.frame, making term the row names
data.frame(row.names = "___")
# Examine
head(moby_tidy)