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

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

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

# کارهای مرتبط
+ روش اول:
+ در ارسال نامه های الکترونیکی بعضی از اطلاعات فیلدهای سرایند توسط فرستنده پر می شود و برخی دیگر به صورت خودکار توسط MTA تکمیل می شوند. MTA بر اساس اطلاعات سرایند٬ نامه ی الکترونیکی را به گیرنده تحویل می دهد و سپس این عمل تحویل را در فایل syslog ثبت می نماید. که اطلاعات syslog به صورت خودکار فقط توسط MTA پر می شوند و فرستنده اجازه ی هیچ گونه تغییر در آن ها را ندارند
هرزنامه نویسان برای فریب دادن ضد هرزنامه ها از اطلاعات غیر معتبر و نامربوط در فایل سرایند نامه ی الکترونیکی استفاده می کنند.
در این روش اطلاعات فیلدها مانند: From, To, Date, Deliver-to, Received, Reteurn-Path بررسی می شوند و در صورت غیر معتبر یا نامربط  بودن هر کدام از اطلاعات آن ها ٬ درجه ی هرزنامه بودن نامه الکترونیکی بالا می رود.منظور از غیر معتبر این است که هرزنامه نویس در فیلدهای مورد نظر اطلاعات نادرست وارد کند مثلا قسمت From را با آدرس نامشخص که به صورت تصادفی تولید شده است یا با آدرس های جعلی پر کند.
اطلاعات فیلدهای فایل سرایند را به تنهایی از نظر اعتبار و صحت و قالب بندی می سنجند و نیز این اطلاعات را با اطلاعات فیلدهای همتایشان در فایل syslog از نظر سازگاری داشتن با هم مقایسه می کنند.منظور از همتا بودن این است که آن از دسته از فیلدهایی که از نظر جنس اطلاعات یکسان باشند با هم مقایسه می شوند
+ روش دوم:
+ ۱)حذف کلمات بی ارزش
+ ۲)ریشه یابی کلمات
+ ۳)استخراج ویژگی ها
+ ۴)کاهش ویژگی ها
+ ۵)ساخت مدل
+ ۱- حذف کلمات بی ارزش:
+ در این بخش از پایگاه اطلاعاتی استاندار در زمینه تشخیص هرزنامه استفاده می کنیم که شامل نامه های الکترونیک عادی و هرزنامه می باشد.
ما در ابتدا سعی داریم تا با انجام روش های متفاوت کلمات بی ارزش (and,the,or,in,…) را از متن نامه ها حذف کنیم.
+ ۲- ریشه یابی کلمات:
+ بعد از حذف کلمات بی ارزش کلمات باقی مانده را ریشه یابی می کنیم و هدف این است که کلماتی که ریشه یکسانی دارند را یکان در نظر بگیریم(الگوریتم stemming)
+ ۳- استخراج ویژگی:
+ می خواهیم ویژگی های موجود در متن را پیدا کنیم و برداری از ویژگی ها را تشکیل دهیم. این بردار به این صورت ساخته می شود که بعد آن برابر با تعداد ویژگی های استخراج شده می باشد و اگر نامه الکترونیکی مربوطه ویژگی مورد نظر را داشته باشد مقدار آن ویژگی برابر با مقداری معین و در غیر این صورت مقدار ۰ را برای آن ویژگی در بردار قرار می دهیم.
+ ۴- کاهش ویژگی ها:
+ یکی از مراحل مهم در فیلتر کردن هرزنامه ها که تاثیر بسیار زیادی در عملکرد و افزایش سرعت تشخیص دارد انتخاب بهترین ویژگی ها از میان ویژگی های استخراج شده می باشد. زیرا ویژگی ها که شامل عبارات یا کلمات موجود در اسناد می شوند شامل ویژگی های بیشتری هستند که این اشکال در عملکرد الگوریتم های یادگیری تاثیر منفی دارد. بنابراین نیاز به مرحله کاهش ویژگی ها داریم به طوری که ویژگی هایی که تفاوت هرزنامه و ایمیل عادی را به درستی بیان نمی کنند حذف گردند.
بنابر این در این مرحله با اعمال الگوریتم انتخاب ویژگی بر روی بردارها بهترین ویژگی ها را استخراج می کنیم و به این ترتیب بعد بردارها نیز کاهش میابد.
+ ۵- ساخت مدل:
+ در این مرحله ما می خواهیم با استفاده از ویژگی های برگزیده شده از مرحله ی قبل و اعمال الگوریتم های متفاوت طبقه بندی در داده کاوی بر روی بردارهای بدست آمده مدلی تهیه کنیم بطوری که با استفاده از آن بتوان ایمیل های هرزنامه و ایمیل های عادی را تفکیک کرد.

# آزمایش‌ها

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

# مراجع
+ Liu, Bing, and Lei Zhang. "A survey of opinion mining and sentiment analysis." Mining Text Data. Springer US, 2012. 415-463.
+ Blanzieri, Enrico, and Anton Bryl. "A survey of learning-based techniques of email spam filtering." Artificial Intelligence 
Review 29.1 (2008): 63-92.
+ Chih-Hung Wu, “Beahavior-based detection using neural networks”, Expert Systems with Applications: An International Journal. Vol.36, Issue 3, pp4321-4330. April 2009.
+ http://en.wikipedia.org/wiki/information_gain.
+ http://encarta.msn.com/encnet/refpages/searchdetail.aspx?q=spam&pg=1&grp=art.
+ Cisco 2008 Annual Security Report.
+ http://www.civilica.com.
+ http://www.ranks.nl/resources/stopwords.html.
+ http://tartarus.org/martin/Porterstemmer.که از اهداف این هرزنامه نویسان انجام کارهای مخرب ٬ سرقت های رایانه ای و سوء استفاده از اطلاعات محرمانه ی افراد فریب خورده  می توان یاد کرد. 

# کارهای مرتبط
**- انواع الگوریتم های تشخیص و توقیف هرزنامه:**

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

*- تشخیص بر اساس محتوا و کلمات:*

این روش ساده ترین و رایج ترین راه برای شناسایی هرزنامه ها می باشد. اگر محتوای نامه های الکترونیکی و یا محتوای اجزای تشکیل دهنده ی وب سایت مانند عنوان ٬ فرا تگ ٬ لینک های موجود در صفحه و URL شامل کلمات خاصی باشند ٬ به عنوان هرزنامه شناسایی می شوند. هرزنامه نویسان اغلب از عبارات خاص و جذاب برای جلب توجه کاربران در نامه ی الکترونیکی یا وب سایت استفاده می کنند . کلماتی مانند free, Buy-Now, cheap, Satisfy-Me, Sex, Winner و..به همین دلیل هرزنامه نویسان کلمات مورد استفاده ی خود را دایم به شیوه های مختلف تغییر می دهند این تغییر مکرر باعث کاهش دقت می شود. برای رفع این مشکل به پایگاه داده بزرگتری جهت پوشش کلمات گوناگون نیاز داریم که جستجو و پردازش در این پایگاه داده باعث افزایش پیچیدگی زمانی می شود . از طرفی احتمال از دست رفتن نامه های الکترونیکی و یا وب سایت های واقعی و قانونی به علت استفاده ی مشروع از این کلمات نیز بالا می رود.

 *- تشخیص بر اساس رفتار هرزنامه:*

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

هرزنامه نویسان برای فریب دادن ضد هرزنامه ها از اطلاعات غیر معتبر و نامربوط در فایل سرایند نامه ی الکترونیکی استفاده می کنند بدین سببب 
در این روش اطلاعات فیلدها مانند: From, To, Date, Deliver-to, Received, Reteurn-Path بررسی می شوند و در صورت غیر معتبر یا نامربط  بودن هر کدام از اطلاعات فیلدهای فایل سرایند درجه ی هرزنامه بودن نامه الکترونیکی را بالا می برد.

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

اطلاعات فیلدهای فایل سرایند را به تنهایی از نظر اعتبار و صحت و قالب بندی می سنجند و نیز این اطلاعات را با اطلاعات فیلدهای همتایشان در فایل syslog از نظر سازگاری داشتن با هم مقایسه می کنند.منظور از همتا بودن این است که آن از دسته از فیلدهایی که از نظر جنس اطلاعات یکسان باشند با هم مقایسه می شوند.

مقایسه و تعیین صحت این فایل ها بر اساساس قوانینی تعریف شده است ؛ که این قوانین تا حدی همه ی حالاتی که برای سنجش فیلد ها نیازمند است را تحت پوشش می دهد.و به ۲ بخش تقسیم شده اند: یک بخش برای سنجش فیلدهای هر کدام از فایل ها(سرایند و syslog) و بخش دیگر برای مقایسه هر فیلد از فایل سرایند با فایل sysylog ٬ این قوانین مواردی مانند تهی ٬ جعلی ٬  تصادفی و در قالب درست بودن فیلدهای ادرس و قالب ٬ زمان(اداری یا غیر اداری) فیلد تاریخ(Date) را شامل می شوند همچنین فیلدهایی که قرار است دو به دو با هم مقایسه شوند از نظر اینکه آیا دو فیلد در یک قالب درست آدرس یا زمان هستند؟مثلا اطلاعات فیلد FROM از فایل سرایند با اطلاعات فیلد FROM از فایل  syslog در یک نامه الکترونیکی باید یکسان باشند.

*- روش پیشنهادی:*

روش مورد استفاده در این بخش شامل مراحل زیر می باشد:

۱)حذف کلمات بی ارزش

۲)ریشه یابی کلمات

۳)استخراج ویژگی ها

۴)کاهش ویژگی ها

۵)ساخت مدل

۱- حذف کلمات بی ارزش:

در ابتدا به منظور آزمایش روش پیشنهادی از پایگاه های اطلاعاتی استاندارد در زمینه تشخیص هرزنامه (enorm) استفاده می کنیم که شامل نامه های الکترونیک عادی و هرزنامه می باشد. داده های مورد بررسی ما داده های مورد استفاده در مقاله های معتبر علمی می باشد که در چند سال اخیر چاپ شده است. ما در ابتدا سعی بر آن داریم تا با انجام روش های متفاوت کلمات بی ارزش (and,the,or,in,…) را از متن نامه ها حذف کنیم.

۲- ریشه یابی کلمات:

بعد از حذف کلمات بی ارزش کلمات باقی مانده را ریشه یابی می کنیم و هدف این است که کلماتی که ریشه یکسانی دارند را  یکسان در نظر بگیریم برای این منظور ما از الگوریتم های stemming استفاده می کنیم.

۳- استخراج ویژگی:

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

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

الگوی تکراری:

الگوی <SB<sb1,sb2,…,sbm در دنباله S نمونه ای از الگوی <P<e1,e2,…,en می باشد اگر و تنها اگر عبارت QRE زیر برقرار باشد:

عبارت e1 ; [-e1,e2,…,en]*;e2;…; [-e1,e2,…,en]*;en.   :   QRE   

 یک نمونه را با ۳ تایی (sidx , istart , iend) نمایش داده می شود که در آن sidx نشان دهنده شماره دنباله S در پایگاه داده اطلاعاتی می باشد و istart اندیس شروع و iend اندیس پایان زیر رشته در S می باشد . در حالت پیش فرض٬ تمامی اندیس ها از ۱ شروع می شود.

۴- کاهش ویژگی ها:

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

۵- ساخت مدل:

در این مرحله ما می خواهیم با استفاده از ویژگی های برگزیده شده از مرحله ی قبل و اعمال الگوریتم های متفاوت طبقه بندی در داده کاوی بر روی بردارهای بدست آمده مدلی تهیه کنیم بطوری که با استفاده از آن بتوان ایمیل های هرزنامه و ایمیل های عادی را تفکیک کرد.

برای این منظور از نرم افزار weka و از الگوریتم Random Forest  برای ساخت مدل استفاده میکنیم . و ارزیابی کارایی مدل ٬ نیز بر مبنای اعتبار سنجی صلیبی ۱۰ تایی می باشد.

**لینک کد قرار داده شده بر روی github:**

+ https://github.com/pegah1/hazfeharznname

# آزمایش‌ها

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

# مراجع
+ Liu, Bing, and Lei Zhang. "A survey of opinion mining and sentiment analysis." Mining Text Data. Springer US, 2012. 415-463.
+ Blanzieri, Enrico, and Anton Bryl. "A survey of learning-based techniques of email spam filtering." Artificial Intelligence 
Review 29.1 (2008): 63-92.
+ Chih-Hung Wu, “Beahavior-based detection using neural networks”, Expert Systems with Applications: An International Journal. Vol.36, Issue 3, pp4321-4330. April 2009.
+ J. G. Hidalgo, M. M. LÛpez, and E. P. Sanz, Combining text and heuristics for
cost-sensitive spam filtering, in Proceedings of the Fourth Computational Natural Language
Learning Workshop, CoNLL-2000, Lisbon, Portugal, 2000, Association for Computational
Linguistics
+ G. Sakkis, I. Androutsopoulos, G. Paliouras, V. Karkaletsis, C. Spyropoulos,
and P. Stamatopoulos, Stacking classifiers for anti-spam filtering of e-mail, in Proceedings
of the 6th Conference on Empirical Methods in Natural Language Processing (EMNLP 2001),
L. Lee and D. Harman, eds., Carnegie Mellon University, 2001, pp. 44ó50.
+ P. Pantel and D. Lin, Spamcop: A spam classification & organization program, in Learning
for Text Categorization: Pap
+ محمد رزم آرا ٬ بابک اسدی ٬ مسعود نارویی ٬ منصور احمدی٬ سال ۱۳۹۱ ٬ ارایه یک روش نوین ترکیبی مبتنی بر چند فیلتر ٬ جهت افزایش قابلیت تشخیص هرزنامه ها  سال ۲۰۱۲  ٬ دومین همایش ملی مهندسی کامپیوتر ٬برق و فناوری اطلاعات ٬دانشگاه آزاد اسلامی واحد خمین

http://www.civilica.com/copied/IP/20140224/2165969/208619c8e9c8a97bb2fb684ee1882f9e 

+  الهام افسری یگانه ٬ بررسی الگوریتم تشخیص و توقیف هرزنامه ها بر اساس رفتار هرزنامه 

  http://www.civilica.com/copied/IP/20140223/2162060/b4f8b08d0b6ea11dec2032009c7cc509

+ https://github.com/spamkeywords/keywords/blob/master/keywords.txt
+ http://wiki.apache.org/spamassassin/Rules
+ http://webmarketingtoday.com/articles/spamfilter_phrases
+ http://wiki.apache.org/spamassassin/UsingOnWindows
+ http://www.flounder.com/mail_policies.htm
+ http://blog.hubspot.com/blog/tabid/6307/bid/30684/The-Ultimate-List-of-Email-SPAM-Trigger-Words.aspx.
+ http://spamassassin.apache.org/index.html
+ http://www.codeproject.com/Articles/456380/A-Csharp-SMTP-server-receiver
+ Boosting Trees for Anti-Spam Email Filtering
Xavier Carreras and Llu's Marquez, TALP Research Center, LSI Department, Universitat Politecnica de Catalunya (UPC), Jordi Girona Salgado 1–3,Barcelona E-08034, Catalonia

http://arxiv.org/pdf/cs/0109015v1.pdf

+ Spam Filtering with Naive Bayes – Which Naive Bayes?

http://classes.soe.ucsc.edu/cmps242/Fall09/lect/12/CEAS2006_corrected-naiveBayesSpam.pdf

+ SVM-based Filtering of E-mail Spam with Content-specific Misclassification Costs

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.61.883&rep=rep1&type=pdf

+ M. Brown, W. N. Grundy, D. Lin, N. Cristianini, C. Sugnet, M. Ares, and .D Haussler, Support vector machine classification of microarray gene expression data, Tech. Report UCSC-CRL-99-09, University of California, Santa Cruz, 1999
+ S. Dumais, J. Platt, D. Heckerman, and M. Sahami, Inductive learning algorithms
and representations for text categorization, in Proceedings of 7th International Conference on
Information and Knowledge Management, 1998, pp. 229ó237.
+ http://en.wikipedia.org/wiki/information_gain
+ http://encarta.msn.com/encnet/refpages/searchdetail.aspx?q=spam&pg=1&grp=art
+ Cisco 2008 Annual Security Report
+ http://www.ranks.nl/resources/stopwords.html
+ http://tartarus.org/martin/Porterstemmer
# پیوندهای مفید
+ [پردازش زبان فارسی در پایتون](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)