از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
تجزیه و تحلیل احساسات در پایتون با TextBlob
سرفصلهای مطلب
معرفی
فن آوری های پیشرفته در NLP به ما امکان تجزیه و تحلیل زبان های طبیعی را می دهد روی لایههای مختلف: از تقسیمبندی ساده اطلاعات متنی تا روشهای پیچیدهتر طبقهبندی احساسات.
با این حال، ناگزیر به این معنی نیست که برای اجرای وظایف سطح بالا مانند تجزیه و تحلیل احساسات در پایتون باید در برنامه نویسی بسیار پیشرفته باشید.
تحلیل احساسات
الگوریتم های تحلیل احساسات بیشتر تمرکز دارند روی تعریف نظرات، نگرش ها و حتی شکلک ها در مجموعه ای از متون. دامنه احساسات تثبیت شده به طور قابل توجهی از روشی به روش دیگر متفاوت است. در حالی که یک تحلیلگر استاندارد حداکثر سه احساس قطبی (مثبت، منفی، خنثی) را تعریف می کند، محدودیت مدل های پیشرفته تر گسترده تر است.
در نتیجه، آنها می توانند فراتر از قطبیت نگاه کنند و شش احساس «جهانی» (مانند خشم، انزجار، ترس، شادی، غم و تعجب) را تعیین کنند:
Source: طیف سلامت روان
علاوه بر این، بسته به روی وظیفه ای که دارید کار می کنید onهمچنین امکان جمع آوری اطلاعات اضافی از زمینه مانند نویسنده یا موضوعی وجود دارد که در تجزیه و تحلیل بیشتر می توان از یک موضوع پیچیده تر از طبقه بندی قطبی رایج جلوگیری کرد – یعنی شناسایی ذهنی/عینیت.
به عنوان مثال، این جمله از Business insider: در ماه مارس، ایلان ماسک نگرانی در مورد شیوع ویروس کرونا را «هراس» و «احمقانه» توصیف کرد و از آن زمان اطلاعات نادرستی مانند نظریهاش مبنی بر اینکه کودکان اساساً در برابر این ویروس مصون هستند را در توییتر منتشر کرد. ذهنیت را از طریق نظر شخصی ای. ماسک و همچنین نویسنده متن بیان می کند.
تجزیه و تحلیل احساسات در پایتون با TextBlob
رویکردی که بسته TextBlob برای تجزیه و تحلیل احساسات اعمال میکند از این جهت که مبتنی بر قانون است متفاوت است و بنابراین به مجموعهای از کلمات طبقهبندیشده از پیش تعریفشده نیاز دارد. برای مثال، این کلمات را می توان از پایگاه داده NLTK بارگذاری کرد. علاوه بر این، احساسات بر اساس تعریف می شوند روی روابط معنایی و فراوانی هر کلمه در یک جمله ورودی که در نتیجه به خروجی دقیق تری اجازه می دهد.
هنگامی که اولین مرحله انجام شد و یک مدل پایتون توسط دادههای ورودی لازم تغذیه شد، کاربر میتواند نمرات احساسات را در قالب قطبیت و ذهنیت که در بخش قبل مورد بحث قرار گرفت، بدست آورد. ما می توانیم ببینیم که چگونه این process کار در این مقاله توسط انجمن کاپادیا:
خروجی TextBlob برای a قطبیت وظیفه یک شناور در محدوده است (-1.0, 1.0)
جایی که -1.0
یک قطب منفی است و 1.0
مثبت است. این امتیاز نیز می تواند برابر باشد 0
، که مخفف یک ارزیابی خنثی از یک عبارت است زیرا حاوی هیچ کلمه ای از مجموعه آموزشی نیست.
در حالی که، الف ذهنیت/عینیت وظیفه شناسایی یک شناور در محدوده را گزارش می کند (0.0, 1.0)
جایی که 0.0
یک جمله بسیار عینی است و 1.0
بسیار ذهنی است
نمونه های مختلفی از تعامل پایتون با تحلیلگر احساسات TextBlob وجود دارد: با شروع از یک مدل مبتنی بر روی ناهمسان کاگل مجموعه داده ها (به عنوان مثال بررسی فیلم) برای محاسبه احساسات توییت از طریق API توییتر.
اما، بیایید به یک تحلیلگر ساده نگاه کنیم که بتوانیم آن را برای یک جمله خاص یا یک متن کوتاه اعمال کنیم. ابتدا با وارد کردن کتابخانه TextBlob شروع می کنیم:
from textblob import TextBlob
پس از وارد کردن، یک جمله را برای تجزیه و تحلیل بارگذاری می کنیم و a را نمونه می کنیم TextBlob
شی، و همچنین اختصاص دادن به sentiment
دارایی به خودمان analysis
:
sentence = '''The platform provides universal access to the world's best education, partnering with top universities and organizations to offer courses online.'''
analysis = TextBlob(sentence).sentiment
print(analysis)
را sentiment
ملک الف است namedtuple
از فرم Sentiment(polarity, subjectivity)
.
جایی که خروجی مورد انتظار تحلیل عبارت است از:
Sentiment(polarity=0.5, subjectivity=0.26666666666666666)
علاوه بر این، با اجرای موارد زیر میتوان به طور جداگانه به نتایج قطبیت یا ذهنیت پرداخت:
from textblob import TextBlob
sentence = '''The platform provides universal access to the world's best education, partnering with top universities and organizations to offer courses online.'''
analysisPol = TextBlob(sentence).polarity
analysisSub = TextBlob(sentence).subjectivity
print(analysisPol)
print(analysisSub)
که به ما خروجی می دهد:
0.5
0.26666666666666666
یکی از نکات مهم در مورد TextBlob این است که به کاربر اجازه می دهد الگوریتمی را برای اجرای وظایف سطح بالا NLP انتخاب کند:
PatternAnalyzer
– یک طبقه بندی پیش فرض که ساخته شده است روی کتابخانه الگوNaiveBayesAnalyzer
– یک مدل NLTK آموزش دیده روی مجموعه بررسی فیلم
برای تغییر تنظیمات پیش فرض، به سادگی a را مشخص می کنیم NaiveBayes
آنالایزر در کد بیایید تحلیل احساسات را اجرا کنیم روی توییت مستقیم از توییتر:
from textblob import TextBlob
import tweepy
from textblob.sentiments import NaiveBayesAnalyzer
پس از آن، ما باید از طریق کلیدهای API (که می توانید از طریق یک حساب توسعه دهنده):
api_key = 'XXXXXXXXXXXXXXX'
api_secret = 'XXXXXXXXXXXXXXX'
access_token = 'XXXXXXXXXXXXXXX'
access_secret = 'XXXXXXXXXXXXXXX'
twitter = tweepy.OAuthHandler(api_key, api_secret)
api = tweepy.API(twitter)
اکنون میتوانیم تحلیل توییتها را انجام دهیم روی هر موضوعی. یک کلمه جستجو شده (مثلا تعطیلی) می تواند هر دو یک کلمه یا بیشتر باشد. علاوه بر این، این کار به دلیل تعداد زیاد توییتها میتواند زمانبر باشد. توصیه می شود خروجی را محدود کنید:
corpus_tweets = api.search("lockdown", count=5)
for tweet in corpus_tweets:
print(tweet.text)
خروجی این آخرین قطعه کد، پنج توییت را باز می گرداند که کلمه جستجو شده شما را به شکل زیر ذکر می کنند:
RT@DhwaniPandya: How Asia's densest slum contained the virus and the economic catastrophe that stares at the hardworking slum population...
آخرین مرحله در این مثال تغییر مدل پیش فرض به تحلیلگر NLTK است که نتایج آن را به صورت a برمی گرداند namedtuple
از فرم: Sentiment(classification, p_pos, p_neg)
:
blob_object = TextBlob(tweet.text, analyzer=NaiveBayesAnalyzer())
analysis = blob_object.sentiment
print(analysis)
در نهایت، مدل پایتون ما ارزیابی احساسات زیر را به ما میدهد:
Sentiment(classification='pos', p_pos=0.5057908299783777, p_neg=0.49420917002162196)
در اینجا، آن را به عنوان یک طبقه بندی می کند مثبت احساسات، با p_pos
و p_neg
ارزش ها بودن ~0.5
هر یک.
نتیجه
در این مقاله به چیستی آنالیز احساسات پرداخته ایم و پس از آن از کتابخانه TextBlob برای انجام تحلیل احساسات استفاده کرده ایم. روی جملات وارداتی و همچنین توییت ها.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-15 10:46:04