دیتا اینسایتز

در مورد علم داده، داده کاوی، هوشمندی کسب و کار(BI) و سایر مطالب مرتبط

دیتا اینسایتز

در مورد علم داده، داده کاوی، هوشمندی کسب و کار(BI) و سایر مطالب مرتبط

شناسایی توهین، فحش و عبارات رکیک فارسی

برای یک پروژه نیاز به شناسایی پیامهای حاوی کلمات رکیک و فحش داشتم. این شد که نگاهی به روشها و ماژولهای پایتون موجود برای این کار انداختم. از این میان profanity-check نظرم را جلب کرد. جزییات پیاده سازی این روش در وبلاگ Victor Zhou   کامل توضیح داده شده و کاری که من اینجا انجام دادم، صرفا این بود که کار این نویسنده را برای زبان فارسی تکرار کردم  و بنابراین فقط  نتیجه را اینجا به اشتراک می گذارم تا اگر کسی بهش نیاز داشت ازش استفاده کنه. در ضمن مراجعه و مطالعه به پست وبلاگی که لینکش را گذاشتم را توصیه می کنم چرا که علاوه بر توضیح روش مورد استفاده، ماژولهای دیگری که برای این هدف وجود دارند هم بررسی و مقایسه کرده است.

همان طور که در وبلاگ Victor Zhou   اشاره شده است، برای شناسایی کلمات و عبارات توهین آمیز از مدل SVM استفاده شده است و  برای اموزش مدل SVM  ترکیبی از چند مجموعه آموزشی به کار رفته است که باز هم برای توضیحات بیشتر به  پست مربوطه ارجاع می دهم . با توجه به اینکه من مجموعه ای آموزشی از پیامهای حاوی عبارات توهین آمز فارسی  در اختیار نداشتم سعی کردم یک مجموعه اموزشی از توییتر جمع آوری کنم. برای اینکار با استفاده از کتابخانه tweepy یک مجموعه از کلمات و عبارات رکیک را سرچ کردم و توییت های حاوی این کلمات را جمع آوری کردم. ,ولی همانطور که می دانید تنها داشتن مجموعه ای از پیامهای حاوی عبارات توهین آمیز برای ساختن مجموعه آموزشی کافی نیست و باید نمونه منفی ( پیامهایی که حاوی عبارات توهین آمیز نباشند) هم داشته باشیم. برای جمع اوری نمونه های منفی و برای اینکه مطمئن باشم این توییت ها حاوی کلمات رکیک نیستند، توییت های چند اکانت که اطمینان داشتم از این ادبیات استفاده نمی کنند را استفاده کردم.

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

به جز مرحله جمع آوری داده، سایر مراحل نیاز به توضیح اضافی ندارد و با خواندن وبلاگ Victor Zhou مساله ای باقی نخواهد ماند. برای آموزش مدل از 80 درصد مجموعه آموزشی جمع آوری شده و برای تست از 20 درصد باقیمانده استفاده کردم . که پس از ارزیابی هم دقت و هم فراخوانی مدل به دست آمده بیش از 0.95 بود.


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