طبقه بندی متون خبری

مقدمههدف از انجام این پروژه طبقه بندی متون خبری جمع آوری شده از روزنامه همشهری به عناوین مرتبط با هر حوزه می باشد.برای این کار ما دو پیکره آموزش و ارزیابی در اختیار داریم که باید مدلی را بر روی داده های آموزشی بدست آوریم که بر روی داده های تست عملکرد مناسبی داشته باشد و بتواند عمل طبقه بندی عناوین این داده ها را به درستی انجام دهد.آشنایی با داده هاقبل از شروع عملیات طبقه بندی ابتدا لازم است که با ماهیت داده آموزشی آشنا شویم لذا پس از خواندن داده واحد های خبری که ۲۵۸۰ واحد می باشند آن ها را براساس موضوع طبقه بندی می کنیم و توزیع آن ها را مقایسه می کنیم.همانطور که مشاهده می شود ما ۶ عنوان خبری داریم که که به نسبت به تعداد دسته ها می توانیم آن ها را بالانس در نظر بگیریم در غیر این صورت باید عملیاتی برای بالانس کردن آن ها در نظر گرفته شود.حال که ماهیت داده ها ودسته ها آشنا شدیم باید این داده های خام و متون را به نوعی تفسیر کنیم که با استفاده از این تفاسیر بتوانیم عملیات طبقه بندی را انجام دهیم.پیش پردازش داده هاما با استفاده از داده های خام قادر به طبقه بندی نخواهیم بود لذا نیاز است که این متن ها به ویژگی های موثر تبدیل کرده و سپس براساس این ویژگی ها عملیات را انجام دهیم.برای این کار ابتدا هر سند را به جمله های کوچکتر تقسیم بندی می کنیم و این جملات را به کلمات تقسیم می کنیم و کلمات اضافه که در تعیین موضوعات خبری نقشی ندارند و همجنین علایم نگارشی حذف می شوند. سپس بر روی این کلمات عملیاتی مانند نرمالسازی و ریشه یابی صورت می گیرد تا بتوانیم هر کلمه واحد را به عنوان یک ویژگی موثر و واحد برای هر سند درنظر بگیریم.حال ما سندهایی در اختیار داریم که متن های آن به کلمات شکسته شده اند که در واقع ویژگی های موثر مارا تشکیل می دهند.درقدم به هر کلمه خاص یک عدد نسبت می دهیم.و هر سند را نیز بایک عدد مشخص می کنیم.حال برای هر سند ۳۰۰۰ ویژگی پرتکرار را درنظر می گیریم و با استفاده از tf-idf هرکلمه در هر سند ویژگی های هر سند را خاص تر می کنیم تا کلمات نمایش دهنده بهتری از سند های مربوطه خود باشند و باعث شوند که اسناد در حوزه های مختلف با استفاده از این کلمات تمایز یابند و قابل تفکیک شوند.سپس از این ویژگی ها برای مدل های مطرح شده در مراحل بعدی استفاده کرده و طبقه بندی را انجام میدهیم.روش های دیگر:در این بخش فقط از کلمات به صورت یونیگرم استفاده شده است طبیعی است که از بایگرم و بالاتر نیز می توان استفاده کرد که باعث بهبود طبقه بندی می شود.و یا از ویژگی کلمات استفاده کنیم مانند posهمچنین از Word Embeddings هم می توان استفاده کرد و برای هر کلمه برداری بدست آورد و طبقه بندی را براساس نزدیگی بردار ها انجام دادکه روشی دیگری می باشد.در پایان این مرحله برای داده های آموزش و تست به ماتریس هایی با ابعاد زیر می رسیم که هر سطر نمایانگر یک سند و هر ستون نشان دهنده ویژگی ها می باشد.Train data : (2580, 3000)Test data : (862, 3000)مدل های طبقه بندیحال که هر سند را براساس ویژگی های آن مدل کردیم نیاز داریم که عمل طبقه بندی را انجام دهیم ما برای این کار از ۶ روش طبقه بندی مختلف استفاده می کنیم.و بهترین این مدل ها را ارزیابی خواهیم نمود.هریک از این مدل ها دارای هایپرپارامتر های مختلفی می باشند که متناسب با مدل باید تنظیم شوند لذا از ابتدا از رویکری استفاده نمودیم و مقادیر متناسب با هر مدل را بدست آوردیم سپس آن ها را به عنوان بهترین مقادیر برای آن مدل ها در خروجی قرار دادیم.مدل های زیر را خواهیم داشت:· Random Forest· Support Vector Machine· K Nearest Neighbors· Multinomial Naïve Bayes· Multinomial Logistic Regression· Gradient Boostingسپس خروجی هر یک از این ۶ مدل را براساس accuracy مقایسه می کنیم.که در جدول زیر خواهیم داشت:قابل مشاهده است که مدل logistic regression در بین سایرمدل ها برروی دادگان تست بهترین عملکرد را داشته است بنابراین این مدل را انتخاب کرده و ارزیابی های پیش رو را بر روی این مدل انجام میدهیم.نتایج نهاییدر این بخش خروجی های زیر را بدست برای logistic regression بدست آمد.که مقادیر precision ,recall,f1 را بر روی هر دسته بدست آورده ایم که قابل مشاهده می باشد.در ماتریس پایین نیز نحوه توزیع لیبل های پیش بینی شده و لیبل های صحیح قابل مشاهده می باشد.که همبستگی ها و نردیکی که این لیبل ها بایکدیگر دارند به خوبی قابل مشاهده می باشد.در انتها نیز با استفاده از کاهش ابعاد ویژگی ها براساس عناوین خبری مختلف که از ۳۰۰۰ بعد به ۲ تقلیل یافته است به نمودار زیر رسیدیم که نشان می دهد ویژگی های این عناوین تا چه مقدار به یکدیگر نزدیک هستند و نحوه قرار گیری آن ها به چه شکلی می باشد. همچنین کد این پروژه را نیز می توانید به صورت دقیق تر از طریق لینک زیر مشاهده کنید لینک