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

۱. مقدمه

امروزه نامه رسانی الکترونیکی به عنوان هنجاری برای ارتباط کارا و پرسرعت معرفی شده است. کاربران پست الکترونیک در گلوگاه کارایی گرفتار شدهاند و در جنگی نابرابر به مقابله ی کسانی رفته اند که دیدگاه متفاوتی از نامهرسانی الکترونیکی دارند و آن را به صورت ارسال حجم بالای نامه با اهداف اقتصادی، مخرب و سودجویانه میبینند. این رایانامهها به اصطلاح هرزنامه (اسپم) نامیده شده اند.
نامه های الکترونیکی بیهوده که تحت نام هرزنامه نیز معروفند قسمتی از کار و زندگی کاربران اینترنت بخصوص پست الکترونیکی را به خود اختصاص داده است. با توجه به تغییرات اعمال شده در هرزنامه ها که از طرف ارسال کنندگان آنها جهت مخفیماندن از شناساییشدن توسط برنامه های ضد هرزنامه صورت میپذیرد، طراحی یک راه حل ضد هرزنامهای که بتواند بطور مناسب خود را با تغییرات اعمال شده روی هرزنامه ها وفق دهد، مشکل است.
در سالهای اخیر تحقیقات بسیاری برای رفع این مسئله انجام گرفته است ولی هنوز نامه های الکترونیکی ناخواسته یکی از مشکلات جدی کاربران است.

۲. کارهای مرتبط

برای تشخیص ایمل های عادی از هرزنامه ها روش های بسیاری ابداع شده اند که در زیر به اختصار برخی از آنها را توضیح میدهم

۲.۱. روش های رفتار محور

در این دسته از روش ها بر اساس رفتار های ارسال کننده یا در یافت کننده نامه، آنها در لیست هایی قرار میگیرند و بر اساس این لیست ها درباره نامه های آنها تصمیم گیری می شود.

۲.۱.۱. لیست سیاه (Black List)

فهرست سیاه یکی از اولین روش­های ضد هرزنامه است. در این روش از یک فهرست که در آن دامنه­ ها، IP ها و نشانی ­های فرستنده های هرزنامه قرار دارد در سرور های انتقال رایانامه نگهداری می­ شود. به اینترتیب هرگاه دامنه یا آدرس IP فرستنده یک هرزنامه در لیست سیاه قرار داشته باشد، آن نامه به عنوان هرزنامه تلقی میشود. البته این روش کارایی بالایی ندارد، زیرا هرزنامه نویس ­ها از یک آدرس یا دامنه ثابت استفاده نمیکنند. [4]
از معایب این روش بالابودن نرخ منفی کاذب است.

۲.۱.۲. لیست سفید (White List)

این روش دقیقا برعکس روش قبل است، در این روش فهرستی از دامنه­ ها، IP ها و نشانی ­های فرستنده های نامه های پاک تهیه شده و هر نامه ای که از طرف آنها نباشد به عنوان هرزنامه تلقی میشود.
از معایب این روش بالابودن نرخ مثبت کاذب است. همچنین اگر هرزنامه نویس به اطلاعات فهرست سفید دسترسی پیدا کند،آن وقت این روش کاملاً ناکارا خواهد بود.[5]

۲.۱.۳. لیست خاکستری (Gray List)

ارسال کنندگان هرزنامه تلاش می کنند تا کمترین هزینه را برای ارسال هر نامه صرف کنند همچنین ارسال شدن همه نامه ها برایشان مهم نیست، از این رو اگر در ارسال نامه خطایی رخ بدهد، بجای این که آن را در صف ارسال مجدد قرار بدهند و پس از مدتی برای این کار تلاش کنند، از خطا صرف نظر کرده و نامه هایی که ارسال نشده اند را دور می اندازند
به این ترتیب اگر سرور دریافت کننده نامه به فرستنده اعلام کند که در حال حاظر امکان دریافت نامه را ندارد و سرور فرستنده باید بعدا مجددا تلاش کند ولی سرور فرستنده این کار را انجام ندهد، این احتمال وجود دارد که نامه از طرف یک هرزنامه نویس بوده است.
لذا این فهرست حاوی فرستندگانی است که پس از اعلام خطا، اقدام مجدد به منظور فرستادن آن انجام نداده ­اند و نامه هایی که برای ارسال مجدد آنها تلاش نشده است به عنوان هرزنامه تلقی میشوند[5].
از معایت این روش آن است که هر نامه پاک دوبار ارسال میشود و همچنین هرزنامه نویس ها میتوانند از اعمال سیاست عدم ارسال مجدد دست بردارند.

۲.۲. روش های هوشمند

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

۲.۲.۱. مبتنی بر قضیه Bayes

برای درک بهتر این روش باید مروری بر قضیه بیز در احتمالات داشت

P\left( { A }|{ B } \right) = \frac { P\left( { B }|{ A } \right) P\left( A \right) }{ P\left( A \right) }

این قضیه رابطه ای برای محاسبه احتمال وقوع A به شرط B از روی احتمال های وقوع A، B و B به شرط A بیان میکند
حال در مسئله تشخیص هرزنامه
اگر A را احتمال هرزنامه بودن یک ایمیل و B را محتوای ایمیل تعریف کنیم میتوانیم هرزنامه ها را بصورت زیر مشخص کرد:
P\left( { A }|{ B } \right) > P\left( { \overline { A } }|{ B } \right)

حال با استفاده از قضیه بیز میتوان آن را بصورت زیر نوشت:
P\left( A \right) P\left( { B }|{ A } \right) >P\left( { \overline { A } } \right) P\left( { { B }|\overline { A } } \right)

که به این معنی است که :
اگر احتمال این که این محتوا در یک هرزنامه وجود داشته باشد و این نامه هرزنامه باشد از احتمال این که این محتوا در یک نامه پاک وجود داشته باشد و این نامه پاک باشد بیشتر بشود، این نامه هرزنامه است.[3]

۲.۲.۲. براساس شبکه عصبی

شبکه های عصبی در کل مجموعه ای از چندین “تابع ساده ریاضی” هستند که در نهایت تابعی پیچیده را تشکیل می دهند. خروجی هر کدام از این توابع می تواند ورودی تابعی دیگر باشد. در نهایت با استفاده از خروجی ها باید بتوان دسته بندی نمونه را مشخص نمود.
خود شبکه های عصبی به دو دسته تقسیم می شوند. روشی که بیشتر در تشخیص هرزنامه به کار می رود روش Perceptron است.
در این روش هر تابع ساده ما به شکل یک ترکیب خطی از ورودی هاست. خروجی عددی حقیقی است. قرار داد می شود که خروجی مثبت به معنی عادی بودن ایمیل و اعداد منفی بیانگر اسپم بودن آن می باشند. ضرایب این ترکیب خطی در ابتدا مقادیری دلخواه تعیین می شوند. حال باید یکی از نمونه هایی به تابع داده شود که حدس تابع در مورد هزنامه بودن یا نبودن آن اشتباه است. در این صورت تمام ضرایب ترکیب خطی یاد شده بر پایه این ورودی و با استفاده از رابطه ای مشخص اصلاح می گردند. این عمل چندین بار تکرار می شود. وضعیتی حاصل شد که تمام نمونه ها درست دسته بندی شده بودند، کار متوقف می گردد.[6]
در صورتی که رابطه بین ورودی های مسئله خطی نباشد، ضرایب واگرا خواهند شد و الگوریتم به نتیجه نمی رسد.شبکه های عصبی نیاز به زمان و نمونه های زیاد برای تکمیل فرآیند یادگیری دارند. همچنین لزومی ندارد که رابطه بین ورودی ها واقعا خطی باشد و ممکن است روش کلا به نتیجه نرسد. در عوض پیاده سازی آن ها کار مشکلی نیست و نتیجه ی حاصله در صورت وجود عموما خوب و مطلوب است.

۲.۲.۳. بر اساس SVM

ماشین بردار پشتیبانی (Support Vector Machine) خود نوعی از شبکه های عصبی است.
در این روش تابعی خطی پیدا می شود که با گرفتن ورودی ها، هرزنامه بودن را مشخص کند. تفاوت اینجاست که در این روش تابع خطی را به یک معادله تبدیل شده و با استفاده از آن تلاش می شود “خط مرز” بین نمونه های عادی و اسپم یافت شود. در این صورت برای تشخیص وضعیت هر ایمیل جدید، کافیست بررسی شود که این ایمیل کدام طرف خط مذکور است (با توجه به n بعدی بودن فضا، خط یاد شده در اصل خود یک فضای n-1 بعدی با معادله ی مشخصه ی خاص خود است).پیاده سازی این روش اندکی مشکل است اما حاصل عموما بهتر از روش بالا می باشد.

۳. آزمایش‌ها

۴. کارهای آینده

۵. مراجع

  • [1] Liu, Bing, and Lei Zhang. "A survey of opinion mining and sentiment analysis." Mining Text Data. Springer US, 2012. 415-463.

  • [2] Blanzieri, Enrico, and Anton Bryl. "A survey of learning-based techniques of email spam filtering." Artificial Intelligence Review 29.1 (2008): 63-92.

  • [3] Sahami, Mehran, et al. "A Bayesian approach to filtering junk e-mail." Learning for Text Categorization: Papers from the 1998 workshop. Vol. 62. 1998.

  • [4] Oro, David, et al. "Benchmarking IP blacklists for financial botnet detection." Information Assurance and Security (IAS), 2010 Sixth International Conference on. IEEE, 2010.

  • [5] Chiou, Pin-Ren, Po-Ching Lin, and Chun-Ta Li. "Blocking spam sessions with greylisting and block listing based on client behavior." Advanced Communication Technology (ICACT), 2013 15th International Conference on. IEEE, 2013

  • [6] Kufandirimbwa, Owen, and Richard Gotora. "Spam Detection using Artificial Neural Networks (Perceptron Learning Rule)." Online Journal of Physical and Environmental Science Research 1.2 (2012): 22-29.

  • [7] Metsis, Vangelis, Ion Androutsopoulos, and Georgios Paliouras. "Spam filtering with naive bayes-which naive bayes?." CEAS. Vol. 17. 2006.

۶. پیوندهای مفید

تایید شده

با سلام
1- بخش مقدمه خوب و جالب اما کوتاه بود
2- بخش کار های مرتبط نیز به خوبی توضیح داده شده است. کاش از تصاویر جذاب و گویا نیز استفاده می کردید
برای بخش آزمایش ها کاری انجام نشده

تایید شده

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

محسن ایمانی

[ارزیابی روی نسخه‌‌‌‌ای که با تاخیر در سایت قرار گرفته شد، انجام شده است]
خدا قوت! شما هدف‌های این فاز را به خوبی با پیاده‌سازی، آزمایش، ارزیابی و تحلیل نتایج محقق کرده‌اید و همچنین با تلاش در بهبود نتایج فراتر از اهداف این فاز نیز گام برداشته‌اید.
چند نکته‌ای برای بهبود پروژه شما عرض می‌شود:

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

  • در مورد عملکرد مدل‌های مختلف از نظر زمان یادگیری و زمان تشخیص نیز ارزیابی انجام داده و مقایسه نمایید.

  • هرچند نتایج شما به شکل گویایی آورده شده است و مخاطب با اندکی تامل در جداول می‌تواند مقایسه‌ای بین مدل‌های مختلف داشته باشد، اما بد نیست خودتان در قالب جدول، نمودار و یا حتی با یک توضیح یک بندی مقایسه‌ای بین روش‌ها انجام دهید.

  • می‌توانید از مدل BOW فراتر بروید و ویژگی‌ها (Feature) سطح بالاتری را در یادگیری مدل دخیل کنید و نتایج را مقایسه نمایید.

  • در مورد بهینه‌سازی پارامترها خیلی کم توضیح داده‌اید و تنها گفته‌اید پارامترهای زیر را تغییر می‌دهیم. به نظرم باید توضیحات شفاف‌تری در مورد پارامترها و این که تغییرشان چه تاثیری روی مدل دارند بدهید.

  • در مورد برخی پارامترهای مدل‌ها، مثلا پارامترهای مربوط به SVM و یا توابع کرنل مختلف نیاز بود توضیح می‌دادید. این که چرا این توابع کرنل و این پارامترها را انتخاب کرده‌اید. و یا این که حدقل آزمایش خود را با توابع کرنل مختلف و یا تغییراتی در پارامترهای آموزش تکرار کرده و تغییرات نتایج را گزارش و تحلیل می‌کردید.

تایید شده

در بخش مقدّمه، بسیار خوب هدف تصلی پروژه را بیان کردید و روش های مختلف را تقریباً کامل بررسی نمودید. مراجع، بسیار مرتّب و دقیق ذکر شده بودند. آزمایشات خوبی با روش های حل متعدّد بیان شده بود که نتایج خوب و دقیقی ارائه کرد. بهبود نتایج هم از نکات مثبت پروژه ی شماست. فقط در نگارش متن، چند اشتباه نگارشی از نوع عدم رعایت فاصله و نیم فاصله موجود بود که تعداد آن ها کم نبود ؛ مانند: هرزنامهای، شناساییشدن، مخفیماندن، آنها، نامهرسانی و... . در کل بسیار زحمت کشیدید و خسته نباشید.