یک مدل طبقه بندی متن سفارشی ایجاد کنید و برنامه های خود را با آن به روز کنید

۱. قبل از شروع

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

پیش‌نیازها

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

  • یک برنامه سبک پیام رسانی اولیه بسازید
  • ساخت یک مدل یادگیری ماشینی برای کامنت‌های اسپم
  • برنامه خود را برای استفاده از یک مدل یادگیری ماشینی فیلترینگ اسپم به‌روزرسانی کنید

آنچه یاد خواهید گرفت

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

آنچه نیاز دارید

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

۲. بهبود طبقه‌بندی متن

شما می‌توانید کد مربوط به این کار را با کپی کردن این مخزن و بارگذاری برنامه از TextClassificationStep2 دریافت کنید. می‌توانید این کد را در مسیر TextClassificationOnMobile->Android پیدا کنید.

کد نهایی نیز با عنوان TextClassificationStep3 در دسترس شماست.

اگر برنامه پیام‌رسانی که ساخته‌اید را باز کنید و این پیام را امتحان کنید، امتیاز هرزنامه بسیار پایینی می‌دهد:

f111e21903d6fd1f.png

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

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

c96613a0a4d1fef0.png

۳. فایل CSV خود را ویرایش کنید

برای آموزش مدل اصلی، یک مجموعه داده به صورت CSV ( lmblog_comments.csv ) ایجاد شد که شامل تقریباً هزار نظر با برچسب‌های هرزنامه یا غیر هرزنامه است. (اگر می‌خواهید CSV را بررسی کنید، آن را در هر ویرایشگر متنی باز کنید.)

ساختار CSV به این صورت است که ردیف اول ستون‌ها را توصیف می‌کند - در اینجا آنها با برچسب‌های commenttext و spam مشخص شده‌اند.

هر ردیف بعدی از این قالب پیروی می‌کند:

64c0128548e1d082.png

برچسب سمت راست برای هرزنامه درست (true) و برای غیر هرزنامه نادرست (false) است. در این مورد، خط ۳ هرزنامه در نظر گرفته می‌شود.

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

online trading can be highly highly effective,true
online trading can be highly effective,true
online trading now,true
online trading here,true
online trading for the win,true

وقتی کارتان تمام شد، فایل را با نام جدید (مثلاً lmblog_comments.csv ) ذخیره کنید، و می‌توانید از آن برای آموزش یک مدل جدید استفاده کنید.

برای ادامه‌ی این آزمایشگاه کد، از مثال ارائه شده، ویرایش شده و میزبانی شده در فضای ابری گوگل به همراه به‌روزرسانی‌های معاملات آنلاین استفاده خواهید کرد. اگر می‌خواهید از مجموعه داده‌های خودتان استفاده کنید، می‌توانید URL را در کد تغییر دهید!

۴. مدل را با داده‌های جدید دوباره آموزش دهید

برای آموزش مجدد مدل، می‌توانید به سادگی از کد قبلی ( SpamCommentsModelMaker.ipynb ) دوباره استفاده کنید، اما آن را به مجموعه داده CSV جدید که lmblog_comments_extras.csv نام دارد، ارجاع دهید. اگر دفترچه کامل را با محتوای به‌روز شده می‌خواهید، می‌توانید آن را به صورت SpamCommentsUpdateModelMaker.ipynb.

اگر به Google Colab دسترسی دارید، می‌توانید آن را مستقیماً از اینجا اجرا کنید، در غیر این صورت کد را از مخزن دریافت کرده و آن را در محیط نوت‌بوک مورد نظر خود اجرا کنید.

کد به‌روزرسانی‌شده اینجاست:

training_data = tf.keras.utils.get_file(fname='comments-spam-extras.csv',   
          origin='https://storage.googleapis.com/laurencemoroney-blog.appspot.com/
                  lmblog_comments_extras.csv', 
          extract=False)

وقتی آموزش می‌دهید، باید ببینید که مدل همچنان با سطح بالایی از دقت آموزش خواهد دید:

۸۸۸۶۰۳۳d1f8161c.png

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

۵. اپلیکیشن اندروید خود را به‌روزرسانی کنید

  1. برنامه را در اندروید استودیو باز کنید و مطمئن شوید که اندروید در بالای پنجره‌ی پروژه انتخاب شده است.
  2. فایل assets خود را که شامل برچسب‌ها، مدل و واژگان نسخه قدیمی فایل مدل است، پیدا کنید.

۹۱۱۱۶۵۲۴e۹۰۱۶ed۴.png

  1. روی پوشه assets کلیک راست کنید.
  2. در منو، گزینه‌ای را انتخاب کنید که پوشه را با استفاده از فایل منیجر سیستم عامل شما باز کند. (در مک، همانطور که نشان داده شده است، در Finder نمایش دهید . در ویندوز، Show in Explorer و در لینوکس، Open in Files یا گزینه مشابه آن خواهد بود.)

25f63f9629657e85.png

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

نیازی نیست هیچ تغییری در کد برنامه خود ایجاد کنید. آن را اجرا کنید و یک تست انجام دهید، و نتایجی مانند موارد بالا را خواهید دید، که در آن مدل برای تشخیص سناریوی متنی "معاملات آنلاین" بهبود یافته است.

نسخه نهایی کد با نام TextClassificationStep3 در مخزن موجود است.

۶. اپلیکیشن iOS خود را به‌روزرسانی کنید

شما می‌توانید کد مربوط به این کار را با کپی کردن این مخزن و بارگذاری برنامه از TextClassificationStep2 دریافت کنید. می‌توانید این کد را در مسیر TextClassificationOnMobile->Android پیدا کنید.

کد نهایی نیز با عنوان TextClassificationStep3 در دسترس شماست.

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

553b845565b5b822.png

به‌روزرسانی برنامه برای استفاده از مدل جدیدتان واقعاً ساده است. ساده‌ترین راه این است که به فایل اکسپلورر خود بروید، نسخه‌های جدید model.tflite ، vocab و labels.txt را دریافت کنید و آنها را در دایرکتوری پروژه خود کپی کنید.

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

9031ec260b1857a3.png

۷. تبریک

همین! با آموزش مجدد مدل با داده‌های جدید و افزودن آن به برنامه‌های اندروید و iOS خود، توانستید عملکرد آنها را بدون نوشتن هیچ کد جدیدی به‌روزرسانی کنید!

مراحل بعدی

این مدل فقط یک مدل آزمایشی است که فقط روی ۱۰۰۰ داده آموزش دیده است.

همانطور که پردازش زبان طبیعی را بررسی می‌کنید، ممکن است بخواهید با مجموعه داده‌های بزرگتری کار کنید. همچنین می‌توانید یک خط لوله آموزش مداوم راه‌اندازی کنید، بنابراین وقتی داده‌های جدید وارد می‌شوند و به عنوان هرزنامه علامت‌گذاری می‌شوند، می‌توانند به طور خودکار یک مدل را در backend دوباره آموزش دهند و سپس آن مدل را با استفاده از Firebase Model Hosting مستقر کنند.

کاربران شما به طور یکپارچه یک مدل به‌روزرسانی‌شده را دریافت می‌کنند بدون اینکه نیازی به کپی و پیست کردن آن به عنوان یک دارایی، کامپایل مجدد و توزیع مجدد آن داشته باشید. همچنین می‌توانید، به عنوان مثال، از Firebase Remote Config برای مدیریت مقدار آستانه ارسال هرزنامه، به جای 0.8 فعلی، استفاده کنید.

احتمالات خیلی زیادی وجود دارد، و ما این موارد را در آزمایشگاه‌های کد آینده در این دوره بررسی خواهیم کرد!