একটি কাস্টম পাঠ্য শ্রেণিবিন্যাস মডেল তৈরি করুন এবং এটির সাথে আপনার অ্যাপগুলি আপডেট করুন৷

১. শুরু করার আগে

এই কোডল্যাবে আপনি শিখবেন কীভাবে মূল ব্লগ স্প্যাম কমেন্ট ডেটাসেট থেকে তৈরি, কিন্তু আপনার নিজের কমেন্ট দিয়ে সমৃদ্ধ টেক্সট ক্লাসিফিকেশন মডেলটি আপডেট করতে হয়, যাতে আপনি এমন একটি মডেল পেতে পারেন যা আপনার ডেটার সাথে কাজ করে।

পূর্বশর্ত

এই কোডল্যাবটি 'Get started with mobile text classification' পাথওয়ের একটি অংশ। এই পাথওয়ের কোডল্যাবগুলো ক্রমানুসারে সাজানো। আপনি যে অ্যাপ এবং মডেল নিয়ে কাজ করবেন, তা প্রথম পাথওয়ে অনুসরণ করার সময় আগেই তৈরি করা থাকা উচিত। আপনি যদি এখনও পূর্ববর্তী কাজগুলো সম্পন্ন না করে থাকেন, তবে অনুগ্রহ করে থামুন এবং এখনই তা করুন।

  • একটি সাধারণ মেসেজিং স্টাইলের অ্যাপ তৈরি করুন
  • একটি মন্তব্য স্প্যাম মেশিন লার্নিং মডেল তৈরি করুন
  • স্প্যাম ফিল্টারিং মেশিন লার্নিং মডেল ব্যবহার করার জন্য আপনার অ্যাপটি আপডেট করুন।

আপনি যা শিখবেন

  • 'মোবাইল টেক্সট ক্লাসিফিকেশন দিয়ে শুরু করুন' পাথওয়েতে আপনার তৈরি করা টেক্সট ক্লাসিফিকেশন মডেলটি কীভাবে আপডেট করবেন
  • আপনার মডেলটিকে কীভাবে কাস্টমাইজ করবেন যাতে এটি আপনার অ্যাপের সবচেয়ে প্রচলিত স্প্যাম ব্লক করতে পারে।

আপনার যা যা লাগবে

  • পূর্ববর্তী কার্যক্রমগুলোতে আপনি যে মেসেজিং অ্যাপ এবং স্প্যাম ফিল্টারিং মডেলটি পর্যবেক্ষণ ও তৈরি করেছেন।

২. পাঠ্য শ্রেণিবিন্যাস উন্নত করুন

এই রিপোটি ক্লোন করে এবং TextClassificationStep2 থেকে অ্যাপটি লোড করে আপনি এর কোডটি পেতে পারেন। এটি আপনি TextClassificationOnMobile->Android পাথে খুঁজে পাবেন।

সম্পূর্ণ কোডটি TextClassificationStep3 নামেও আপনার জন্য উপলব্ধ আছে।

আপনি আপনার তৈরি করা মেসেজিং অ্যাপটি খুলে এই মেসেজটি পাঠালে, এটির স্প্যাম স্কোর খুব কম দেখাবে:

f111e21903d6fd1f.png

এই ধরনের বানান ভুল স্প্যাম ফিল্টার এড়ানোর একটি সাধারণ উপায়। আর বার্তাটি নিরীহ হলেও, স্প্যামাররা প্রায়শই মূল বার্তার পরিবর্তে ইউজার আইডিতে একটি লিঙ্ক যোগ করে দেয়, কারণ মূল বার্তায় লিঙ্ক থাকলে তা ফিল্টার চালু করে দিতে পারে।

এই ল্যাবে, আপনি দেখবেন কীভাবে নতুন ডেটা দিয়ে মডেলটি আপডেট করতে হয়। আপনার কাজ শেষ হলে, একই বাক্যটি দিয়ে রান করলে নিচের ফলাফলটি পাওয়া যাবে, যেখানে এই বার্তাটিকে স্প্যাম হিসেবে চিহ্নিত করা হয়েছে!

c96613a0a4d1fef0.png

৩. আপনার CSV ফাইলটি সম্পাদনা করুন

মূল মডেলটিকে প্রশিক্ষণ দেওয়ার জন্য, স্প্যাম বা নন-স্প্যাম হিসেবে চিহ্নিত প্রায় এক হাজার মন্তব্য সম্বলিত একটি CSV ( lmblog_comments.csv ) ডেটাসেট তৈরি করা হয়েছিল। (আপনি যদি এটি পরীক্ষা করতে চান, তবে CSV ফাইলটি যেকোনো টেক্সট এডিটরে খুলুন।)

CSV ফাইলটির গঠন এমন যে, এর প্রথম সারিতে কলামগুলোর বর্ণনা থাকে – এখানে সেগুলোর নাম দেওয়া হয়েছে commenttext এবং spam

পরবর্তী প্রতিটি সারি এই বিন্যাস অনুসরণ করে:

64c0128548e1d082.png

ডানদিকের লেবেলটি স্প্যামের জন্য 'ট্রু' এবং স্প্যাম না হলে 'ফলস'। এক্ষেত্রে ৩ নম্বর লাইনটিকে স্প্যাম হিসেবে গণ্য করা হচ্ছে।

আপনার নিজের মন্তব্য যোগ করার জন্য, উদাহরণস্বরূপ, যদি অনেক লোক অনলাইন ট্রেডিং সম্পর্কিত বার্তা দিয়ে আপনার সাইটে স্প্যামিং করে, তাহলে আপনাকে শুধু আপনার সাইটের নীচে স্প্যাম মন্তব্যের উদাহরণ যোগ করতে হবে। উদাহরণস্বরূপ:

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.

আপনার যদি গুগল কোলাব ব্যবহারের সুযোগ থাকে, তবে আপনি সরাসরি এখান থেকে সেটি চালু করতে পারেন, অন্যথায় রিপো থেকে কোডটি নিয়ে আপনার পছন্দের নোটবুক পরিবেশে চালান।

এই হলো আপডেট করা কোড:

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)

যখন আপনি প্রশিক্ষণ দেবেন, তখন আপনি দেখতে পাবেন যে মডেলটি উচ্চ মাত্রার নির্ভুলতা বজায় রেখেই প্রশিক্ষিত হবে:

8886033d1f8161c.png

নোটবুকটি থেকে model , vocab, এবং labels ফাইলগুলো ডাউনলোড করুন। পরবর্তী ধাপে আপনি এগুলো অ্যান্ড্রয়েডে যুক্ত করবেন।

৫. আপনার অ্যান্ড্রয়েড অ্যাপ আপডেট করুন

  1. অ্যান্ড্রয়েড স্টুডিওতে অ্যাপটি খুলুন এবং নিশ্চিত করুন যে প্রজেক্ট এক্সপ্লোরারের শীর্ষে অ্যান্ড্রয়েড নির্বাচিত আছে।
  2. মডেল ফাইলের পুরোনো সংস্করণ থেকে লেবেল, মডেল এবং শব্দভান্ডার সম্বলিত আপনার assets ফাইলটি খুঁজুন।

91116524e9016ed4.png

  1. অ্যাসেটস ফোল্ডারটিতে ডান ক্লিক করুন।
  2. মেনু থেকে আপনার অপারেটিং সিস্টেমের ফাইল ম্যানেজার দিয়ে ফোল্ডারটি খোলার অপশনটি বেছে নিন। (ম্যাকে, দেখানো ছবির মতো 'Reveal in Finder' অপশনটি বেছে নিন। উইন্ডোজে এটি 'Show in Explorer' এবং লিনাক্সে 'Open in Files' বা এই ধরনের কোনো অপশন হিসেবে থাকবে।)

25f63f9629657e85.png

  1. এটি আপনার অপারেটিং সিস্টেমের ফাইল ম্যানেজারে মডেল, ভোকাব এবং লেবেল ধারণকারী ডিরেক্টরিটি খোলে। পূর্ববর্তী ধাপে তৈরি করা নতুন ফাইলগুলো এগুলোর উপর কপি করুন।

আপনার অ্যাপের কোডে কোনো পরিবর্তন করার প্রয়োজন নেই। এটি রান করে পরীক্ষা করে দেখুন, এবং আপনি উপরেরগুলোর মতো ফলাফল দেখতে পাবেন, যেখানে মডেলটি 'অনলাইন ট্রেডিং' টেক্সট সিনারিওটি ​​শনাক্ত করার ক্ষেত্রে উন্নত হয়েছে।

কোডটির একটি সম্পূর্ণ সংস্করণ রিপোটিতে TextClassificationStep3 নামে পাওয়া যাবে।

৬. আপনার iOS অ্যাপ আপডেট করুন

এই রিপোটি ক্লোন করে এবং TextClassificationStep2 থেকে অ্যাপটি লোড করে আপনি এর কোডটি পেতে পারেন। এটি আপনি TextClassificationOnMobile->Android পাথে খুঁজে পাবেন।

সম্পূর্ণ কোডটি TextClassificationStep3 নামেও আপনার জন্য উপলব্ধ আছে।

আপনি যদি আগের কোডল্যাবটি করে থাকেন, তাহলে আপনার কাছে TextClassificationStep2-এর একটি iOS সংস্করণ থাকবে যা বেস মডেলের সাথে কাজ করে। আপনি যদি আমাদের বিদ্যমান সংস্করণটি থেকে শুরু করতে চান, তবে রিপো থেকে সেটিই নিন। এটি কমেন্ট স্প্যাম ডেটার উপর প্রশিক্ষিত প্রথম মডেলটির সাথে কাজ করবে এবং আপনি এই ধরনের ফলাফল দেখতে পারেন:

553b845565b5b822.png

আপনার নতুন মডেল ব্যবহার করার জন্য অ্যাপটি আপডেট করা খুবই সহজ। সবচেয়ে সহজ উপায় হলো, আপনার ফাইল এক্সপ্লোরারে গিয়ে model.tflite , vocab , এবং labels.txt এর নতুন সংস্করণগুলো খুঁজে বের করে সেগুলোকে আপনার প্রজেক্ট ডিরেক্টরিতে কপি করা।

একবার এটি করে ফেললে, আপনার অ্যাপটি নতুন মডেলের সাথে কাজ করবে এবং আপনি তা পরীক্ষা করে দেখতে পারবেন। এখানে একই বাক্যের একটি উদাহরণ দেওয়া হলো, তবে নতুন মডেলটি ব্যবহার করে:

9031ec260b1857a3.png

৭. অভিনন্দন

ব্যাস! নতুন ডেটা দিয়ে মডেলটিকে পুনরায় প্রশিক্ষণ দিয়ে এবং আপনার অ্যান্ড্রয়েড ও আইওএস উভয় অ্যাপে এটি যুক্ত করার মাধ্যমে, আপনি কোনো নতুন কোড না লিখেই সেগুলোর কার্যকারিতা আপডেট করতে পেরেছেন!

পরবর্তী পদক্ষেপ

এই মডেলটি কেবল একটি খেলনা মডেল, যা মাত্র ১০০০টি ডেটার উপর প্রশিক্ষণ দেওয়া হয়েছে।

আপনি যখন ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং নিয়ে কাজ করবেন, তখন হয়তো আরও বড় ডেটাসেট নিয়ে কাজ করতে চাইতে পারেন। আপনি একটি নিরবচ্ছিন্ন ট্রেনিং পাইপলাইনও তৈরি করতে পারেন, যাতে নতুন ডেটা এলে এবং সেটিকে স্প্যাম হিসেবে চিহ্নিত করা হলে, এটি স্বয়ংক্রিয়ভাবে ব্যাকএন্ডে একটি মডেলকে পুনরায় প্রশিক্ষণ দিতে পারে এবং তারপর ফায়ারবেস মডেল হোস্টিং ব্যবহার করে সেই মডেলটি ডেপ্লয় করতে পারে।

আপনার ব্যবহারকারীরা কোনো রকম দ্বিধা ছাড়াই একটি আপডেটেড মডেল পেয়ে যান, যার জন্য আপনাকে এটিকে অ্যাসেট হিসেবে কপি-পেস্ট করে, রিকম্পাইল এবং পুনঃবিতরণ করার প্রয়োজন হয় না। এছাড়াও, উদাহরণস্বরূপ, আপনি এখনকার ০.৮-এর পরিবর্তে স্প্যাম পাঠানোর থ্রেশহোল্ড ভ্যালু ম্যানেজ করার জন্য ফায়ারবেস রিমোট কনফিগ ব্যবহার করতে পারেন।

এখানে অনেক সম্ভাবনা রয়েছে, এবং আমরা এই কোর্সের ভবিষ্যৎ কোডল্যাবগুলোতে সেগুলো অন্বেষণ করব!