تحلیل احساسات در توییتر با زبان R — راهنمای کاربردی

۱۷۴ بازدید
آخرین به‌روزرسانی: ۱۷ تیر ۱۴۰۲
زمان مطالعه: ۳ دقیقه
تحلیل احساسات در توییتر با زبان R — راهنمای کاربردی

«تحلیل احساسات» (Sentiment Analysis) راهکاری قدرتمند برای اندازه‌گیری عقاید افراد پیرامون یک موضوع مشخص در برهه مشخصی از زمان است. در این مطلب، با استفاده از «بسته‌های» (Packages) زبان برنامه‌نویسی R شامل twitteR و tidytext تحلیل احساسات به منظور تعیین عواطف موجود پیرامون قیمت کنونی طلا استفاده شده است. پروژه انجام شده در این مطلب روی داده‌های انگلیسی صورت پذیرفته، ولیکن مفهوم و روش کلی پیاده‌سازی برای دیگر زبان‌ها نیز مشابه است. تفاوت‌ها تنها در بخش‌های مربوط به پردازش زبان طبیعی بروز می‌کند.

دانلود توییت‌ها با بسته twitteR

برای فراهم کردن امکان دانلود توئیت‌ها، باید برنامه کاربردی مناسب برای انجام آن را از این مسیر (+) ساخت. در مسیر مذکور، کاربر باید حساب کاربری بسازد که کدهای احراز هویت گوناگون برای اتصال به API را در اختیار او قرار می‌دهد.

اکنون و در ابتدا، با استفاده از قطعه کد زیر، دسترسی را احراز هویت کرده و سپس، ۵۰۰ توییت مربوط به کلیدواژه جست‌و‌جوی «قیمت طلا» (gold prices) (توییت‌های به زبان انگلیسی) دانلود می‌شوند.

1library(twitteR)
2setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_secret)
3
4tweets<-searchTwitter("gold prices", n=500, since='2018-06-25')
5df <- twListToDF(tweets)

اکنون، توییت‌ها را از حالت لیست خارج کرده (به بردار تبدیل می‌شوند) و از dplyr برای ذخیره‌سازی آن‌ها به صورت یک مشاهده استفاده می‌شود.

1wctext<-paste(unlist(df), collapse=" ")
2str(df)
3
4library(dplyr)
5wctext <- data_frame(line = 1, text = wctext)
6wctext

انجام تحلیل احساسات در توییتر با tidytext

در ادامه، چگونگی انجام تحلیل عواطف با استفاده از tidytext (+) آموزش داده شده است. اکنون، «کلمات بازدارنده» (Stop Words)، پیش از انجام گام‌های دیگر از تحلیل‌ها حذف می‌شوند. کلمات بازدارنده به واژگانی گفته می‌شود که به طور متداول مورد استفاده قرار می‌گیرند، ولی الزاما ارزشی به تحلیل احساسات اضافه نمی‌کنند.

بنابراین، باید آن‌ها را حذف کرد زیرا تعداد آن‌ها زیاد است و وجود آن‌ها مانع کسب هر گونه بینش مفیدی از داده‌ها طی انجام تحلیل‌ها می‌شود.

1library(tidytext)
2
3wctext2 <- wctext %>%
4  unnest_tokens(word,text)
5
6data(stop_words)
7
8wctext2 <- wctext2 %>%
9  anti_join(stop_words)

علاوه بر آن، لیستی از کلمات بازدارنده نیز در یک فایل متنی جدا ذخیره می‌شوند (شامل واژه‌های trump، twitter و gold) و آن‌ها نیز از تحلیل‌ها حذف می‌شوند. شایان توجه است که کلمه gold حذف می‌شود، زیرا tidytext آن را به عنوان یک کلمه مثبت در نظر می‌گیرد، اما در این مساله خاص، وجود آن مانع اندازه‌گیری احساسات صحیح نسبت به کالای طلا می‌شود.

1setwd("C:/Users/michaeljgrogan/Documents/a_documents/computing/data science/datasets")
2library(tm)
3
4stopwords = readLines('stopwords.txt')
5x  = wctext2$word
6x  =  removeWords(x,stopwords)
7
8wctext2 <- x
9wctext2<-data.frame(wctext2)

اکنون، یک tibble ساخته شده که در آن وقوع هر کلمه در تحلیل‌ها اندازه‌گیری می‌شود، و سپس موتور احساسات Bing برای رتبه‌دهی به کلیدواژه‌ها مورد استفاده قرار می‌گیرد.

1tibble<-wctext2 %>%
2  count(wctext2,sort=TRUE)
3col_headings<-c("word","n")
4names(tibble) <- col_headings
5
6tibblefiltered = tibble %>% filter(n > 1)
7attach(tibblefiltered)
8barplot(tibblefiltered$n, main="Word Frequency", 
9        xlab="Word", names.arg=tibblefiltered$word)
10str(tibblefiltered)
11barsentiment <- tibblefiltered %>%
12  inner_join(get_sentiments("bing"), by = c("word"))
13
14rm(list= ls()[!(ls() %in% c('barsentiment'))])
15attach(barsentiment)
16library(ggplot2)
17
18barsentiment %>%
19  count(sentiment, word, n=n) %>%
20  ungroup() %>%
21  filter(n >= 1) %>%
22  mutate(n = ifelse(sentiment == "negative", -n, n)) %>%
23  mutate(word = reorder(word, n)) %>%
24  ggplot(aes(word, n, fill = sentiment)) +
25  geom_bar(stat = "identity") +
26  ylab("Contribution to sentiment") +
27  coord_flip()

در تصویر زیر، تحلیل احساسات نشان داده شده است.

تحلیل احساسات در توییتر با زبان R

می‌توان مشاهده کرد که کلمات مثبت در تحلیل‌ها مانند «amazing» و «beautiful» الزاما بیانگر احساسات مثبت پیرامون مباحث مالی طلا نیستند. اگرچه، کلمات منفی نیز وجود دارند که به احساسات پیرامون موضوعات مالی طلا مربوط هستند و از آن جمله می‌توان به «risk» و «fall» اشاره کرد. با نگاهی به تصویر بالا، به نظر می‌رسد عواطف کلی نسبت به طلا از چشم‌انداز مالی «منفی» است.

هنگامی که نگاهی به قیمت طلا طی ۲۴ ساعت گذشته انداخته می‌شود، مشهود است که قیمت طلا کاهش پیدا کرده و این می‌تواند پشتوانه‌ای برای عواطف منفی موجود نسبت به قیمت طلا در توییتر باشد.

تحلیل احساسات در توییتر با زبان R

نتیجه‌گیری

در این راهنما، چگونگی دانلود توییت‌ها با کتابخانه twitteR و انجام متن‌کاوی با استفاده از tidytext در زبان برنامه‌نویسی R آموزش داده شده است.

همچنین، چگونگی انجام تحلیل احساسات در یک پروژه کاربردی (تحلیل احساسات پیرامون قیمت طلا با استفاده از داده‌های شبکه اجتماعی توییتر) مورد بررسی قرار گرفت.

اگر نوشته بالا برای شما مفید بود، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای ۲ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
۲ دیدگاه برای «تحلیل احساسات در توییتر با زبان R — راهنمای کاربردی»

سلام
تشکر از مطالب خوبتون
مطالبی که آموزش دادید چقدر برای زبان فارسی قابل استفاده هستند. مثل همون موتور احساس bing

خیلی برام جالب بود . سپاس

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *