هرزنامه که معمولا تبلیغاتی هستند، ویژگیهای مشابهی دارند. مثلا آنهایی که محصولی را تبلیغ میکنند از _قیمت آن_ حرف میزنند و یا میگویند که _فرصتتان چقدر استثنایی_ است. حتی رنگارنگ بودن بخشهای نوشته میتواند نشان از بیارزش بودن آن باشد. از آنجایی که این نشانههای قطعی نیستند و ما هم در ایمیلهایی که برای هم میفرستیم ممکن است مثلا از قیمت حرف بزنیم، نمیتوانیم با چند قانون ساده هرزنامهها را جدا کنیم. اینجور مواقع سعی میکنیم از روی مجموعه هرزنامههای موجود یاد بگیریم که هرزنامهها چه ویژگیهایی دارند.
حال اگر این هرزنامهها در قالب متنهای کوتاه پیامکی و یا شبکههای اجتماعی پیامرسان باشند، تشخیص آنها سختتر هم میشود.
# مقدمه
امروزه نامه رسانی الکترونیکی به عنوان هنجاری برای ارتباط کارا و پرسرعت معرفی شده است. کاربران پست الکترونیک در گلوگاه کارایی گرفتار شدهاند و در جنگی نابرابر به مقابله ی کسانی رفته اند که دیدگاه متفاوتی از نامهرسانی الکترونیکی دارند و آن را به صورت ارسال حجم بالای نامه با اهداف اقتصادی، مخرب و سودجویانه میبینند. این رایانامهها به اصطلاح هرزنامه (اسپم) نامیده شده اند.
نامه های الکترونیکی بیهوده که تحت نام هرزنامه نیز معروفند قسمتی از کار و زندگی کاربران اینترنت بخصوص پست الکترونیکی را به خود اختصاص داده است. با توجه به تغییرات اعمال شده در هرزنامه ها که از طرف ارسال کنندگان آنها جهت مخفیماندن از شناساییشدن توسط برنامه های ضد هرزنامه صورت میپذیرد، طراحی یک راه حل ضد هرزنامهای که بتواند بطور مناسب خود را با تغییرات اعمال شده روی هرزنامه ها وفق دهد، مشکل است.
در سالهای اخیر تحقیقات بسیاری برای رفع این مسئله انجام گرفته است ولی هنوز نامه های الکترونیکی ناخواسته یکی از مشکلات جدی کاربران است.
# کارهای مرتبط
برای تشخیص ایمل های عادی از هرزنامه ها روش های بسیاری ابداع شده اند که در زیر به اختصار برخی از آنها را توضیح میدهم
## روش های رفتار محور
در این دسته از روش ها بر اساس رفتار های ارسال کننده یا در یافت کننده نامه، آنها در لیست هایی قرار میگیرند و بر اساس این لیست ها درباره نامه های آنها تصمیم گیری می شود.
### لیست سیاه (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.
# پیوندهای مفید
+ [پردازش زبان فارسی در پایتون](http://www.sobhe.ir/hazm)
+ [یادگیری ماشین در پایتون](http://scikit-learn.org/)
+ [راهنمایی برای استخراج ویژگی از متن زبان طبیعی](http://pyevolve.sourceforge.net/wordpress/?p=1589)
+ [ردهبندی متون با استفاده از کتابخانه Scikit-learn](http://scikit-learn.org/stable/auto_examples/document_classification_20newsgroups.html)
+ [مجموعه داده هرزنامه پیامکی](https://archive.ics.uci.edu/ml/datasets/SMS+Spam+Collection)
+ [UCI Spambase Data Set](https://archive.ics.uci.edu/ml/datasets/Spambase)
+ [WEBSPAM-UK2007 dataset](http://chato.cl/webspam/datasets/uk2007/)
+ [Enron-Spam Data Set](http://www2.aueb.gr/users/ion/data/enron-spam/)
+ [Natual Language Processing Course - Text Classification](https://class.coursera.org/nlp/lecture/preview)
+ [NLTK](http://nltk.org/)