TensorFlow.js: এজ কেসগুলি পরিচালনা করতে একটি মন্তব্য স্প্যাম সনাক্তকরণ মডেলকে পুনরায় প্রশিক্ষণ দিন

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

এই কোডল্যাবটি TensorFlow.js ব্যবহার করে মন্তব্য স্প্যাম সনাক্তকরণের জন্য এই সিরিজের পূর্ববর্তী কোডল্যাবের চূড়ান্ত ফলাফলের উপর ভিত্তি করে তৈরি করা হয়েছে।

শেষ কোডল্যাবে আপনি একটি কাল্পনিক ভিডিও ব্লগের জন্য একটি সম্পূর্ণ কার্যকরী ওয়েবপৃষ্ঠা তৈরি করেছিলেন। ব্রাউজারে TensorFlow.js দ্বারা চালিত একটি পূর্ব-প্রশিক্ষিত মন্তব্য স্প্যাম সনাক্তকরণ মডেল ব্যবহার করে, আপনি সার্ভারে স্টোরেজের জন্য বা অন্যান্য সংযুক্ত ক্লায়েন্টদের কাছে পাঠানোর আগে স্প্যামের জন্য মন্তব্যগুলি ফিল্টার করতে সক্ষম হয়েছিলেন।

সেই কোডল্যাবের শেষ ফলাফল নীচে দেখানো হয়েছে:

অনুসরণ

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

এই কোডল্যাবটি প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (কম্পিউটার দিয়ে মানুষের ভাষা বোঝার শিল্প) ব্যবহারের উপর দৃষ্টি নিবদ্ধ করে এবং আপনাকে দেখায় যে কীভাবে আপনার তৈরি করা একটি বিদ্যমান ওয়েব অ্যাপ পরিবর্তন করতে হয় ( কোডল্যাবগুলিকে ক্রমানুসারে নেওয়া আপনার জন্য অত্যন্ত পরামর্শ দেওয়া হচ্ছে), যাতে মন্তব্য স্প্যামের আসল সমস্যাটি মোকাবেলা করা যায়, যা অনেক ওয়েব ডেভেলপার নিশ্চিতভাবেই সম্মুখীন হবেন যখন তারা আজকের ক্রমবর্ধমান সংখ্যক জনপ্রিয় ওয়েব অ্যাপগুলির মধ্যে একটিতে কাজ করছেন।

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

পূর্বশর্ত

  • এই সিরিজের প্রথম কোডল্যাব সম্পন্ন করেছি।
  • HTML, CSS এবং JavaScript সহ ওয়েব প্রযুক্তির প্রাথমিক জ্ঞান।

তুমি কী তৈরি করবে

আপনি পূর্বে নির্মিত ওয়েবসাইটটিকে একটি কাল্পনিক ভিডিও ব্লগের জন্য পুনরায় ব্যবহার করবেন যেখানে একটি রিয়েল টাইম মন্তব্য বিভাগ থাকবে এবং TensorFlow.js ব্যবহার করে স্প্যাম সনাক্তকরণ মডেলের একটি কাস্টম প্রশিক্ষিত সংস্করণ লোড করার জন্য এটি আপগ্রেড করবেন, যাতে এটি পূর্বে ব্যর্থ হওয়া ক্ষেত্রে আরও ভাল পারফর্ম করে। অবশ্যই, ওয়েব ডেভেলপার এবং ইঞ্জিনিয়ার হিসাবে আপনি আপনার দৈনন্দিন ভূমিকায় যে কোনও ওয়েবসাইটে পুনঃব্যবহারের জন্য এই কাল্পনিক UX পরিবর্তন করতে পারেন এবং যেকোনো ক্লায়েন্ট ব্যবহারের ক্ষেত্রে উপযুক্ত সমাধানটি অভিযোজিত করতে পারেন - হতে পারে এটি একটি ব্লগ, ফোরাম, অথবা কোনও ধরণের CMS, যেমন Drupal।

চলো হ্যাকিং শুরু করি...

তুমি কি শিখবে

তুমি করবে:

  • পূর্ব-প্রশিক্ষিত মডেলটি যে প্রান্তের ক্ষেত্রে ব্যর্থ হয়েছিল তা চিহ্নিত করুন
  • মডেল মেকার ব্যবহার করে তৈরি করা স্প্যাম শ্রেণীবিভাগ মডেলটিকে পুনরায় প্রশিক্ষণ দিন।
  • ব্রাউজারে ব্যবহারের জন্য এই পাইথন ভিত্তিক মডেলটি TensorFlow.js ফর্ম্যাটে রপ্তানি করুন।
  • নতুন প্রশিক্ষিত মডেলের সাথে হোস্ট করা মডেল এবং এর অভিধান আপডেট করুন এবং ফলাফল পরীক্ষা করুন।

এই ল্যাবের জন্য HTML5, CSS এবং JavaScript এর সাথে পরিচিতি ধরে নেওয়া হচ্ছে। মডেল মেকার ব্যবহার করে তৈরি করা মডেলটিকে পুনরায় প্রশিক্ষণ দেওয়ার জন্য আপনাকে একটি "co lab" নোটবুকের মাধ্যমে কিছু Python কোডও চালাতে হবে, তবে এটি করার জন্য Python এর সাথে পরিচিতির প্রয়োজন নেই।

২. কোডের জন্য প্রস্তুত হোন

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

গ্লিচে, রিমিক্স দিস বোতামে ক্লিক করে এটিকে ফোর্ক করুন এবং সম্পাদনা করার জন্য নতুন ফাইল তৈরি করুন।

৩. পূর্ববর্তী সমাধানে প্রান্তের কেসগুলি আবিষ্কার করুন

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

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

সমস্যা ছাড়াই পোস্ট করা বৈধ মন্তব্য (প্রকৃত নেতিবাচক):

  1. "বাহ, ভিডিওটা আমার খুব ভালো লেগেছে, অসাধারণ কাজ।" স্প্যামের সম্ভাবনা: ৪৭.৯১৮৫৪%
  2. "এই ডেমোগুলো একেবারেই ভালো লেগেছে! আরও কিছু জানার আছে?" স্প্যামের সম্ভাবনা: ৪৭.১৫৮৯৮%
  3. "আরও জানতে আমি কোন ওয়েবসাইটে যেতে পারি?" স্প্যামের সম্ভাবনা: ১৫.৩২৪৯৫%

এটা দারুন, উপরের সকলের সম্ভাবনা বেশ কম এবং পদক্ষেপ নেওয়ার আগে ডিফল্ট SPAM_THRESHOLD এর ন্যূনতম ৭৫% সম্ভাব্যতা সফলভাবে অতিক্রম করতে সক্ষম (পূর্ববর্তী কোডল্যাবের script.js কোডে সংজ্ঞায়িত)।

এবার আসুন আরও কিছু তীক্ষ্ণ মন্তব্য লেখার চেষ্টা করি যেগুলো স্প্যাম হিসেবে চিহ্নিত হয় যদিও সেগুলো স্প্যাম নয়...

বৈধ মন্তব্যগুলিকে স্প্যাম হিসেবে চিহ্নিত করা হয়েছে (মিথ্যা ইতিবাচক):

  1. "কেউ কি তার পরা মাস্কের ওয়েবসাইটের লিঙ্ক দিতে পারবেন?" স্প্যামের সম্ভাবনা: ৯৮.৪৬৪৬৬%
  2. "আমি কি স্পটিফাই থেকে এই গানটি কিনতে পারি? কেউ দয়া করে আমাকে জানান!" স্প্যামের সম্ভাবনা: ৯৪.৪০৯৫৩%
  3. "TensorFlow.js ডাউনলোড করার পদ্ধতি সম্পর্কে বিস্তারিত জানার জন্য কেউ কি আমার সাথে যোগাযোগ করতে পারেন?" স্প্যামের সম্ভাবনা: 83.20084%

ওহ না! মনে হচ্ছে এই বৈধ মন্তব্যগুলিকে স্প্যাম হিসেবে চিহ্নিত করা হচ্ছে, যখন এগুলো অনুমোদিত হওয়া উচিত ছিল। আপনি কীভাবে এটি ঠিক করবেন?

একটি সহজ বিকল্প হল SPAM_THRESHOLD কে ৯৮.৫% এর বেশি আত্মবিশ্বাসী করে তোলা। সেক্ষেত্রে এই ভুল শ্রেণীবদ্ধ মন্তব্যগুলি পোস্ট করা হবে। এই বিষয়টি মাথায় রেখে, আসুন নীচের অন্যান্য সম্ভাব্য ফলাফলগুলি নিয়ে এগিয়ে যাই...

স্প্যাম মন্তব্যগুলিকে স্প্যাম হিসেবে চিহ্নিত করা হয়েছে (প্রকৃত ইতিবাচক দিক):

  1. "এটা দারুন, কিন্তু আমার ওয়েবসাইটের ডাউনলোড লিঙ্কগুলো দেখে নাও, যেগুলো আরও ভালো!" স্প্যামের সম্ভাবনা: ৯৯.৭৭৮৭৩%
  2. "আমি কিছু লোককে চিনি যারা তোমাকে কিছু ওষুধ এনে দিতে পারে, বিস্তারিত জানার জন্য আমার pr0file দেখুন" স্প্যামের সম্ভাবনা: 98.46955%
  3. "আরও ভালো এবং অসাধারণ ভিডিও ডাউনলোড করতে আমার প্রোফাইল দেখুন! http://example.com" স্প্যামের সম্ভাবনা: ৯৬.২৬৩৮৩%

ঠিক আছে, তাহলে আমাদের মূল ৭৫% থ্রেশহোল্ডের সাথে এটি প্রত্যাশা অনুযায়ী কাজ করছে, কিন্তু যেহেতু পূর্ববর্তী ধাপে আপনি SPAM_THRESHOLD কে ৯৮.৫% এর বেশি আত্মবিশ্বাসী করে তুলেছেন, এর অর্থ হল এখানে দুটি উদাহরণ পাস করা হবে, তাই সম্ভবত থ্রেশহোল্ডটি খুব বেশি। সম্ভবত ৯৬% ভাল? কিন্তু যদি আপনি এটি করেন, তাহলে পূর্ববর্তী বিভাগের একটি মন্তব্য (মিথ্যা ইতিবাচক) স্প্যাম হিসেবে চিহ্নিত হবে যখন সেগুলি বৈধ ছিল কারণ এটি ৯৮.৪৬৪৬৬% রেটিং ছিল।

এই ক্ষেত্রে, সম্ভবত এই সমস্ত আসল স্প্যাম মন্তব্যগুলি ক্যাপচার করা এবং উপরের ব্যর্থতাগুলির জন্য পুনরায় প্রশিক্ষণ দেওয়া সবচেয়ে ভাল। 96% থ্রেশহোল্ড সেট করে সমস্ত সত্য ধনাত্মক এখনও ক্যাপচার করা হয় এবং আপনি উপরের 2 টি মিথ্যা ধনাত্মক বাদ দেন। শুধুমাত্র একটি সংখ্যা পরিবর্তন করার জন্য খুব খারাপ নয়।

চলুন চালিয়ে যাই...

স্প্যাম মন্তব্য যা পোস্ট করার অনুমতি ছিল (মিথ্যা নেতিবাচক):

  1. "আরও ভালো এবং অসাধারণ ভিডিও ডাউনলোড করতে আমার প্রোফাইল দেখুন!" স্প্যামের সম্ভাবনা: ৭.৫৪৯২৬%
  2. " আমাদের জিম প্রশিক্ষণ ক্লাসে ছাড় পান pr0file দেখুন! " স্প্যামের সম্ভাবনা: ১৭.৪৯৮৪৯%
  3. "ওহ, GOOG এর স্টক এখনই বেড়ে গেছে! অনেক দেরি হওয়ার আগেই চলে আসুন!" স্প্যামের সম্ভাবনা: ২০.৪২৮৯৪%

এই মন্তব্যগুলির জন্য কেবল SPAM_THRESHOLD মানটি আরও পরিবর্তন করে আপনি কিছুই করতে পারবেন না। স্প্যামের জন্য থ্রেশহোল্ড 96% থেকে ~9% এ কমিয়ে আনলে আসল মন্তব্যগুলি স্প্যাম হিসাবে চিহ্নিত হবে - এর মধ্যে একটির রেটিং 58%, যদিও এটি বৈধ। এই ধরণের মন্তব্যগুলি মোকাবেলা করার একমাত্র উপায় হল প্রশিক্ষণ ডেটাতে অন্তর্ভুক্ত এই ধরণের এজ কেসগুলি সহ মডেলটিকে পুনরায় প্রশিক্ষণ দেওয়া যাতে এটি স্প্যাম কী না তা নিয়ে বিশ্ব সম্পর্কে তার দৃষ্টিভঙ্গি সামঞ্জস্য করতে শেখে।

যদিও এখন একমাত্র বিকল্প হল মডেলটিকে পুনরায় প্রশিক্ষণ দেওয়া, আপনি এটিও দেখেছেন যে কীভাবে আপনি স্প্যাম কল করার সিদ্ধান্ত নেওয়ার সময় কর্মক্ষমতা উন্নত করার জন্য থ্রেশহোল্ডকে আরও পরিমার্জন করতে পারেন। একজন মানুষ হিসাবে, 75% বেশ আত্মবিশ্বাসী বলে মনে হচ্ছে, তবে এই মডেলের জন্য আপনাকে উদাহরণ ইনপুটগুলির সাথে আরও কার্যকর হওয়ার জন্য 81.5% এর কাছাকাছি বৃদ্ধি করতে হবে।

বিভিন্ন মডেলে ভালোভাবে কাজ করে এমন কোনও একটি জাদুকরী মান নেই, এবং বাস্তব জগতের ডেটা নিয়ে পরীক্ষা-নিরীক্ষা করার পর, যা ভালোভাবে কাজ করে তার জন্য প্রতি মডেলের ভিত্তিতে এই থ্রেশহোল্ড মান সেট করতে হবে।

কিছু পরিস্থিতিতে এমন হতে পারে যেখানে মিথ্যা পজিটিভ (অথবা নেতিবাচক) থাকলে গুরুতর পরিণতি হতে পারে (যেমন চিকিৎসা শিল্পে) তাই আপনি আপনার থ্রেশহোল্ডকে খুব বেশি করে সামঞ্জস্য করতে পারেন এবং যেগুলি থ্রেশহোল্ড পূরণ করে না তাদের জন্য আরও ম্যানুয়াল পর্যালোচনার অনুরোধ করতে পারেন। একজন ডেভেলপার হিসেবে এটি আপনার পছন্দ এবং এর জন্য কিছু পরীক্ষা-নিরীক্ষার প্রয়োজন।

৪. মন্তব্য স্প্যাম সনাক্তকরণ মডেলটি পুনরায় প্রশিক্ষণ দিন

পূর্ববর্তী অংশে আপনি এমন বেশ কয়েকটি এজ কেস চিহ্নিত করেছেন যা মডেলের জন্য ব্যর্থ হচ্ছে যেখানে একমাত্র বিকল্প ছিল এই পরিস্থিতিগুলির জন্য মডেলটিকে পুনরায় প্রশিক্ষণ দেওয়া। একটি উৎপাদন ব্যবস্থায় আপনি সময়ের সাথে সাথে এগুলি দেখতে পাবেন যখন লোকেরা কোনও মন্তব্যকে ম্যানুয়ালি স্প্যাম হিসাবে চিহ্নিত করে যা অনুমোদিত হয়েছে অথবা ফ্ল্যাগ করা মন্তব্য পর্যালোচনাকারী মডারেটররা বুঝতে পারেন যে কিছু আসলে স্প্যাম নয় এবং পুনরায় প্রশিক্ষণের জন্য এই মন্তব্যগুলিকে চিহ্নিত করতে পারে। ধরে নিচ্ছি যে আপনি এই এজ কেসগুলির জন্য প্রচুর নতুন ডেটা সংগ্রহ করেছেন (সর্বোত্তম ফলাফলের জন্য আপনার যদি এই নতুন বাক্যগুলির কিছু বৈচিত্র্য থাকতে পারে), আমরা এখন আপনাকে সেই এজ কেসগুলিকে মাথায় রেখে মডেলটিকে কীভাবে পুনরায় প্রশিক্ষণ দিতে হয় তা দেখানোর চেষ্টা করব।

আগে থেকে তৈরি মডেলের সংক্ষিপ্তসার

আপনি যে পূর্ব-তৈরি মডেলটি ব্যবহার করেছেন তা হল একটি মডেল যা মডেল মেকারের মাধ্যমে একটি তৃতীয় পক্ষ দ্বারা তৈরি করা হয়েছিল যা কাজ করার জন্য একটি "গড় শব্দ এম্বেডিং" মডেল ব্যবহার করে।

যেহেতু মডেলটি মডেল মেকার দিয়ে তৈরি করা হয়েছে, তাই আপনাকে মডেলটিকে পুনরায় প্রশিক্ষণ দেওয়ার জন্য Python-এ কিছুক্ষণের জন্য স্যুইচ করতে হবে এবং তারপর তৈরি মডেলটি TensorFlow.js ফর্ম্যাটে রপ্তানি করতে হবে যাতে আপনি এটি ব্রাউজারে ব্যবহার করতে পারেন। সৌভাগ্যক্রমে, Model Maker তাদের মডেলগুলি ব্যবহার করা অত্যন্ত সহজ করে তুলেছে, তাই এটি অনুসরণ করা বেশ সহজ হওয়া উচিত এবং আমরা আপনাকে প্রক্রিয়াটি পরিচালনা করব, তাই আপনি যদি আগে কখনও Python ব্যবহার না করে থাকেন তবে চিন্তা করবেন না!

কোলাবস

যেহেতু আপনি এই কোডল্যাবে বিভিন্ন পাইথন ইউটিলিটি ইনস্টল করে একটি লিনাক্স সার্ভার সেট আপ করতে চান তা নিয়ে খুব বেশি চিন্তিত নন, তাই আপনি "Colab Notebook" ব্যবহার করে ওয়েব ব্রাউজারের মাধ্যমে কোডটি কার্যকর করতে পারেন। এই নোটবুকগুলি একটি "ব্যাকএন্ড" এর সাথে সংযোগ করতে পারে - যা কেবল কিছু জিনিস আগে থেকে ইনস্টল করা একটি সার্ভার, যেখান থেকে আপনি ওয়েব ব্রাউজারের মধ্যে ইচ্ছামত কোড কার্যকর করতে পারেন এবং ফলাফল দেখতে পারেন। দ্রুত প্রোটোটাইপিং বা এই জাতীয় টিউটোরিয়ালে ব্যবহারের জন্য এটি খুবই কার্যকর।

colab.research.google.com- এ যান এবং আপনাকে দেখানো একটি স্বাগত স্ক্রিন দেখানো হবে:

6b82258445885c50.png সম্পর্কে

এখন পপ আপ উইন্ডোর নীচে ডানদিকে New Notebook বোতামে ক্লিক করুন এবং আপনি এইরকম একটি ফাঁকা কোল্যাব দেখতে পাবেন:

2d52c8f7afa88564.png সম্পর্কে

দারুন! পরবর্তী ধাপ হল ফ্রন্টএন্ড কোল্যাবটিকে কিছু ব্যাকএন্ড সার্ভারের সাথে সংযুক্ত করা যাতে আপনি আপনার লেখা পাইথন কোডটি কার্যকর করতে পারেন। উপরের ডানদিকে "Connect" এ ক্লিক করে এবং "Connect to hosted runtime" নির্বাচন করে এটি করুন।

fa5f578a1a3d352b.png সম্পর্কে

একবার সংযুক্ত হয়ে গেলে আপনি RAM এবং ডিস্ক আইকনগুলি তার জায়গায় দেখতে পাবেন, যেমন:

541c9894fb39d4cb.png সম্পর্কে

দারুন! মডেল মেকার মডেলটি পুনরায় প্রশিক্ষণ দেওয়ার জন্য আপনি এখন পাইথনে কোডিং শুরু করতে পারেন। কেবল নীচের পদক্ষেপগুলি অনুসরণ করুন।

ধাপ ১

প্রথম যে ঘরটি বর্তমানে খালি আছে, সেখানে নিচের কোডটি কপি করুন। এটি আপনার জন্য TensorFlow Lite Model Maker ইনস্টল করবে Python এর প্যাকেজ ম্যানেজার "pip" ব্যবহার করে (এটি npm এর অনুরূপ যা এই কোড ল্যাবের বেশিরভাগ পাঠক JS ইকোসিস্টেম থেকে বেশি পরিচিত হতে পারেন):

!apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocpp0
!pip install -q tflite-model-maker

তবে সেলে কোড পেস্ট করলে তা কার্যকর হবে না। এরপর, উপরের কোডটি যে ধূসর সেলটিতে পেস্ট করেছেন তার উপর আপনার মাউসটি রাখুন, এবং নীচে হাইলাইট করা সেলের বাম দিকে একটি ছোট "প্লে" আইকন প্রদর্শিত হবে:

7ac5e3516bed6335.png সম্পর্কে ঘরে টাইপ করা কোডটি কার্যকর করতে প্লে বোতামে ক্লিক করুন।

এখন আপনি মডেল মেকার ইনস্টল করা দেখতে পাবেন:

651f21b04fb648cc.png সম্পর্কে

দেখানো পদ্ধতি অনুযায়ী এই সেলের সম্পাদন সম্পন্ন হলে, নিচের পরবর্তী ধাপে যান।

ধাপ ২

এরপর, দেখানো পদ্ধতিতে একটি নতুন কোড সেল যোগ করুন যাতে আপনি প্রথম সেলের পরে আরও কিছু কোড পেস্ট করতে পারেন এবং এটি আলাদাভাবে কার্যকর করতে পারেন:

869904a9d774c455.png সম্পর্কে

পরবর্তী সম্পাদিত কক্ষে বেশ কয়েকটি আমদানি থাকবে যা নোটবুকের বাকি অংশের কোড ব্যবহার করতে হবে। নিচেরটি কপি করে তৈরি নতুন কক্ষে পেস্ট করুন:

import numpy as np
import os

from tflite_model_maker import configs
from tflite_model_maker import ExportFormat
from tflite_model_maker import model_spec
from tflite_model_maker import text_classifier
from tflite_model_maker.text_classifier import DataLoader

import tensorflow as tf
assert tf.__version__.startswith('2')
tf.get_logger().setLevel('ERROR')

পাইথনের সাথে পরিচিত না হলেও, বেশ স্ট্যান্ডার্ড জিনিস। আপনি কেবল স্প্যাম ক্লাসিফায়ারের জন্য প্রয়োজনীয় কিছু ইউটিলিটি এবং মডেল মেকার ফাংশন আমদানি করছেন। এটি আপনি TensorFlow 2.x চালাচ্ছেন কিনা তাও পরীক্ষা করবে যা মডেল মেকার ব্যবহারের জন্য প্রয়োজনীয়।

অবশেষে, ঠিক আগের মতোই, সেলের উপর কার্সার রেখে "play" আইকন টিপে সেলটি এক্সিকিউট করুন , এবং তারপর পরবর্তী ধাপের জন্য একটি নতুন কোড সেল যোগ করুন।

ধাপ ৩

এরপর আপনি একটি রিমোট সার্ভার থেকে আপনার ডিভাইসে ডেটা ডাউনলোড করবেন এবং training_data ভেরিয়েবলটিকে ডাউনলোড করা স্থানীয় ফাইলের পথ হিসেবে সেট করবেন:

data_file = tf.keras.utils.get_file(fname='comment-spam-extras.csv', origin='https://storage.googleapis.com/jmstore/TensorFlowJS/EdX/code/6.5/jm_blog_comments_extras.csv', extract=False)

মডেল মেকার ডাউনলোড করা ফাইলের মতো সাধারণ CSV ফাইল থেকে মডেলগুলিকে প্রশিক্ষণ দিতে পারে। আপনাকে কেবল নির্দিষ্ট করতে হবে কোন কলামে লেখাটি থাকবে এবং কোনটিতে লেবেল থাকবে। আপনি ধাপ ৫-এ এটি কীভাবে করবেন তা দেখতে পাবেন। আপনি যদি চান তবে সরাসরি CSV ফাইলটি ডাউনলোড করে দেখতে পারেন।

তোমাদের মধ্যে যারা আগ্রহী তারা এই ফাইলটির নাম লক্ষ্য করবে jm_blog_comments _extras .csv - এই ফাইলটি কেবলমাত্র মূল প্রশিক্ষণ ডেটা যা আমরা প্রথম মন্তব্য স্প্যাম মডেল তৈরি করতে ব্যবহার করেছিলাম এবং আপনার আবিষ্কৃত নতুন এজ কেস ডেটা একসাথে ব্যবহার করে , তাই এটি সবই একটি ফাইলে রয়েছে। নতুন বাক্যগুলি শিখতে চাইলে মডেলটিকে প্রশিক্ষণ দেওয়ার জন্য ব্যবহৃত মূল প্রশিক্ষণ ডেটাও আপনার প্রয়োজন।

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

এই সেলটি এক্সিকিউট করুন, তারপর এক্সিকিউট করা শেষ হলে, একটি নতুন সেল যোগ করুন এবং ধাপ ৪ এ যান।

ধাপ ৪

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

মডেল মেকার বেশ কিছু পূর্ব-শিখানো মডেল এম্বেডিং প্রদান করে যা আপনি ব্যবহার করতে পারেন, তবে শুরু করার জন্য সবচেয়ে সহজ এবং দ্রুততম হল average_word_vec যা আপনি আগের কোডল্যাবে আপনার ওয়েবসাইট তৈরি করতে ব্যবহার করেছিলেন। এখানে কোডটি দেওয়া হল:

spec = model_spec.get('average_word_vec')
spec.num_words = 2000
spec.seq_len = 20
spec.wordvec_dim = 7

নতুন সেলে পেস্ট করার পর এটি চালান।

বোঝা

num_words

প্যারামিটার

এই মডেলটিতে আপনি কতগুলি শব্দ ব্যবহার করতে চান। আপনি হয়তো ভাবতে পারেন যে যত বেশি হবে তত ভালো, কিন্তু সাধারণত প্রতিটি শব্দ কত ফ্রিকোয়েন্সিতে ব্যবহৃত হয় তার উপর ভিত্তি করে একটি মিষ্টি স্পট থাকে। আপনি যদি পুরো কর্পাসের প্রতিটি শব্দ ব্যবহার করেন, তাহলে মডেলটি কেবল একবার ব্যবহৃত শব্দের ওজন শেখার এবং ভারসাম্য বজায় রাখার চেষ্টা করতে পারে - এটি খুব কার্যকর নয়। আপনি যেকোনো টেক্সট কর্পাসে দেখতে পাবেন যে অনেক শব্দ কেবল একবার বা দুবার ব্যবহৃত হয়, এবং সাধারণত আপনার মডেলে সেগুলি ব্যবহার করা মূল্যবান নয় কারণ সামগ্রিক অনুভূতির উপর তাদের প্রভাব খুব একটা পড়ে না। তাই আপনি num_words প্যারামিটার ব্যবহার করে আপনার পছন্দসই শব্দের সংখ্যা অনুসারে আপনার মডেলটি টিউন করতে পারেন। এখানে একটি ছোট সংখ্যার একটি ছোট এবং দ্রুত মডেল থাকবে, তবে এটি কম নির্ভুল হতে পারে, কারণ এটি কম শব্দ চিনতে পারে। এখানে একটি বড় সংখ্যার একটি বড় এবং সম্ভাব্য ধীর মডেল থাকবে। মিষ্টি স্পট খুঁজে বের করা গুরুত্বপূর্ণ এবং আপনার ব্যবহারের ক্ষেত্রে কোনটি সবচেয়ে ভালো কাজ করে তা নির্ধারণ করা একজন মেশিন লার্নিং ইঞ্জিনিয়ার হিসাবে আপনার উপর নির্ভর করে।

বোঝা

wordvec_dim

প্যারামিটার

wordvec_dim প্যারামিটার হল প্রতিটি শব্দের ভেক্টরের জন্য আপনি কতগুলি মাত্রা ব্যবহার করতে চান তার সংখ্যা। এই মাত্রাগুলি মূলত বিভিন্ন বৈশিষ্ট্য (প্রশিক্ষণের সময় মেশিন লার্নিং অ্যালগরিদম দ্বারা তৈরি) যা যেকোনো শব্দ পরিমাপ করা যেতে পারে যার মাধ্যমে প্রোগ্রামটি অর্থপূর্ণ উপায়ে অনুরূপ শব্দগুলিকে সর্বোত্তমভাবে সংযুক্ত করার চেষ্টা করবে।

উদাহরণস্বরূপ, যদি আপনার কাছে "চিকিৎসা" শব্দটি কতটা গুরুত্বপূর্ণ তার একটি মাত্রা থাকে, তাহলে "pills" এর মতো একটি শব্দ এই মাত্রায় উচ্চ স্কোর করতে পারে এবং "xray" এর মতো অন্যান্য উচ্চ স্কোরিং শব্দের সাথে যুক্ত হতে পারে, কিন্তু "cat" এই মাত্রায় কম স্কোর করবে। এটি দেখা যেতে পারে যে স্প্যাম নির্ধারণের জন্য একটি "চিকিৎসা মাত্রা" কার্যকর, যখন এটি অন্যান্য সম্ভাব্য মাত্রার সাথে মিলিত হয় যা এটি ব্যবহার করার সিদ্ধান্ত নিতে পারে।

"চিকিৎসা মাত্রা"-এ উচ্চ স্কোর পাওয়া শব্দের ক্ষেত্রে, এটি অনুমান করা যেতে পারে যে মানবদেহের সাথে শব্দের সম্পর্কযুক্ত একটি দ্বিতীয় মাত্রা কার্যকর হতে পারে। "পা", "বাহু", "ঘাড়" এর মতো শব্দগুলি এখানে উচ্চ স্কোর পাওয়া যেতে পারে এবং চিকিৎসা মাত্রায়ও বেশ উচ্চ স্কোর পাওয়া যেতে পারে।

মডেলটি এই মাত্রাগুলি ব্যবহার করে স্প্যামের সাথে সম্পর্কিত শব্দগুলি সনাক্ত করতে সক্ষম করতে পারে। সম্ভবত স্প্যাম ইমেলগুলিতে চিকিৎসা এবং মানবদেহের অঙ্গ উভয়েরই শব্দ থাকার সম্ভাবনা বেশি।

গবেষণা থেকে নির্ধারিত মূল নীতি হল, শব্দের সংখ্যার চতুর্থ মূল এই প্যারামিটারের জন্য ভালো কাজ করে। তাই যদি আমি ২০০০ শব্দ ব্যবহার করি, তাহলে এর জন্য একটি ভালো সূচনা বিন্দু হল ৭ মাত্রা। আপনি যদি ব্যবহৃত শব্দের সংখ্যা পরিবর্তন করেন, তাহলে আপনি এটিও পরিবর্তন করতে পারেন।

বোঝা

seq_len

প্যারামিটার

ইনপুট মানের ক্ষেত্রে মডেলগুলি সাধারণত খুব কঠোর হয়। একটি ভাষা মডেলের জন্য, এর অর্থ হল ভাষা মডেল একটি নির্দিষ্ট, স্থির, দৈর্ঘ্যের বাক্যগুলিকে শ্রেণীবদ্ধ করতে পারে। এটি seq_len প্যারামিটার দ্বারা নির্ধারিত হয়, যেখানে এটি 'ক্রম দৈর্ঘ্য' বোঝায়। যখন আপনি শব্দগুলিকে সংখ্যায় (অথবা টোকেন) রূপান্তর করেন, তখন একটি বাক্য এই টোকেনগুলির একটি ক্রম হয়ে যায়। সুতরাং আপনার মডেলটি (এই ক্ষেত্রে) 20 টি টোকেনযুক্ত বাক্যগুলিকে শ্রেণীবদ্ধ করতে এবং সনাক্ত করতে প্রশিক্ষিত হবে। যদি বাক্যটি এর চেয়ে দীর্ঘ হয়, তবে এটি ছোট করা হবে। যদি এটি ছোট হয়, তবে এটি প্যাড করা হবে - ঠিক এই সিরিজের প্রথম কোডল্যাবের মতো।

ধাপ ৫ - প্রশিক্ষণের তথ্য লোড করুন

আগে আপনি CSV ফাইলটি ডাউনলোড করেছিলেন। এখন সময় এসেছে একটি ডেটা লোডার ব্যবহার করে এটিকে প্রশিক্ষণ ডেটাতে রূপান্তর করার যা মডেলটি চিনতে পারে।

data = DataLoader.from_csv(
      filename=data_file,
      text_column='commenttext', 
      label_column='spam', 
      model_spec=spec,
      delimiter=',',
      shuffle=True,
      is_training=True)

train_data, test_data = data.split(0.9)

যদি আপনি একটি এডিটরে CSV ফাইলটি খোলেন, তাহলে আপনি দেখতে পাবেন যে প্রতিটি লাইনের দুটি মান রয়েছে এবং ফাইলের প্রথম লাইনে টেক্সট সহ এগুলি বর্ণনা করা হয়েছে। সাধারণত প্রতিটি এন্ট্রিকে তখন একটি 'কলাম' হিসাবে বিবেচনা করা হয়। আপনি দেখতে পাবেন যে প্রথম কলামের বর্ণনাকারী হল commenttext , এবং প্রতিটি লাইনের প্রথম এন্ট্রি হল মন্তব্যের টেক্সট।

একইভাবে, দ্বিতীয় কলামের বর্ণনাকারী হল spam , এবং আপনি দেখতে পাবেন যে প্রতিটি লাইনের দ্বিতীয় এন্ট্রিটি TRUE অথবা FALSE দ্বারা নির্দেশিত হয় যে সেই লেখাটি মন্তব্য স্প্যাম কিনা। অন্যান্য বৈশিষ্ট্যগুলি ধাপ ৪-এ তৈরি করা মডেল স্পেকটি সেট করে, একটি ডিলিমিটার অক্ষর সহ, যা এই ক্ষেত্রে একটি কমা কারণ ফাইলটি কমা দ্বারা পৃথক করা হয়েছে। আপনি প্রশিক্ষণ ডেটা এলোমেলোভাবে পুনর্বিন্যাস করার জন্য একটি শাফেল প্যারামিটারও সেট করেন যাতে একই রকম বা একসাথে সংগ্রহ করা জিনিসগুলি ডেটা সেট জুড়ে এলোমেলোভাবে ছড়িয়ে পড়ে।

এরপর আপনি data.split() ব্যবহার করে ডেটাকে প্রশিক্ষণ এবং পরীক্ষার ডেটাতে ভাগ করবেন। .9 নির্দেশ করে যে ডেটাসেটের 90% প্রশিক্ষণের জন্য ব্যবহৃত হবে, বাকিটা পরীক্ষার জন্য।

ধাপ ৬ - মডেল তৈরি করুন

আরেকটি ঘর যোগ করুন যেখানে আমরা মডেল তৈরির জন্য কোড যোগ করব:

model = text_classifier.create(train_data, model_spec=spec, epochs=50)

এটি মডেল মেকারের সাহায্যে একটি টেক্সট ক্লাসিফায়ার মডেল তৈরি করে এবং আপনি যে প্রশিক্ষণ ডেটা ব্যবহার করতে চান (যা ধাপ ৪ এ সংজ্ঞায়িত করা হয়েছিল), মডেল স্পেসিফিকেশন (যা ধাপ ৪ এও সেট আপ করা হয়েছিল), এবং বেশ কয়েকটি যুগ, এই ক্ষেত্রে ৫০ উল্লেখ করেন।

মেশিন লার্নিংয়ের মূলনীতি হল এটি প্যাটার্ন ম্যাচিংয়ের একটি রূপ। প্রাথমিকভাবে, এটি শব্দগুলির জন্য পূর্ব-প্রশিক্ষিত ওজন লোড করবে এবং তাদের একসাথে গ্রুপ করার চেষ্টা করবে 'ভবিষ্যদ্বাণী' দিয়ে যে কোনটি একসাথে গ্রুপ করা হলে স্প্যাম নির্দেশ করে এবং কোনটি নয়। প্রথমবারের মতো, এটি সম্ভবত 50:50 এর কাছাকাছি হবে, কারণ মডেলটি কেবল শুরু হচ্ছে যেমনটি নীচে দেখানো হয়েছে:

bbe4b896d8060bc4.png সম্পর্কে

এরপর এটি এর ফলাফল পরিমাপ করবে, এবং মডেলের ওজন পরিবর্তন করে তার ভবিষ্যদ্বাণী পরিবর্তন করবে, এবং এটি আবার চেষ্টা করবে। এটি একটি যুগ। সুতরাং, epochs=50 নির্দিষ্ট করে, এটি দেখানো হিসাবে 50 বার সেই 'লুপ' এর মধ্য দিয়ে যাবে:

4ed286d114960ca.png সম্পর্কে

সুতরাং যখন আপনি ৫০তম যুগে পৌঁছাবেন, তখন মডেলটি অনেক বেশি নির্ভুলতার রিপোর্ট করবে। এই ক্ষেত্রে ৯৯.১% দেখাচ্ছে!

ধাপ ৭ - মডেলটি রপ্তানি করুন

আপনার প্রশিক্ষণ শেষ হয়ে গেলে, আপনি মডেলটি রপ্তানি করতে পারবেন। TensorFlow একটি মডেলকে তার নিজস্ব ফর্ম্যাটে প্রশিক্ষণ দেয় এবং এটিকে একটি ওয়েব পৃষ্ঠায় ব্যবহারের জন্য TensorFlow.js ফর্ম্যাটে রূপান্তর করতে হবে। কেবল একটি নতুন ঘরে নিম্নলিখিতটি পেস্ট করুন এবং এটি কার্যকর করুন:

model.export(export_dir="/js_export/", export_format=[ExportFormat.TFJS, ExportFormat.LABEL, ExportFormat.VOCAB])
!zip -r /js_export/ModelFiles.zip /js_export/

এই কোডটি কার্যকর করার পর, আপনি যদি Colab-এর বাম দিকের ছোট ফোল্ডার আইকনে ক্লিক করেন, তাহলে আপনি উপরে যে ফোল্ডারে রপ্তানি করেছেন সেখানে যেতে পারবেন (রুট ডিরেক্টরিতে - আপনাকে একটি স্তর উপরে যেতে হতে পারে) এবং ModelFiles.zip এ থাকা রপ্তানি করা ফাইলগুলির জিপ বান্ডেলটি খুঁজে পাবেন।

এই জিপ ফাইলটি এখনই আপনার কম্পিউটারে ডাউনলোড করুন কারণ আপনি প্রথম কোডল্যাবের মতোই এই ফাইলগুলি ব্যবহার করবেন:

cda3c681ebf144b4.png সম্পর্কে

দারুন! পাইথন পর্ব শেষ, এখন তুমি জাভাস্ক্রিপ্টের সেই জায়াস্ক্রিপ্ট জায়গায় ফিরে যেতে পারো যা তুমি জানো এবং ভালোবাসো। উফ!

৫. নতুন মেশিন লার্নিং মডেল পরিবেশন করা

এখন আপনি মডেলটি লোড করার জন্য প্রায় প্রস্তুত। যদিও এটি করার আগে আপনাকে কোডল্যাবে আগে ডাউনলোড করা নতুন মডেল ফাইলগুলি আপলোড করতে হবে যাতে এটি আপনার কোডের মধ্যে হোস্ট করা এবং ব্যবহারযোগ্য হয়।

প্রথমে, যদি আপনি ইতিমধ্যেই এটি না করে থাকেন, তাহলে আপনার চালানো মডেল মেকার কোলাব নোটবুক থেকে ডাউনলোড করা মডেলের ফাইলগুলি আনজিপ করুন। আপনি এর বিভিন্ন ফোল্ডারে থাকা নিম্নলিখিত ফাইলগুলি দেখতে পাবেন:

অনুসরণ

তোমার এখানে কি আছে?

  • model.json - এটি প্রশিক্ষিত TensorFlow.js মডেল তৈরি করে এমন একটি ফাইল। আপনি JS কোডে এই নির্দিষ্ট ফাইলটি উল্লেখ করবেন।
  • group1-shard1of1.bin - এটি একটি বাইনারি ফাইল যাতে রপ্তানি করা TensorFlow.js মডেলের জন্য সংরক্ষিত ডেটার বেশিরভাগ অংশ থাকে এবং এটি আপনার সার্ভারের কোথাও হোস্ট করা প্রয়োজন যাতে উপরে উল্লেখিত model.json ডিরেক্টরিতে ডাউনলোড করা যায়।
  • vocab - এই অদ্ভুত ফাইলটি কোন এক্সটেনশন ছাড়াই, মডেল মেকারের তৈরি, যা আমাদের শেখায় কিভাবে বাক্যে শব্দ এনকোড করতে হয় যাতে মডেল বুঝতে পারে কিভাবে সেগুলো ব্যবহার করতে হয়। পরবর্তী অংশে আপনি এই বিষয়ে আরও বিস্তারিত জানবেন।
  • labels.txt - এতে কেবল মডেলটি ভবিষ্যদ্বাণী করবে এমন ক্লাসনাম থাকে। এই মডেলের জন্য যদি আপনি আপনার টেক্সট এডিটরে এই ফাইলটি খোলেন তবে এতে কেবল "false" এবং "true" তালিকাভুক্ত থাকবে যা "spam নয়" বা "spam" এর পূর্বাভাস আউটপুট হিসাবে নির্দেশ করবে।

TensorFlow.js মডেল ফাইলগুলি হোস্ট করুন

প্রথমে একটি ওয়েব সার্ভারে তৈরি করা model.json এবং *.bin ফাইলগুলি রাখুন যাতে আপনি আপনার ওয়েব পৃষ্ঠার মাধ্যমে সেগুলি অ্যাক্সেস করতে পারেন।

বিদ্যমান মডেল ফাইলগুলি মুছুন

এই সিরিজের প্রথম কোডল্যাবের শেষ ফলাফলের উপর ভিত্তি করে তৈরি করার সময়, আপনাকে প্রথমে আপলোড করা বিদ্যমান মডেল ফাইলগুলি মুছে ফেলতে হবে। আপনি যদি Glitch.com ব্যবহার করেন, তাহলে বাম দিকের files প্যানেলে model.json এবং group1-shard1of1.bin দেখুন, প্রতিটি ফাইলের জন্য 3 ডট মেনু ড্রপডাউনে ক্লিক করুন এবং দেখানো হিসাবে delete নির্বাচন করুন:

c72bfdc5a0db4d0d.png

গ্লিচে নতুন ফাইল আপলোড করা হচ্ছে

দারুন! এখন নতুনগুলো আপলোড করুন:

  1. আপনার গ্লিচ প্রজেক্টের বাম দিকের প্যানেলে থাকা সম্পদ ফোল্ডারটি খুলুন এবং আপলোড করা যেকোনো পুরানো সম্পদ মুছে ফেলুন যদি তাদের নাম একই থাকে।
  2. আপলোড অ্যা অ্যাসেট ক্লিক করুন এবং এই ফোল্ডারে আপলোড করার জন্য group1-shard1of1.bin নির্বাচন করুন। আপলোড করার পরে এটি এখন এইরকম দেখাবে:

c6739dd30e6df977.png সম্পর্কে

  1. দারুন! এখন model.json ফাইলের জন্যও একই কাজ করুন যাতে আপনার সম্পদ ফোল্ডারে 2টি ফাইল এইভাবে থাকে:

b7858eb08bea9ac3.png সম্পর্কে

  1. আপনি যদি আপনার আপলোড করা group1-shard1of1.bin ফাইলটিতে ক্লিক করেন তবে আপনি URLটি তার অবস্থানে অনুলিপি করতে সক্ষম হবেন। দেখানো পথটি এখনই অনুলিপি করুন:

19999f6644f61153.png

  1. এখন স্ক্রিনের নীচে বাম দিকে, Tools > Terminal এ ক্লিক করুন। টার্মিনাল উইন্ডো লোড হওয়া পর্যন্ত অপেক্ষা করুন।
  2. লোড হয়ে গেলে নিম্নলিখিতটি টাইপ করুন এবং তারপর ডিরেক্টরিটি www ফোল্ডারে পরিবর্তন করতে এন্টার টিপুন:

টার্মিনাল:

cd www
  1. এরপর, wget ব্যবহার করে Glitch-এর সম্পদ ফোল্ডারে থাকা ফাইলগুলির জন্য তৈরি করা URL গুলি দিয়ে নীচের URL গুলি প্রতিস্থাপন করে আপলোড করা দুটি ফাইল ডাউনলোড করুন (প্রতিটি ফাইলের কাস্টম URL এর জন্য সম্পদ ফোল্ডারটি পরীক্ষা করুন)।

দুটি URL-এর মধ্যে স্থান লক্ষ্য করুন এবং আপনার যে URLগুলি ব্যবহার করতে হবে তা দেখানো URLগুলির থেকে আলাদা হবে কিন্তু দেখতে একই রকম হবে:

টার্মিনাল

wget https://cdn.glitch.com/1cb82939-a5dd-42a2-9db9-0c42cab7e407%2Fmodel.json?v=1616111344958 https://cdn.glitch.com/1cb82939-a5dd-42a2-9db9-0c42cab7e407%2Fgroup1-shard1of1.bin?v=1616017964562

দারুন! আপনি এখন www ফোল্ডারে আপলোড করা ফাইলগুলির একটি কপি তৈরি করে ফেলেছেন।

তবে, এখনই এগুলো অদ্ভুত নামে ডাউনলোড করা হবে। যদি আপনি টার্মিনালে ls টাইপ করেন এবং এন্টার টিপেন তাহলে আপনি এরকম কিছু দেখতে পাবেন:

6c417fdfc64762f1.png সম্পর্কে

  1. mv কমান্ড ব্যবহার করে ফাইলগুলির নাম পরিবর্তন করুন। কনসোলে নিম্নলিখিতটি টাইপ করুন এবং প্রতিটি লাইনের পরে এন্টার টিপুন:

টার্মিনাল:

mv *group1-shard1of1.bin* group1-shard1of1.bin
mv *model.json* model.json
  1. অবশেষে, টার্মিনালে refresh টাইপ করে গ্লিচ প্রজেক্টটি রিফ্রেশ করুন এবং এন্টার টিপুন:

টার্মিনাল:

refresh

রিফ্রেশ করার পর এখন আপনি ইউজার ইন্টারফেসের www ফোল্ডারে model.json এবং group1-shard1of1.bin দেখতে পাবেন:

530bb651f4dbac64.png সম্পর্কে

দারুন! শেষ ধাপ হল dictionary.js ফাইলটি আপডেট করা।

  1. আপনার নতুন ডাউনলোড করা ভোকাব ফাইলটি আপনার টেক্সট এডিটরের মাধ্যমে ম্যানুয়ালি অথবা এই টুলটি ব্যবহার করে সঠিক JS ফর্ম্যাটে রূপান্তর করুন এবং ফলাফলটি dictionary.js হিসেবে আপনার www ফোল্ডারের মধ্যে সংরক্ষণ করুন। যদি আপনার ইতিমধ্যেই একটি dictionary.js ফাইল থাকে তবে আপনি কেবল নতুন বিষয়বস্তু কপি করে তার উপর পেস্ট করতে পারেন এবং ফাইলটি সংরক্ষণ করতে পারেন।

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

অনুসরণ

আপনি দেখতে পাচ্ছেন, প্রথম ৬টি এখন সঠিকভাবে স্প্যাম নয় হিসেবে শ্রেণীবদ্ধ করা হয়েছে, এবং ৬টির দ্বিতীয় ব্যাচকে স্প্যাম হিসেবে চিহ্নিত করা হয়েছে। নিখুঁত!

আসুন কিছু ভিন্নতাও চেষ্টা করে দেখি এটি সঠিকভাবে সাধারণীকরণ করা হয়েছে কিনা। মূলত একটি ব্যর্থ বাক্য ছিল যেমন:

" ওগো গুগের স্টক তো এখনই বেড়ে গেছে! অনেক দেরি হওয়ার আগেই চলে আসুন! "

এটি এখন সঠিকভাবে স্প্যাম হিসেবে শ্রেণীবদ্ধ করা হয়েছে, কিন্তু আপনি যদি এটিকে পরিবর্তন করেন তাহলে কী হবে:

" তাহলে XYZ স্টকের মূল্য বেড়েছে! অনেক দেরি হওয়ার আগেই কিছু অধিকার কিনুন! "

এখানে আপনি ৯৮% স্প্যাম হওয়ার সম্ভাবনার পূর্বাভাস পাবেন যা সঠিক, যদিও আপনি স্টক প্রতীক এবং শব্দের ধরণ সামান্য পরিবর্তন করেছেন।

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

৬. অভিনন্দন!

অভিনন্দন, আপনি একটি বিদ্যমান মেশিন লার্নিং মডেলকে পুনরায় প্রশিক্ষণ দিতে সক্ষম হয়েছেন যাতে আপনি যে এজ কেসগুলি খুঁজে পেয়েছেন সেগুলির জন্য এটি আপডেট করা যায় এবং বাস্তব বিশ্বের অ্যাপ্লিকেশনের জন্য TensorFlow.js ব্যবহার করে ব্রাউজারে সেই পরিবর্তনগুলি স্থাপন করা হয়েছে।

সংক্ষিপ্তসার

এই কোডল্যাবে আপনি:

  1. আগে থেকে তৈরি মন্তব্য স্প্যাম মডেল ব্যবহার করার সময় কাজ না করা এজ কেস আবিষ্কার করা হয়েছে
  2. আপনার আবিষ্কৃত এজ কেসগুলি বিবেচনায় নেওয়ার জন্য মডেল মেকার মডেলটিকে পুনরায় প্রশিক্ষণ দেওয়া হয়েছে
  3. নতুন প্রশিক্ষিত মডেলটি TensorFlow.js ফর্ম্যাটে রপ্তানি করা হয়েছে।
  4. নতুন ফাইলগুলি ব্যবহার করার জন্য আপনার ওয়েব অ্যাপ আপডেট করা হয়েছে

এরপর কী?

তাই এই আপডেটটি দারুন কাজ করে, কিন্তু যেকোনো ওয়েব অ্যাপের মতোই, সময়ের সাথে সাথে পরিবর্তন আসবে। প্রতিবার ম্যানুয়ালি করার পরিবর্তে, অ্যাপটি যদি সময়ের সাথে সাথে নিজেকে ক্রমাগত উন্নত করে তবে এটি অনেক ভালো হবে। আপনি কি ভাবতে পারেন যে, উদাহরণস্বরূপ, ১০০টি নতুন মন্তব্য ভুলভাবে শ্রেণীবদ্ধ হিসাবে চিহ্নিত হওয়ার পরে, আপনি কীভাবে একটি মডেলকে স্বয়ংক্রিয়ভাবে পুনরায় প্রশিক্ষণ দেওয়ার জন্য এই পদক্ষেপগুলি স্বয়ংক্রিয়ভাবে ব্যবহার করেছেন? আপনার নিয়মিত ওয়েব ইঞ্জিনিয়ারিং টুপিটি পরুন এবং আপনি সম্ভবত এটি স্বয়ংক্রিয়ভাবে করার জন্য একটি পাইপলাইন তৈরি করতে পারেন তা বের করতে পারবেন। যদি না হয়, চিন্তার কিছু নেই, সিরিজের পরবর্তী কোডল্যাবের জন্য অপেক্ষা করুন যা আপনাকে কীভাবে দেখাবে।

আপনার তৈরি জিনিস আমাদের সাথে শেয়ার করুন

আপনি আজ যা তৈরি করেছেন তা সহজেই অন্যান্য সৃজনশীল ব্যবহারের ক্ষেত্রেও প্রসারিত করতে পারেন এবং আমরা আপনাকে বাক্সের বাইরে চিন্তা করতে এবং হ্যাকিং চালিয়ে যেতে উৎসাহিত করি।

আপনার প্রকল্পটি TensorFlow ব্লগে বা ভবিষ্যতের ইভেন্টগুলিতে প্রদর্শিত হওয়ার সুযোগ পেতে সোশ্যাল মিডিয়ায় #MadeWithTFJS হ্যাশট্যাগ ব্যবহার করে আমাদের ট্যাগ করতে ভুলবেন না। আপনি কী তৈরি করেন তা আমরা দেখতে আগ্রহী।

আরও গভীরে যেতে আরও TensorFlow.js কোডল্যাব

দেখার জন্য ওয়েবসাইটগুলি