تشخیص هرزنامه

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

# مقدمه
امروزه ایمیل به یکی از رایج ترین ابزارهای ارتباطی در زندگی روز مره بشر تبدیل شده است. این ارتباط میتواند یک مکالمه ساده دوستانه باشد ویا یک موضوع مهم تجاری. ایمیل متدی سریع و ارزان قیمت برای برقراری این ارتباط است متاسفانه همین عمومیت و سادگی استفاده ازایمیل باعث شده تا موردسوء استفاده هرزنامه نویسان و کلاهبرداران اینترنتی قرار بگیرد ، مسئله ای که روزی کم اهمیت جلوه می نمود ، امروزه به معضلی جدی برای میلیون ها کاربر ایمیل بدل شده است و استفاده از ابزار ومتدهایی برای شناسایی و فیلترهرزنامه ها ضرورتی غیراقبل انکار است .  نمودار زیر موضوعات اصلی هرزنامه ها را نشان می دهد .
![توضیح تصویر](http://www.jpprufino.com/wp-content/uploads/2008/01/spam.png)

تاکنون فیلترهای ضدهرزنامه مختلفی عرضه شده اند که اکثر آنها براساس تطبیق قوانین ثابت عمل میکنند .قوانین این سامانه ها به صورت دستی توسط کاربر تعیین می شوند و شامل ویژگی ها و مشخصات ثابت نامه های الکترونیکی نامعتبر یا هرزنامه هستند و عمل حذف هرزنامه براساس آنها انجام می شود مثلاً فیلترهای استفاده شده در یاهو که کاربر نشانی هایی را به عنوان فرستنده هرزنامه معرفی کرده و سرویس دهنده نامه های الکترونیکی براساس نشانی های معرفی شده ، هر نامه الکترونیکی دریافتی از آنها را جداگانه ذخیره یا حذف می کند. 
روشهای دیگر استفاده از فهرست های سیاه [^Black list] یا سفید ، استفاده از واژه های کلیدی ، فیلترهای قانون-پایه [^Rule-Based] و غیره هستند. اغلب این این روش ها با استفاده از ویژگی های موجود در سرپیام نامه های الکترونیکی ، هرزنامه ها را شناسایی و فیلتر می کنند .این روش ها بدون نیاز نرم افزار فیلترکردن ، توسط سرویس دهندگان پست الکترونیکی استفاده می شوند.
اشکال چنین روشهایی این است که قوانین آنها ثابت بوده و باید توسط کاربر تعیین شود و فرستندگان هرزنامه نیز می توانند با ترفند های مختلفی این فیلترها را فریب داده و هرزنامه های خویش را از آنها عبور دهند.
برخی برای فیلتر کردن هرزنامه ها به صورت کارا ، تنها از یک روش استفاده نمی کنند ، بلکه تعدادی از روش ها با هم ترکیب می شوند تا به دقت بیشتری دست پیدا کنند . برای مثال spam assassin که یک فیلتر متن باز است ، از روشهای تحلیلی سرپیام[^Header] ، فهرست سیاه ، فیلتر بیزین و فیلتر های مشارکتی به طور همزمان بهره می برد .

**روش های فیلتر کردن هرزنامه **

به طور کلی روش های موجود برای فیلتر کردن هرزنامه می توانند دارای قابلیت یادگیری و یا بدون این قابلیت باشند. فیلترهایی که بدون قابلیت یادگیری هستند ، عموما بر اساس تطبیق قوانین ثابت عمل میکنند .که این قوانین اکثراً به صورت دستی و توسط کاربر تعیین می شوند .ولی روش های مبتنی بر قابلیت یادگیری ، با یادگیری ویژگی های هرزنامه ها ، سعی در فیلتر کردن آنها می کنند .از جمله  شیوه های محبوب در سالهای اخیر ، شناسایی بر اساس محتوای[^content based] هرزنامه است ، که می توان آن را نوعی دسته بندی متن[^Text classification] به حساب آورد.
در نتیجه روش های موجود برای فیلتر کردن هرزنامه ها را میتوان به سه دسته زیر تقسیم کرد که در هر دسته ، این امکان وجود دارد تا بتوان فیلتری با قابلیت یادگیری و یا بدون این قابلیت طراحی نمود.

1. فیلتر درسطح شبکه :
اغلب این روش ها با استفاده از از ویژگی های موجود در سرپیام نامه های الکترونیکی ، هرزنامه ها را شناسایی و فیلتر میکنند . این روش ها بدون نیاز به نرم افزار فیلتر کردن ، توسط بسیاری از سرویس دهندگان پست الکترونیکی ، استفاده می شوند . در این سطح فیلتر های بسیاری طراحی شده اند که مهمترین آن ها فهرست سیاه و سفید است . 

2. فیلتر در سطح سرور: 
این گونه فیلتر ها با شناسایی هرزنامه ها و فیلتر کردن آن ها ، باعث صرفه جویی در اتلاف پهنای باند می شوند . همچنین چون هرزنامه ها به تعداد زیادی از کاربران فرستاده می شوند ، مسدود کردن آن ها می تواند کاهش زیادی در حجم هرزنامه نامه هایی که باید ذخیره و تحویل شوند ، داشته باشد . در این سطح هم فیلترهای بیشماری طراحی شده اند، مانند فیلتر های گروهی [^Collaborative Filters] .

3.  فیلتر در سطح کاربر نهایی[^end user] :
فیلترهای موجود در این سطح برخلاف روش های قبلی مبتنی بر دانش هستند و باید در یک مرحله تحت عنوان فراگیری ، قوانین لازم برای فیلتر کردن نامه ها را استخراج کنند . از مهمترین روش های موجود در این بخش ، فیلتر های مبتنی بر محتوا است . فیلتر های مبتنی بر محتوا سعی می کنند که با استفاده از محتوای متنی نامه تشخیص دهند که آیا یک نامه هرزنامه هست یا نه . فیلتر های مبتنی بر محتوا به دو گروه فیلتر های مبتنی بر قانون و فیلترهای مبتنی بر یادگیری ماشین تقسیم می شوند .

**درخت پوشای بیزین[^Bayesian Spanning Tree] :**
واما روش دیگر طبقه بندی ایمیل ها بر اساس درخت پوشای بیزین است . درخت پوشای مینیمم یک نوع درخت است که در آن به غیر از گره ریشه تمامی گره ها حداکثر دارای دو والد می باشند . این نکته حائز اهمیت است که ما از تکرار کلمات در مجموعه ایمیل ها به عنوان یک ویژگی در مساله طبقه بندی استفاده می کنیم و برای اینکه ما بهترین کارایی را داشته باشیم از انتخاب زیر مجموعه ای از خصوصیات مناسب استفاده می نماییم که به عنوان انتخاب کلمات مرتبط یاد می شود. در فیلترینگ ایمیل ها این بدین معنا است که ما می خواهیم یک زیر مجموعه ای از کلمات که در شناسایی تفاوت بین ایمیل های اسپم و غیر اسپم کمک می کند را مشخص کنیم .

# کارهای مرتبط

 فرآیند شناسایی هرزنامه  :
فرایند شناسایی هرزنامه مبتنی بر شبکه بیزین از چندین مرحله تشکیل شده است. ما آن را به سه مرحله تقسیم نموده ایم, پیش پردازش, ساخت درخت پوشای مینیمم, و در نهایت ارزیابی و نتیجه گیری. در مرحله پیش پردازش, ما تمام کلماتی اضافه که زیاد استفاده می شوند( مانند the, as, a , ...) را خارج می کنیم, کلمات را ریشه یابی کرده و تگ های HTML را قبل از پیش پردازش خارج می نماییم.
![فرایند شناسایی ایمیل های اسپم مبتنی بر شبکه بیزین ](http://parsis.tahasys.ir/capture.jpg)


# آزمایش‌ها

# کارهای آینده

# مراجع
[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] Hui-Fang Shi ,Tie-GanG Fan ,Guo-Li Zhang “Documents Categorization Based on Bayesian Spanning Tree”, Proceedings of the fifth International Conference on Machine Learning and Cyberneticsm,Dalian , pp 1072-1075 (2006)
[4] W. W . Cohen , “ Learning Rules that Classify e-mails”,In Spring Symposium on Machine Learning in Information Access , Stanford , California (1996)
[5] Karl-Michael Schneider,“A Comparison of Event Model For naïve Bayes Anti-Spam E-Mail Filtering”, In Proceedings of the 10th conference of the European Chapter of Association for Computational Linguistics,Budapest,Hungary, pp 307-314 (April 2003)
[6] Aleksander Kolez and Joshua Alspector, “ SVM-based filtering of e-mails spam with content-specific missclassification costs”,In proceeding of the TextDM'01 Workshop on Text Mining -helad at the 2001 IEEE International Conference on Data Mining (2001)
 [7] I. Androutsopoulos et al. , “Learning to Filter Spam E-mail : A Comparison of naïve bayesian and a Memory-based Approach ”,In proceeding of the Workshop on Machine Learning and Textual Information Access”, Pages :1-13 (2000)
[8]  Georgios Sakkis , Ion Androutosopoulos , Georgios Paliouras , Vangelis Karkaletsis,Constantine D. Spyropoulos and Panagiotis Stamatopoulos, “Stacking classifiers for anti-spam filtering of e-mail ”,In proceeding of 6th  Conference on Emprical Methods in Natural Language Processing (EMNLP 2001),pages :44-50 (2001)
[9] Mehran Sahami,Susan Dumais,David Heckerman and Eric Horvitz,”A bayesian approach to filtering junk  e-mail”,In learning for text categorization : papers from the 1998 workshop ,Madison,Wisconsin (1998)
[10] Geiger d. ,”An entropy-bases learning algorithm of bayesian conditional trees”,In proceeding of the conference of uncertainty in artificial intelligence,pages:92-97 (1993)



# پیوندهای مفید
+ [پردازش زبان فارسی در پایتون](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)
+ [UCI Spambase Data Set ](https://archive.ics.uci.edu/ml/datasets/Spambase)
+ [WEBSPAM-UK2007 dataset](http://chato.cl/webspam/datasets/uk2007/)
+ [Natual Language Processing Course - Text Classification](https://class.coursera.org/nlp/lecture/preview)
+ [NLTK](http://nltk.org)