تکنیک های پیش پردازش متن برای انجام تجزیه و تحلیل احساسات!

تکنیک های پیش پردازش متن پایتون

در دنیای امروز ، یکی از بزرگترین منابع اطلاعات ، داده های متنی است که ماهیتی بدون ساختار دارد. یافتن احساسات مشتری از نظرات محصول یا بازخورد ، استخراج نظرات از داده های رسانه های اجتماعی چند نمونه از تجزیه و تحلیل متن است.

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

طبقه بندی احساسات

این مجموعه داده توصیف شده در پاراگراف قبلی شامل نظرات مروری بر چندین فیلم است. نظرات موجود در مجموعه داده قبلاً به صورت مثبت یا منفی برچسب گذاری شده اند. مجموعه داده شامل دو فیلد زیر است که با یک کاراکتر جدا شده است.

۱٫ متن:- نظر واقعی مرور

۲٫ احساسات:- احساسات مثبت ۱ و احساسات منفی ۰ برچسب گذاری می شوند.

اکنون در این مقاله چند عملکرد پیش پردازش مجموعه داده متن مورد بحث قرار می گیرد.

تکنیک های پیش پردازش متن پایتون

پیش پردازش متن

برخلاف داده های ساختار ، ویژگی ها به صراحت در داده های متنی در دسترس نیستند. بنابراین ما باید از یک فرایند برای استخراج ویژگی ها از داده های متن استفاده کنیم. یک راه این است که هر کلمه را به عنوان یک ویژگی در نظر بگیریم و معیاری برای تعیین وجود یا عدم وجود یک کلمه در یک جمله پیدا کنیم. این مدل کیسه کلمات (BoW) نامیده می شود. این بدان معناست که هر جمله مانند یک کیسه کلمات تلقی می شود. هر جمله را سند و مجموعه همه اسناد را corpus می نامند.

این لیستی از توابع پیش پردازش است که می توانند روی داده های متنی انجام دهند ، مانند:

مدل Bag-of_words (BoW)

ایجاد بردارهای شمارش برای مجموعه داده

نمایش بردارهای سند

حذف کلمات کم فرکانس

حذف کلمات توقف

توزیع کلمات در سراسر احساسات مختلف

این توابع پیش پردازش را در قسمت های زیر مورد بحث قرار می دهیم.

مدل Bag-of_words (BoW)

اولین قدم در ایجاد مدل Bow ایجاد فرهنگ لغت از کلمات مورد استفاده در مجموعه است. در این مرحله ، نگران دستور زبان نخواهیم بود و فقط وقوع کلمات ثبت می شود. سپس هر سند را به بردار تبدیل می کنیم که کلمات موجود در اسناد را نشان می دهد. سه روش برای تشخیص اهمیت کلمات در مدل BoW وجود دارد:

مدل بردار شمارش

مدل بردار فرکانس مدت

مدت فرکانس-معکوس فرکانس سند (TF-IDF)

ما این مدلهای بردار را در زیر بخشهای زیر مورد بحث قرار خواهیم داد.

الف) مدل بردار شمارش

دو سند زیر را در نظر بگیرید:

سند ۱ (احساسات مثبت): من واقعاً IPL را دوست دارم.

سند ۲ (احساسات منفی): من هرگز IPL را دوست ندارم.

توجه: IPL مخفف لیگ برتر هند است.

واژگان کاملی که برای دو سند فوق تنظیم شده است دارای کلماتی مانند I ، واقعاً ، هرگز ، مانند IPL نخواهد بود. این کلمات را می توان به عنوان ویژگی (x1 تا x5) در نظر گرفت. برای ایجاد کلمات شمارش ، وقوع هر کلمه در سند را مانند جدول زیر شمارش می کنیم. ستون y در جدول احساسات جمله را نشان می دهد: ۱ برای مثبت و ۰ برای احساسات منفی.

ب) مدل بردار فرکانس ترم

بردار فرکانس ترم (TF) برای هر سند در مجموعه محاسبه می شود و فرکانس هر عبارت در سند است. به وسیله آن داده می شود ،

مدت فرکانس (TFi) = (تعداد وقوع یک کلمه i در سند)/(تعداد کل کلمات در سند)

جایی که TFi عبارت فرکانس کلمه است. نمایش TF برای دو سند در جدول نشان داده شده است.

ج) فرکانس مدت-فرکانس سند معکوس (TF-IDF)

TF-IDF میزان اهمیت یک کلمه را برای یک سند در بدن اندازه گیری می کند. اهمیت یک کلمه متناسب با تعداد دفعاتی که یک کلمه در سند ظاهر می شود افزایش می یابد اما با فراوانی کلمه موجود در بدن کاهش می یابد. TF-IDF برای کلمه I در اسناد نشان داده شده است

TF-IDFi = TFi*ln (1+ (N/Ni))

جایی که N تعداد کل اسناد در مجموعه است ، Ni تعداد اسنادی است که حاوی کلمه i است.

مقدار IDF برای هر کلمه برای دو سند فوق در جدول زیر آمده است.

مقادیر TF-IDF برای دو سند در جدول زیر نشان داده شده است.

تکنیک های پیش پردازش متن پایتون

ایجاد تعداد بردارها برای مجموعه داده

هر سند در مجموعه داده باید به بردارهای TF یا TF-IDF تبدیل شود ماژول sklearn.feature_extraction.text کلاسهایی را برای ایجاد بردارهای TF و TF-IDF از داده های متن فراهم می کند. ما از CountVectorizer برای ایجاد بردارهای شمارش استفاده می کنیم.

ما از کد زیر برای پردازش و ایجاد فرهنگ لغت همه کلمات موجود در همه اسناد استفاده می کنیم. فرهنگ لغت شامل کلمات منحصر به فرد در سراسر بدن است. و هر کلمه در فرهنگ لغت به عنوان یک ویژگی تلقی می شود.

تعداد کل ویژگی ها و کلمات منحصر به فرد در مجموعه ۱۹۰۳ است. نمونه تصادفی ویژگی ها را می توان با استفاده از روش random.sample () زیر به دست آورد.

با استفاده از فرهنگ لغت فوق ، می توانیم همه اسناد موجود در مجموعه داده را با استفاده از روش transform () بردار شمارنده به شمارش بردارها تبدیل کنیم:

ابعاد قاب داده train_ds_features ، که شامل بردارهای شمارش همه اسناد است ، توسط متغیر شکل قاب داده داده می شود.

train_ds_features.shape

پس از تبدیل سند به بردار ، یک ماتریس پراکنده با ۱۹۰۳ ویژگی یا ابعاد خواهیم داشت. نمایش ماتریس پراکنده فقط مقادیر غیر صفر و شاخص آنها را در بردار ذخیره می کند. برای اینکه بدانیم چند مقدار واقعی غیر صفر در ماتریس وجود دارد ، می توانیم از متد getnnz () در dataFrame استفاده کنیم.

خروجی ۵۳۰۲۸ است. محاسبه نسبت مقادیر غیر صفر با توجه به مقادیر صفر در ماتریس را می توان با تقسیم تعداد مقادیر غیر صفر بر ابعاد ماتریس بدست آورد.

خروجی عبارت است از:

چگالی ماتریس: ۰٫۴۹۱۶۲۸۰۰۹۲۶۰۷۱۸۶

ماتریس کمتر از ۱٪ مقادیر غیر صفر دارد ، یعنی بیش از ۹۹٪ مقادیر صفر هستند. این بازنمایی بسیار کمیاب است.

نمایش بردارهای سند

برای تجسم بردارهای شمارش ، این ماتریس را به Dataframe تبدیل کرده و نام ستون ها را به نام ویژگی های واقعی تنظیم می کنیم. دستورات زیر برای نمایش بردار شمارش و همچنین چاپ اولین رکوردها استفاده می شود.

 

اکنون همه ستون ها را مطابق کلمات موجود در جمله انتخاب کرده و در زیر چاپ کنید.

بله ، ویژگی های بردار شمارش به طور مناسب روی ۱ تنظیم شده است. بردار نشان دهنده جمله “Ok Brockback Mountain is چنین فیلم وحشتناکی است” است.

حذف کلمات Low_Frequency

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

برای یافتن کلمات کمیاب در فرهنگ لغت ، به عنوان مثال ، کلماتی که در هر یک از اسناد وجود دارد ، می توانیم ویژگی ها را با شمارش برابر ۱ فیلتر کنیم.

خروجی ۲۳۳ است

۲۳۳ کلمه وجود دارد که فقط یکبار در تمام اسناد موجود در مجموعه وجود دارد. این کلمات را می توان نادیده گرفت. با ایجاد پارامترهای max_features به ۱۰۰۰ در هنگام ایجاد بردارهای شمارش ، می توان تعداد ویژگی ها را محدود کرد. حالا ۱۵ کلمه اول و تعداد آنها را به ترتیب نزولی چاپ کنید.

می توان توجه داشت که لیست ویژگی های انتخاب شده شامل کلماتی مانند ، is ، was و … است. این کلمات در تعیین احساس سند بی اهمیت هستند. این کلمات را کلمات توقف می نامند و می توانند از فرهنگ لغت حذف شوند. این امر تعداد ویژگی ها را بیشتر کاهش می دهد.

تکنیک های پیش پردازش متن پایتون

حذف کلمات توقف

sklearn.feature_extraction.text لیستی از کلمات توقف از پیش تعریف شده به زبان انگلیسی را ارائه می دهد که می تواند به عنوان مرجعی برای حذف کلمات توقف از فرهنگ لغت ، یعنی مجموعه ویژگی ها ، مورد استفاده قرار گیرد.

خروجی:-

چند کلمه متوقف کننده:

[‘nowhere’, ‘after’, ‘whether’, ‘full’, ‘back’, ‘eg’, ‘itself’, ‘seem’,

‘interest’, ‘upon’]

همچنین ، کلمات توقف اضافی را می توان برای حذف به لیست اضافه کرد. به عنوان مثال ، نام فیلم و خود کلمات “فیلم” در این مورد می تواند کلمه ایست. این کلمات را می توان به لیست موجود کلمات توقف برای حذف اضافه کرد. مثلا

توزیع کلمات در سراسر احساسات مختلف

کلمه ای که دارای معنی مثبت یا منفی است در اسناد احساسات مختلف یافت می شود. این می تواند ایده اولیه ای در مورد اینکه چگونه این کلمات می توانند ویژگی های خوبی برای پیش بینی احساس اسناد باشند ، ارائه دهد. به عنوان مثال ، بگذارید کلمه را عالی بدانیم.

همانطور که در شکل نشان داده شده ، کلمه عالی بیشتر در اسناد احساسی مثبت ظاهر می شود.

یک کلمه طبیعی مانند واقعاً چطور؟

همانطور که در شکل نشان داده شده است ، این کلمه در اسناد احساسی مثبت و منفی واقعاً ظاهر می شود.

کلمه نفرت چطور؟

همانطور که در شکل نشان داده شده است ، کلمه نفرت بیشتر در احساسات منفی اتفاق می افتد تا احساسات مثبت. این کاملا منطقی است.

این به ما این ایده اولیه را می دهد که کلمات عالی و نفرت انگیز می توانند ویژگی خوبی در تعیین احساسات سند باشند.

نتیجه

در این مقاله ، داده های متنی داده های بدون ساختار هستند و قبل از استفاده از مدل ها به پیش پردازش گسترده ای نیاز دارند. اسناد یا جملات را می توان به صورت یونگرام یا n-gram برای ویژگی های ساختمانی نشانه گذاری کرد. اسناد را می توان به عنوان بردار با کلمات یا n-gram به عنوان ویژگی نشان داد. بردارها را می توان با استفاده از شمارش ساده ، TF (مدت فرکانس) یا مقادیر TF-IDF ایجاد کرد. مجموعه ای قوی از ویژگی ها را می توان با حذف کلمات متوقف و اعمال ریشه یا لماتیزه ایجاد کرد. تعدادی از ویژگی ها را می توان تنها با انتخاب ویژگی هایی با فرکانس های بالاتر محدود کرد.

 

 

نیاز به مشاوره دارید؟

تیم فروش آماده ارائه پیشنهاد و پاسخگویی به سوالات شماست.