روزانه بیش از 300 میلیارد ایمیل در سراسر جهان ارسال می‌شود که دست‌کم نیمی از آن‌ها هرزنامه است. تلاش‌های زیادی برای خودکارسازی روند شناسایی هرزنامه‌ها انجام شده که به‌کارگیری یادگیری ماشین موثرترین و کارآمدترین روش اثبات شده‌ای است که تاکنون ارائه‌دهندگان خدمات ایمیلی از آن استفاده کرده‌اند.

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

درست است که هنوز هم ایمیل‌های اسپم را مشاهده می‌کنیم، اما اگر به پوشه ایمیل‌های ناخواسته (junk) مراجعه کنید، مشاهده می‌کنید که به لطف الگوریتم‌های یادگیری ماشین بخش عمده‌ای از هرزنامه‌ها حتی شانس ورود به صندوق پستی را پیدا نمی‌کنند. یادگیری ماشین چگونه قادر به تشخیص هرزنامه‌ها از ایمیل‌های عادی است؟ در این مقاله مرور کلی بر نحوه شناسایی هرزنامه از طریق الگوریتم‌های  یادگیری ماشین خواهیم داشت.

چالش

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

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

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

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

پیشنهاد مقاله: چرا آموزش داده‌کاوی مهم است؟ 

یادگیری ماشین مبتنی بر بیز ساده  (Naïve Bayes)

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

امروزه الگوریتم‌های مختلف یادگیری ماشین می‌توانند هرزنامه‌نامه‌ها را تشخیص دهند، اما الگوریتم بیز ساده یکی از قدرتمندترین گزینه‌ها در این زمینه است. همان‌گونه که از نام این الگوریتم مشخص است، بیز ساده مبتنی بر قضیه بیز (Bayes’ theorem) است که احتمال وقوع یک رویداد را بر اساس دانش قبلی توصیف می‌کند. شکل یک قضیه بیز را نشان می‌دهد.

فرمول قضیه بیز

شکل 1: فرمول قضیه بیز

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

پیش‌بینی باران بر مبنای ویژگی‌های شهودی

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

پیشنهاد مقاله: آموزش برنامه‌نویسی

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

داده‌ها

شناسایی هرزنامه یکی از بزرگ‌ترین چالش‌های پیش‌روی یادگیری ماشین مبتنی بر نظارت است. به بیان دیگر، شما باید مدل یادگیری ماشین خود را با مجموعه‌ای از نمونه پیام‌های هرزنامه و هام‌ها آموزش دهید و به مدل اجازه دهید تا الگوهای مربوطه که این دو گروه مختلف را جدا می‌کنند، پیدا کند. بیشتر ارائه‌دهندگان خدمات ایمیلی مجموعه داده‌های غنی از ایمیل‌های برچسب‌گذاری شده دارند.

به‌طور مثال‌، هر بار که ایمیلی را به عنوان هرزنامه در حساب جی‌میل خود نشانه‌گذاری می‌کنید، داده‌های آموزشی را برای الگوریتم‌های یادگیری ماشین گوگل ارسال می‌کنید.

البته توجه داشته باشید که الگوریتم شناسایی هرزنامه گوگل بسیار پیچیده‌تر از آن‌ چیزی است که در این مقاله در مورد آن بحث می‌کنیم. این شرکت مکانیسم‌هایی برای جلوگیری از سو‌ء استفاده از ویژگی گزارش هرزنامه (Report Spam) در اختیار دارد.

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

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

آموزش مدل یادگیری ماشین

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

استیو می‌خواهد برای مهمانی ساندویچ پنیر کبابی بخرد.

سالی مقداری مرغ را برای شام کباب می‌کند

مقداری پنیر خامه‌ای برای کیک خریدم

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

استیو‌، می‌خواهد، بخرد، پنیر، ساندویچ، کبابی، برای، مهمانی، سالی، کباب می‌کند، برخی، مرغ، شام، من، خامه، کیک خریداری کردم.

ما می‌توانیم کلماتی را که در نامه‌های اسپم و در ایمیل وجود دارند، حذف کنیم تا روند تشخیص ساده‌تر شود. با این‌حال، این تکنیک به تنهایی راهگشا نیست. این واژگان، کلمات متوقف‌کننده (stop words) نامیده می‌شوند. علاوه بر این واژگان عمومی دیگری  نظیر for، is، to، and و موارد این چنینی نیز وجود دارند. در مجموعه داده‌های بالا‌، حذف کلمات توقف باعث کاهش دایره واژگانی می‌شود که باید روی آن‌ها متمرکز شویم.

علاوه بر این، می‌توانیم از تکنیک‌های دیگری مانند بن واژه‌سازی (lemmatization) و ریشه‌یابی (stemming) استفاده کنیم تا کلمات به شکل پایه تبدیل شوند. به‌طور مثال، در مجموعه داده‌های نمونه ما، خرید (buy) و خریداری (bought) دارای ریشه‌ای مشترک هستند، به همین شکل کباب و کباب کردن نیز چنین هستند. واژه‌سازی و ریشه‌یابی می‌توانند به ساده‌سازی بیشتر مدل‌های یادگیری ماشین کمک کنند.

در برخی موارد، از دو کلمه قبلی (bigrams) که نشانه‌های دو-کلمه‌ای هستند، سه کلمه قبلی (trigrams) که نشانه‌های سه کلمه‌ای هستند یا ان-گرام‌های بزرگ استفاده می‌شود. به‌طور مثال‌، علامت‌گذاری مجموعه داده‌های فوق به صورت دو کلمه‌ای اصطلاحاتی مانند “کیک پنیری” تولید می‌کند و با استفاده از تکنیک سه کلمه‌ای “ساندویچ پنیر کبابی” را تولید می‌کند.

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

پیشنهاد مقاله: بوتکمپ برنامه‌نویسی بامداد

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

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

نویسنده: بن دیکسون

مترجم: حمیدرضا تائبی

منبع: bdtechtalks