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

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

مقدمه

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

کارهای مرتبط

- انواع الگوریتم های تشخیص و توقیف هرزنامه:

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

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

این روش ساده ترین و رایج ترین راه برای شناسایی هرزنامه ها می باشد. اگر محتوای نامه های الکترونیکی و یا محتوای اجزای تشکیل دهنده ی وب سایت مانند عنوان ٬ فرا تگ ٬ لینک های موجود در صفحه و 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 می باشد . در حالت پیش فرض٬ تمامی اندیس ها از ۱ شروع می شود.

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

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

۵- ساخت مدل:

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

آزمایش‌ها

۱- مجموعه داده و ویژگی های استخراج شده:

نکات قابل توجه برای run گرفتن از کد:

  • فایلی که شامل ایمیل هاست در کد به نام DOCUMENT فراخوانی می شود و هر ایمیل داخل فایل با تگ باز <BODY > شروع شده و با تگ بسته <BODY/> تمام می شود.

  • خروجی شامل ایمیل هایی است که هرزنامه تشخیص داده شده اند و به ترتیب میزان ویژگی هرزنامه بودن هر ایمیل(ایمیل های اول ویژگی هرزنامه

بودن بیشتری را دارند) نشان داده شده است.

  • برای اجرای برنامه ابتدا دو تابع ()write_start_unmergefile و ()main_dictionary را اجرا کرده تا فایل های مورد نیاز ساخته شده و سپس این

دو تابع را کامنت کرده و تابع ()input_query را اجرا کرده تا خروجی را مشاهده کنید.

۲- ارزیابی کارایی مدل:

در سیستم پیشنهادی برای سنجش کارایی مدل از معیارهای Accuracy و Precision و Recall و Fmeasure استفاده شده است در زیر

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

Accuracy Precision Recall Fmeasure
TP+TN / TP+FP+TN+FN TP / FP+TP TP / FN+TP 2Recall.Precesion / Recall+Precesion
  • معیار prescision نسبت تعداد پیام هایی است که به درستی دسته بندی شده اند و از دسته های هرزنامه هستند به تعداد کل پیام های شناسایی شده به عنوان هرزنامه.

  • معیار recall نسبت تعداد کل پیام های شناسایی شده به عنوان هرزنامه به تعدا د کل پیام هایی است که واقعا جزء دسته هرزنامه ها می باشند.

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

  • معیار fmeasure ترکیبی از recall و precision است.

در ادامه , برای بررسی دقت عملکرد روش پیشنهادی , از معیارهای بالا بر روی یک نمونه پایگاه داده اطلاعاتی استفاده می شود:

  • نتیجه ی کد به ازای نمونه فایل ورودی DOCUMENT.txt(لینک فایل ورودی در بالا ذکر شده است):

Accuracy Precision Recall Fmeasure
0.5 0.6 0.4 0.5

- استفاده از الگوریتم next phrase :
در قسمت قبلی ؛ هرزنامه ها به ترتیبی نشان داده می شدند که تکرار کلمات stop word در ان ها بیشتر است ولی همان طور که می دانیم stop word شامل جمله نیز می باشد پس باید جمله ها را نیز در نظر بگیریم بدین منظور در یک دیتابیس جمله ها را ذخیره کرده و در سندهایی که به عنوان هرزنامه تشخیص داده شدند وجود این جمله ها را نیز در ان بررسی میکنیم و در صورت و جود ان ها و تعداد تکرارشان به میل مورد نظر امتیازی اضافه می شود البته در هنگام چک کردن این نکته را نیز در نظر داریم که ممکن یکسری جملات کلماتشان یکسان نباشد ولی مفهوم یکسانی داشته باشند بدین منظور هر جمله از stop word را با الگوریتم stemming ریشه گیری کرده و کلمات اضافه را نیز از ان ها حذف میکنیم تا به صورت جامع تری عمل مقایسه انجام شود.

تصویر کد اولیه

  • نتیجه برنامه با در نظر گرفتن جملات هرزنامه:

تصویر کد بهینه شده

همانطور که مشاهده می کنید ترتیب ایمیل ها ی نشان داده شده عوض شده است؛ در صورت خواندن متن ایمیل ها متوجه می شوید که جملات هرزنامه ی بیشتری در ایمیل های اول نوشته شده است.

  • استفاده از الگوریتم inverted_index برای افزایش سرعت عملکرد الگوریتم :

زمانی که حجم فایل DOCUMENT شامل ایمیل ها زیاد است برای اینکه هر دفعه برای دسترسی به هر ایمیل به دیسک نرویم و فایل را جست و جو کنیم با استفاده از این روش ایمیل های مورد نیاز را به ROM آورده و تعداد دفعات رجوع به DISK را کاهش می دهیم.
با استفاده از تابع ( ()p=f.tell) ادرس بایت خط قبل شروع هر سند را در هارد ذخیره کرده ایم که این کار در مواقعی که میخواهیم فقط یکسری از اسناد را بررسی کنیم مطلوب است " چون با دستور () f.seek می توانیم بدون اینکه از اول corpus شروع به خواندن کنیم مستقیما به خط شروع هر ایمیل برویم.
از آن جایی که توضیح این روش نیاز به بیان جزییات الگوریتم استفاده شده است ؛ توضیحات بیشتر و جزیی را در فایل پی دی اف در سایت ذیل قرار داده ام و توصیه می کنم حتما مطالعه کنید روش جالبیه!!!:-)

کارهای آینده

پیاده سازی روش های زیر است

- تشخیص هرزنامه بر اساس یک روش ترکیبی که مبتنی بر چند فیلتر است:

۱- حذف کلمات بی ارزش ۲-ریشه یابی کلمات ۳-استخراج ویژگی ها ۴-کاهش ویژگی ها ۵-ساخت مدل

- تقویت روش بالا با استفاده از بررسی جملات هرزنامه

- فیلتر کردن هرزنامه ها بر اساس روش ترکیبی مبتنی بر الگوریتم های random forest و iterative pattern

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

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

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

یکی از راه های رایجی که سربار محاسباتی هم ندارد استفاده کردن از لیست سیاه است.در این روش لیستی از آدرس های IP که به عنوان مبدا انتشار هرزنامه شناخته شده اند ؛ تهیه می شود.

نتیجه گیری

در این جا برای پیاده سازی روشی؛ به منظور حذف هرزنامه از یک روش ترکیبی که مبتنی بر چند فیلتر است استفاده شده است .
با توجه به نتایج حاصل شده می توان چنین نتیجه گیری کرد که استفاده از یک روش ترکیبی برای فیلتر کردن و انتخاب ویژگی ها راه حل موثری می باشد. و با مقایسه ی با کارهای قبلی انجام شده که صرفا کلمات مد نظر آن هاست می توان نتیجه گیری کرد که این روش توانایی بیشتری در شناسایی هرزنامه ها دارد که جملات را نیز در نظر می گیرد و به دلیل کاهش تعداد ویژگی های استخراج شده و استفاده از الگوریتم perterm-index که برای بررسی هر ایمیل به دیسک رجوع نکرده و حافظه زیادی مصرف نشود ؛ سرعت اجرا نیز افزایش یافته است.

مراجع

  • 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

  • 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.

  • Cisco 2008 Annual Security Report

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

علیرضا نوریان

می‌تونستید مراجع بهتر و بیشتری پیدا کنید. نوشتارتون هم خیلی جای اصلاح داره.

رد شده

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

رد شده

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

محسن ایمانی

کار شما در این فاز در کل خوب بود، اما چند نکته وجود دارد که به آن باید بیشتر توجه نمایید:

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

  • شما باید روشی که آن را پیاده‌سازی کرده‌اید با روش‌های معمول ارزیابی، مثل precision و recall، و روی مجموعه داده استاندارد مورد ارزیابی قرار دهید.

  • توضیح نداده‌اید که چرا برای ساخت مدل خود از Random forest استفاده کردید و از Weka چگونه و در کجای پیاده‌سازی خود استفاده نمودید.

  • لینک صفحات وب را نمی‌توان به عنوان یک مرجع قابل قبول در نظر گرفت، بهتر است این لینک‌ها را در قسمت لینک‌های مرتبط بیاورید.

تایید شده

مشخص است تلاش زیادی برای انجام پروژه صورت گرفته و در کل به خوبی انجام شده است. تنها نکاتی که از روی حساسیت شخصی ناشی می‌شود بیان می‌کنم وگرنه از نظر من کار شما بسیار خوب می‌باشد.

قسمت روش پیشنهادی این را به خواننده القا می‌کند که روش را خودتان ابداع کرده‌اید، یا تغییری در آن اعمال کرده‌اید، اما روش ذکر شده document classification می‌باشد.

نکات مربوط به پیاده‌سازی:

بهتر بود اگر نتایج حاصل از پیاده‌سازی همچون دقت تشخیص هرزنامه‌ها هم اعلام می‌شد.
استفاده از یک کد استایل ثابت در طول برنامه باعث خوانایی بیشتر کد می‌شود و به آن زیبایی می‌بخشد. کد استایل رایج در پایتون PEP8 می‌باشد.
http://legacy.python.org/dev/peps/pep-0008/

در کد شما استفاده از weka که گفته بودید دیده نشد.

پایتون ابزارهای بسیار قوی برای پردازش متن ساختارمند دارد که استفاده از آن‌ها کار شما را بسیار راحت‌تر می‌کرد.

موفق باشید،

رد شده

آزمایش به دقت و با تمام جوانب مورد بررسی قرار گرفته است

رد شده

با عرض سلام و خسته نباشید خدمت شما
پروژه تون نقاط قوت زیادی داره اما چند تا نقطه ضعف هم داره:

  1. چند غلط املایی در متن دیده میشه.

  2. بهتر بود اسم روش پیشنهادی تون رو هم ذکر می کردید.

  3. بهتر بود روش پیشنهادی تون رو با جزئیات بیشتری توضیح می دادید تا قابل درک تر می شد. مثلاً بهتر بود الگوریتم stemming ی رو که استفاده کردید توضیح می دادید.
    اما چون تو این بخش باید آزمایش ها رو انجام می دادید و به نظرم روی این بخش هم خیلی خوب کار کرده اید من نمره ی کامل رو به شما میدم.

رد شده

توضیح شما در مورد این پروژه چرا بجای این صفحه باید درون یک پی دی اف در یک جای دیگر باشد؟؟

علیرضا نوریان
  • اعدادی که برای سنجش کار گزارش کردید، روی چه داده‌هایی آزمایش شده‌اند؟

  • توضیح خط به خط کد چندان اهمیتی ندارد برای مخاطب.

  • به نظر می‌رسد در کار شما اصلا از مدل استفاده‌ای نشده است. اگرچه در روش‌تان به ساختن مدل اشاره کرده‌اید. منظور از ساختن مدل، آموزش یک رده‌بند روی داده‌های هرزنامه آموزشی و استفاده از آن در هنگام تشخیص است.

  • فکر می‌کنم عددی که به عنوان Recall گزارش کردید، اشتباه وارد شده. چون حداکثرش ۱ هست.

تایید شده

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

رد شده

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

رد شده

با عرض سلام و خسته نباشید خدمت شما دوست عزیز.
در مورد پروژتون نکات زیر به ذهنم می رسه که عرض می کنم:
1-بهتر می بود که هر جایی که مطلبی بیان شده،خواننده را به مراجع،ارجاع می دادید.
2-بهتر می بود که در مورد اقدامات صورت گرفته در راستای بهبود نتایج ،مطالبی بیان می شد.
3-بهتر می بود که از کتابخانه های ارائه شده در لینک پردازش زبان فارسی در پایتون،استفاده می کردید.
موفق باشید.

تایید شده

سلام
موضوع پروژه، بسیار جالب و کاربردی است. یک موضوع جالب درباره آن

  • مقدمه را بسیار کوتاه نوشته اید! در مقدمه می توانستید اهمیت موضوع و چالش های کار را بیشتر توضیح دهید تا مخاطب انگیزه بیشتری برای خواندن ادامه متن داشته باشد. مثلا می توانستید بگویید N درصد ایمیل ها هرزنامه هستند یا انقدر وقت مردم را تلف می کنند یا ...

  • MTA چیه؟!

  • کلمات بی ارزش منظور stop word هستند. پانویس کنید یا این که از ترجمه بهتری استفاده کنید.

  • کارهای آِینده خوب توضیح داده شده.

  • لطفا روی گیت هاب پی دی اف یا ورد نگذارید! گیت هاب محلی برای نگهداری سورس است. در ضمن کد بدون کامنت و کمی نامفهوم است.

رد شده

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

تایید شده

سلام ،خسته نباشید

  • توضیحاتتون درباره پروژه خوب و جامع بود .

  • خوب بود بعضی اصطلاحات رو لینک می زدید به صفحه های مرتبط تا در صورت نیاز خواننده بتونه اطلاعات بیشتری بدست بیاره.(مثل MTA یا syslog)

  • قرار دادن تمامی کدها ، توضیحات اضافه و فایل های مورد نیاز روش جالبی بود.

  • خوب بود در توابعی که به آنها اشاره کرده بودید را کمی توضیح می دادید مثلا (rankBM25_DocumentAtAtime_WithHeap(q,k

  • موفق باشید

تایید شده

سلام
من موقع اجرای کد شما به ارورهای import بر خوردم که متاسفانه در داکیومنت کد اشاره ای به نیاز نصب آنها و یا لینک دانلود نشده بود
به هر حال بعد از چند مرحله نصب نیازمندیها به ارور زیر برخوردم :
line[i] = porter.stem(line[i])
AttributeError: 'module' object has no attribute 'stem'
به همین دلیل متاسفانه نتونستم کد شما رو اجرا کنم
حتی نکات ذکر شده قبل از اجرای کد ( که خیلی بد پیاده سازی شده بود و خود فایل اصلی باید این توابع رو صدا بزند نه کاربر ) رو هم من رعایت کردم ولی بازهم ارور برطرف نشد
قسمت ارزیابی خوب معرفی شده بود ولی مشکل اینجاست که به جای یک فایل ورودی باید چند فایل ورودی برای تست داده میشد تا نتایج قابلیت مقایسه داشته باشند
نحوه ی کار الگوریتم next phrase در هیچ جایی از پروژه توضیح داده نشده بود
نتیجه ی برنامه به صورت کاملا ابتدایی و با عکس گرفتن از خروجی برنامه مشخص شده بود در حالی که اگر از جدول استفاده میشد و خلاصه ی نتایج مشخص میشد مخاطب بهتر میتونست مطلب و دریافت کنه
در قسمت نتایج فقط به این موضوع اشاره شده که اگر از الگوریتم per term استفاده میشد نتایج بهبود میافت ! این اصلا چیزی نیست که ما انتظار داریم باید نتیجه ی کامل الگوریتم ها , سرعت و دقت آنها مشخص شوند.
موفق باشید

محسن ایمانی

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