1. قبل از شروع
در این لبه کد، میآموزید که چگونه مدل طبقهبندی متن را بهروزرسانی کنید، که از مجموعه دادههای نظرات هرزنامه اصلی وبلاگ ساخته شده است، اما با نظرات خودتان بهبود یافته است، بنابراین میتوانید مدلی داشته باشید که با دادههای شما کار میکند.
پیش نیازها
این کد لبه بخشی از مسیر دستهبندی متن موبایل شروع به کار کنید. کدهای این مسیر متوالی هستند. برنامه و مدلی که روی آن کار میکنید باید قبلا ساخته شده باشند، در حالی که شما مسیر اول را دنبال میکردید. اگر هنوز فعالیت های قبلی را انجام نداده اید، لطفاً این کار را متوقف کرده و همین الان انجام دهید:
- یک برنامه سبک پیام رسانی اولیه بسازید
- یک مدل یادگیری ماشینی اسپم نظرات بسازید
- برای استفاده از مدل یادگیری ماشینی فیلتر کننده هرزنامه، برنامه خود را به روز کنید
چیزی که یاد خواهید گرفت
- نحوه بهروزرسانی مدل طبقهبندی متنی که در مسیر شروع با طبقهبندی متن تلفن همراه ساختهاید
- چگونه مدل خود را سفارشی کنید تا شایع ترین هرزنامه ها را در برنامه شما مسدود کند
آنچه شما نیاز دارید
- برنامه پیام رسانی و مدل فیلتر هرزنامه که در فعالیت های قبلی مشاهده و ساخته اید.
2. طبقه بندی متن را تقویت کنید
میتوانید کد این کار را با شبیهسازی این مخزن و بارگیری برنامه از TextClassificationStep2
دریافت کنید. این را می توانید در مسیر TextClassificationOnMobile->Android
پیدا کنید.
کد تمام شده نیز به عنوان TextClassificationStep3
برای شما در دسترس است.
اگر برنامه پیامرسانی را که ساختهاید باز کنید و این پیام را امتحان کنید، امتیاز اسپم بسیار پایینی به شما میدهد:
املای غلط مانند این یک روش رایج برای جلوگیری از فیلترهای هرزنامه است. و در حالی که پیام بی ضرر است، ارسال کنندگان هرزنامه اغلب پیوندی را در شناسه کاربر اضافه می کنند (به جای خود پیام، جایی که داشتن یک پیوند ممکن است باعث ایجاد فیلترها شود).
در این آزمایشگاه، نحوه به روز رسانی مدل را با داده های جدید خواهید دید. وقتی کارتان تمام شد، اجرای با همان جمله نتیجه زیر را نشان می دهد، جایی که این پیام به عنوان هرزنامه شناسایی می شود!
3. فایل CSV خود را ویرایش کنید
برای آموزش مدل اصلی، یک مجموعه داده به عنوان یک CSV ( lmblog_comments.csv
) ایجاد شد که حاوی تقریباً هزار نظر با برچسب هرزنامه یا غیر هرزنامه است. (اگر می خواهید آن را بررسی کنید، CSV را در هر ویرایشگر متنی باز کنید.)
ساختار CSV به این صورت است که ردیف اول ستونها را توصیف میکند - در اینجا آنها برچسب commenttext
و spam
هستند.
هر ردیف بعدی از این فرمت پیروی می کند:
برچسب سمت راست برای هرزنامه درست است و برای اسپم نادرست است. در این مورد خط 3 به عنوان هرزنامه در نظر گرفته می شود.
برای افزودن نظرات خود، به عنوان مثال، اگر افراد زیادی دارید که سایت شما را با پیام هایی در مورد تجارت آنلاین اسپم می کنند، تنها کاری که باید انجام دهید این است که نمونه هایی از نظرات اسپم را در پایین سایت خود اضافه کنید. به عنوان مثال:
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
)، و می توانید از آن برای آموزش یک مدل جدید استفاده کنید.
برای بقیه این نرم افزار کد، از مثال ارائه شده، ویرایش و میزبانی شده در Google Cloud Storage با به روز رسانی های معاملات آنلاین استفاده خواهید کرد. اگر می خواهید از مجموعه داده های خود استفاده کنید، می توانید URL موجود در کد را تغییر دهید!
4. مدل را با داده های جدید دوباره آموزش دهید
برای آموزش مجدد مدل، میتوانید به سادگی از کد قبلی استفاده کنید ( 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)
وقتی تمرین می کنید، باید ببینید که مدل همچنان تا سطح بالایی از دقت تمرین می کند:
برای دانلود فایل های مدل ، vocab و label ها به دفترچه یادداشت بروید. در مرحله بعدی آنها را در اندروید ادغام خواهید کرد.
5. برنامه اندروید خود را به روز کنید
- برنامه را در Android Studio باز کنید و مطمئن شوید که Android در بالای کاوشگر پروژه انتخاب شده است.
- فایل
assets
خود را که حاوی برچسبها، مدل و واژگان نسخه قدیمی فایل مدل است، پیدا کنید.
- روی پوشه assets کلیک راست کنید.
- در منو، گزینه باز کردن پوشه با فایل منیجر سیستم عامل خود را انتخاب کنید. ( همانطور که نشان داده شده است در Finder در Mac آشکار شود . در اکسپلورر در ویندوز نمایش داده می شود و در لینوکس باز در فایل ها یا موارد مشابه.)
- با این کار دایرکتوری حاوی مدل، vocab و برچسب ها در مدیر فایل سیستم عامل شما باز می شود. موارد جدیدی را که در مرحله قبل ایجاد کردید روی آنها کپی کنید.
شما نیازی به ایجاد هیچ تغییری در کد موجود در برنامه خود ندارید. آن را اجرا کنید و آن را آزمایش کنید، و نتایجی مانند موارد بالا را مشاهده خواهید کرد، جایی که مدل برای تشخیص سناریوی متنی "تجارت آنلاین" بهبود یافته است.
نسخه نهایی کد در مخزن به عنوان TextClassificationStep3 موجود است.
6. اپلیکیشن iOS خود را به روز کنید
میتوانید کد این کار را با شبیهسازی این مخزن و بارگیری برنامه از TextClassificationStep2
دریافت کنید. این را می توانید در مسیر TextClassificationOnMobile->Android
پیدا کنید.
کد تمام شده نیز به عنوان TextClassificationStep3
برای شما در دسترس است.
اگر از طریق کدهای قبلی کار کرده باشید، یک نسخه iOS از TextClassificationStep2 خواهید داشت که با مدل پایه کار می کند. اگر می خواهید از نسخه موجود ما شروع کنید، فقط آن را از مخزن بگیرید. با اولین مدلی که در مورد دادههای هرزنامه نظرات آموزش داده شده کار میکند، و ممکن است نتایجی مانند این ببینید:
به روز رسانی برنامه برای استفاده از مدل جدید شما بسیار ساده است. ساده ترین راه این است که فقط به کاوشگر فایل خود بروید، نسخه های جدید model.tflite
، vocab
و labels.txt
را دریافت کنید و آنها را در فهرست پروژه خود کپی کنید.
پس از انجام این کار، برنامه شما با مدل جدید کار می کند و می توانید آن را امتحان کنید. در اینجا یک مثال از همان جمله است، اما با استفاده از مدل جدید:
7. تبریک می گویم
همین! با آموزش مجدد مدل با دادههای جدید و افزودن آن به برنامههای اندروید و iOS، میتوانید عملکرد آنها را بدون نوشتن کد جدیدی بهروزرسانی کنید!
مراحل بعدی
این مدل فقط یک اسباب بازی است که فقط بر روی 1000 مورد از داده ها آموزش داده شده است.
همانطور که پردازش زبان طبیعی را بررسی می کنید، ممکن است بخواهید با مجموعه داده های بزرگتر کار کنید. همچنین میتوانید یک خط لوله آموزشی پیوسته راهاندازی کنید، بنابراین وقتی دادههای جدید وارد میشوند و بهعنوان هرزنامه علامتگذاری میشوند، میتوانند به طور خودکار یک مدل را در یک backend دوباره آموزش دهند و سپس آن مدل را با استفاده از Firebase Model Hosting مستقر کنند.
کاربران شما بدون نیاز به کپی و چسباندن آن به عنوان یک دارایی، کامپایل مجدد و توزیع مجدد یک مدل بهروزرسانی شده را یکپارچه دریافت میکنند. همچنین میتوانید بهعنوان مثال، از Firebase Remote Config برای مدیریت مقدار آستانه برای ارسال هرزنامه، به جای 0.8 که اکنون دارید، استفاده کنید.
امکانات بسیار زیادی وجود دارد، و ما آنها را در کدهای آتی در این دوره بررسی خواهیم کرد!