Rate this post

Hôm nay, chúng tôi đang bắt đầu chuỗi dự án R của mình và dự án đầu tiên là Phân tích cảm xúc. Vì vậy, trong bài viết này, chúng tôi sẽ phát triển dự án phân tích cảm xúc của riêng mình bằng cách sử dụng R. Chúng tôi sẽ sử dụng gói văn bản nhỏ để phân tích dữ liệu và cung cấp điểm cho các từ tương ứng có trong tập dữ liệu. Cuối cùng, bạn sẽ trở thành ngành sẵn sàng giải quyết mọi vấn đề liên quan đến lập trình R.

Các bài viết liên quan:

Trước khi chúng tôi bắt đầu, bạn phải thực hiện một phiên bản nhanh chóng để khái niệm R .

R Project – Phân tích cảm xúc

Mục đích của dự án này là xây dựng một mô hình phân tích cảm xúc cho phép chúng tôi phân loại các từ dựa trên cảm xúc của chúng, đó là liệu chúng có tích cực, tiêu cực và cả mức độ của nó. Trước khi bắt đầu với dự án R của mình, hãy để chúng tôi hiểu phân tích tình cảm một cách chi tiết.

Phân tích cảm xúc là gì?

Phân tích cảm xúc là một quá trình trích xuất các ý kiến ​​có các cực khác nhau . Theo các cực, chúng tôi có nghĩa là tích cực, tiêu cực hoặc trung tính. Nó còn được gọi là khai thác ý kiến ​​và phát hiện phân cực. Với sự trợ giúp của phân tích tình cảm, bạn có thể tìm ra bản chất của ý kiến ​​được phản ánh trong tài liệu, trang web, nguồn cấp dữ liệu truyền thông xã hội, v.v. Phân tích tình cảm là một kiểu phân loại trong đó dữ liệu được phân loại thành các lớp khác nhau. Các lớp này có thể có bản chất là nhị phân (tích cực hoặc tiêu cực) hoặc, chúng có thể có nhiều lớp (vui, buồn, tức giận, v.v.).

Nếu bạn không nhận thức được việc phân loại chủ đề trong R, đây là hướng dẫn tốt nhất – R Phân loại . 

Phát triển Mô hình Phân tích Cảm xúc của chúng tôi trong R

Chúng tôi sẽ thực hiện phân tích tình cảm với R trong dự án này. Tập dữ liệu mà chúng tôi sẽ sử dụng sẽ được cung cấp bởi gói R ‘janeaustenR’.

Để xây dựng dự án của chúng tôi về phân tích tình cảm, chúng tôi sẽ sử dụng gói văn bản ngăn nắp bao gồm các từ vựng về tình cảm có trong tập dữ liệu về ‘tình cảm’.

Cú pháp:

library(tidytext)
Sentiments

Chúng tôi sẽ sử dụng ba từ điển mục đích chung như:

  • AFINN
  • bing
  • loughran

Ba từ vựng này sử dụng các unigram. Unigram là một loại mô hình n-gram bao gồm một chuỗi gồm 1 mục, tức là một từ được thu thập từ một dữ liệu văn bản nhất định. Trong mô hình từ vựng AFINN cho điểm các từ trong khoảng từ -5 đến 5. Mức độ tiêu cực tăng tương ứng với tình cảm tiêu cực trong khi mức độ tích cực tăng lên tương ứng với mức độ tích cực. Mặt khác, mô hình từ điển bing phân loại tình cảm thành một loại nhị phân tiêu cực hoặc tích cực. Và cuối cùng, mô hình loughran thực hiện phân tích các báo cáo của cổ đông. Trong dự án này, chúng tôi sẽ sử dụng các từ vựng bing để trích xuất cảm xúc từ dữ liệu của chúng tôi. Chúng ta có thể truy xuất các từ vựng này bằng cách sử dụng hàm get_sentiments (). Chúng ta có thể thực hiện điều này như sau:

Cú pháp:

get_sentiments("bing")

Trong khi thực hành các khái niệm R thông qua dự án này, tôi khuyên bạn cũng nên bắt đầu chuẩn bị cho cuộc phỏng vấn R của mình. Dưới đây là một số câu hỏi phỏng vấn R hay nhất thường được hỏi và chắc chắn sẽ giúp ích cho bạn trong tương lai. 

Hãy tiếp tục phân tích tâm lý R

Thực hiện phân tích cảm xúc với sự tham gia bên trong

Trong bước này, chúng tôi sẽ nhập các thư viện của chúng tôi ‘janeaustenr’, ‘stringr’ cũng như ‘slimtext’. Gói janeaustenr sẽ cung cấp cho chúng ta dữ liệu văn bản dưới dạng sách của tác giả tiểu thuyết Jane Austen . Tidytext sẽ cho phép chúng tôi thực hiện phân tích văn bản hiệu quả trên dữ liệu của chúng tôi. Chúng tôi sẽ chuyển đổi văn bản trong sách của chúng tôi sang một định dạng gọn gàng hơn bằng cách sử dụng hàm unnest_tokens ().

Cú pháp:

library(janeaustenr)
library(stringr)
library(tidytext)

tidy_data <- austen_books() %>%
 group_by(book) %>%
 mutate(linenumber = row_number(),
   chapter = cumsum(str_detect(text, regex("^chapter [\\divxlc]", 
                          ignore_case = TRUE)))) %>%
ungroup() %>%
unnest_tokens(word, text)

Chúng tôi đã thực hiện thao tác ngăn nắp trên văn bản của mình sao cho mỗi hàng chứa một từ duy nhất. Bây giờ chúng ta sẽ sử dụng từ vựng “bing” để và triển khai bộ lọc () trên các từ tương ứng với niềm vui. Chúng tôi sẽ sử dụng cuốn sách Sense and Sensibility và lấy từ ngữ của cuốn sách để triển khai mô hình phân tích cảm xúc.

Cú pháp:

positive_senti <- get_sentiments("bing") %>%
 filter(sentiment == "positive")

tidy_data %>%
 filter(book == "Emma") %>%
 semi_join(positive_senti) %>%
 count(word, sort = TRUE)

Từ kết quả trên, chúng tôi quan sát thấy nhiều từ tích cực như “good”, “happy”, “love”, v.v. Trong bước tiếp theo, chúng tôi sẽ sử dụng hàm spread () để tách dữ liệu của chúng tôi thành các cột riêng biệt của cảm xúc tích cực và tiêu cực. Sau đó, chúng ta sẽ sử dụng hàm mutate () để tính tổng cảm xúc, tức là sự khác biệt giữa tình cảm tích cực và tiêu cực.

Cú pháp:

library(tidyr)
bing <- get_sentiments("bing")
Emma_sentiment <- tidy_data %>%
 inner_join(bing) %>%
 count(book = "Emma" , index = linenumber %/% 80, sentiment) %>%
 spread(sentiment, n, fill = 0) %>%
 mutate(sentiment = positive - negative)

Trong bước tiếp theo, chúng ta sẽ hình dung các từ có trong sách “Emma” dựa trên điểm số tích cực và tiêu cực tương ứng của chúng.

Cú pháp:

library(ggplot2)

ggplot(Emma_sentiment, aes(index, sentiment, fill = book)) +
 geom_bar(stat = "identity", show.legend = TRUE) +
 facet_wrap(~book, ncol = 2, scales = "free_x")

Bây giờ chúng ta hãy tiến hành đếm những từ tích cực và tiêu cực phổ biến nhất có trong cuốn tiểu thuyết.

counting_words <- tidy_data %>%
 inner_join(bing) %>%
 count(word, sentiment, sort = TRUE)
head(counting_words)

Trong bước tiếp theo, chúng tôi sẽ thực hiện trực quan hóa điểm tình cảm của mình. Chúng tôi sẽ vẽ biểu đồ điểm dọc theo trục được gắn nhãn với cả từ tích cực và tiêu cực. Chúng tôi sẽ sử dụng hàm ggplot () để trực quan hóa dữ liệu của chúng tôi dựa trên điểm số của chúng.

Đừng quên kiểm tra hướng dẫn mới nhất của chúng tôi trên dữ liệu trực quan sử dụng R . 

Cú pháp:

counting_words %>%
 filter(n > 150) %>%
 mutate(n = ifelse(sentiment == "negative", -n, n)) %>%
 mutate(word = reorder(word, n)) %>%
 ggplot(aes(word, n, fill = sentiment))+
 geom_col() +
 coord_flip() +
 labs(y = "Sentiment Score")

Trong hình dung cuối cùng, chúng ta hãy tạo một wordcloud sẽ mô tả các từ tích cực và tiêu cực lặp lại nhiều nhất. Đặc biệt, chúng tôi sẽ sử dụng hàm comparision.cloud () để vẽ biểu đồ cả từ tiêu cực và tích cực trong một wordcloud duy nhất như sau:

Cú pháp:

library(reshape2)
library(wordcloud)
tidy_data %>%
 inner_join(bing) %>%
 count(word, sentiment, sort = TRUE) %>%
 acast(word ~ sentiment, value.var = "n", fill = 0) %>%
 comparison.cloud(colors = c("red", "dark green"),
          max.words = 100)

Đám mây từ này sẽ cho phép chúng tôi hình dung một cách hiệu quả các nhóm dữ liệu tiêu cực cũng như tích cực. Do đó, bây giờ chúng ta có thể xem các nhóm dữ liệu khác nhau dựa trên cảm xúc tương ứng của chúng. Bạn có thể thử nghiệm với một số bộ dữ liệu khác như tweet để có được cái nhìn sâu sắc toàn diện về phân tích tình cảm. Tại bất kỳ thời điểm nào, nếu bạn cảm thấy cần phải điều chỉnh lại quá trình học R của mình, hãy liên hệ với websitehcm.

Bản tóm tắt

Trong blog này, chúng tôi đã xem qua dự án phân tích tình cảm ở R. Chúng tôi đã tìm hiểu về khái niệm phân tích tình cảm và triển khai nó trên tập dữ liệu của các cuốn sách của Jane Austen. Chúng tôi đã có thể phác họa nó thông qua các hình ảnh khác nhau sau khi chúng tôi thực hiện quấn dữ liệu trên dữ liệu của mình. Chúng tôi đã sử dụng một công cụ phân tích từ vựng – ‘bing’ trong trường hợp này của dự án của chúng tôi. Hơn nữa, chúng tôi cũng thể hiện điểm tình cảm thông qua một cốt truyện và cũng thực hiện một báo cáo trực quan về wordcloud.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now