NLP ক্লাসিফিকেশন ডাটাসেট :মেশিন মেশিন কি পারবে রোগ অনুযায়ী ডক্টর সাজেস্ট করতে ?
ডায়াগনস্টিক সেন্টার এর সামনে সারি সারি মেরুন কালার এর চেয়ার। অনেকগুলো। চ্যেয়ার এর সামনেই কাউন্টার। এক কাউন্টার থেকে রিপোর্ট ডেলিভারি হচ্ছে, আরেক কাউন্টার থেকে সেন্টার এর রোগীদের আসা কল রিসিভ হচ্ছে। ব্যাস্ত সবাই।
আমি বসে আছি সামনের সারিতে।
"আস্সালামুআলাইকুম, XYZ ডায়াগনস্টিক থেকে আদনান বলছি, কিভাবে সহায়তা করতে পারি ?"
"আমার মাসেলে অনেক ব্যথা করে, ঘুম ঠিকমত হয় না। অনেক ক্লান্ত লাগে"
" আপনি অর্থোপেডিক এর নিহাল স্যার কে দেখাতে পারেন - এপয়েন্টমেন্ট করে দিবো ?"
একটু পরে আবার আরেকটা কল।
""আমার আব্বুর খাওয়ার ক্রেভিং অনেক বেশি হচ্ছে দিন দিন। আর ঘন ঘন প্রস্রাব হয়।"
" আপনি মেডিসিন এর রায়হান স্যার কে দেখান - এপয়েন্টমেন্ট করে দিবো ?"
এভাবে কলের পর কল হচ্ছেই। আর সব ডক্টরদের নাম শুনে যাচ্ছি। মাথায় তখন অন্য চিন্তা। ভাবছি এই যে এতো কল আসছে, উনি রিসিভ করছেন, এপয়েন্টমেন্ট নিচ্ছেন , কলার কে আবার sms করে সেটি জানিয়েও দিতে হচ্ছে- পুরো কাজটা যদি automate করে ফেলা যেত, কেমন হতো ? ধারণাটা অনেকটা এরকম App এর মাদ্ধমে এপয়েন্টমেন্ট রিকুয়েস্ট আসবে, পেশেন্টের রোগের ধরণ দেখে, মেশিন লার্নিং মডেল - ই বলে দিবে কোন ডক্টর এর appointment নিতে হবে। এতে করে যেটা হবে, দিনে শত শত কল কে waiting এ থাকতে হবে না, পাশাপাশি খুব তাড়াতাড়ি কাজটা শেষ হবে। পেশেন্ট ডক্টর দেখিয়ে সন্তুষ্ট হলে - সেই সেন্টার এর App এ -ডক্টর এর ভালো রেটিং দিয়ে দিবে (রকমারির বেস্ট সেলিং বই এর ড্যাশবোর্ডের মতো )। প্রতি সপ্তাহে বেস্ট ডক্টর অফ ডা উইক (ডিসিপ্লিন অনুযায়ী) - সিলেকশন হবে।
কথায় আছে - ভাবিয়া করিও কাজ, করিয়া ভাবিও না। মনে হয় এই নীতি কথা এবার মানতে পারবো না। ডাটাসেট খুঁজতে হবে ,যাতে করে যা ভেবেছি সেটি কিছুটা হলেও কাজের মাদ্ধমে দেখাতে পারি। শুরু করলাম ক্যাগলে ডাটাসেট খোঁজা।পেয়ে গেলাম ক্যাগলে ৩ বছর আগের একটি ডাটাসেট। ডাটাসেটটি তৈরী করেছেন : Dr. M. F. Mridha, Tanvir Islam, Sakila Mahbin Zinat DOI:10.17632/4tt953xwk2.1
ডাটাসেটটির একটি ছোট সামারি : এটি একটি NLP ডেটাসেট। এখানে প্রায় ছয়শ রোগীর মূল বক্তব্য আছে, যেগুলো সম্পূর্ণ বাংলা ভাষায়। প্রায় আট হাজার শব্দের এই ডেটা তৈরি করা হয়েছে হাসপাতালের আউটডোর রিসেপশনিস্টদের ও কিছু ডাক্তারের অভিজ্ঞতার ভিত্তিতে, যাদের কাছে রোগীরা আসেন এবং তাদের সমস্যার কথা জানান। রোগীরা প্রথমে আসেন এবং তাদের সমস্যার কথা বলেন, আর সেই বক্তব্যের ভিত্তিতে রিসেপশনিস্টরা তাদের বলে দেন কোন বিশেষজ্ঞ ডাক্তার দেখানো উচিত। সমস্ত ডেটা একজন এমবিবিএস ডাক্তারের দ্বারা যাচাই করা হয়েছে। এছাড়াও, বিভিন্ন সমস্যায় আক্রান্ত রোগীদের বক্তব্যের উপর ভিত্তি করে এই ডেটা সংগ্রহ করা হয়েছে। এই ডেটাসেট সাধারণ ও সাধারণ স্বাস্থ্য সমস্যা নিয়ে তৈরি করা হয়েছে, যা সাধারণত মানুষ মুখোমুখি হয়, এবং বড় সমস্যা যেমন মাথাব্যথা, হাড়ের ব্যথা, চুলকানির মতো প্রাথমিক উপসর্গগুলোও অন্তর্ভুক্ত রয়েছে। এই ডেটাসেটটি দুটি অংশে ভাগ করা হয়েছে । এক অংশে রোগীর উপসর্গ, শরীরের অংশ, রঙ, রক্ত, সময়, মান, দিক, ইত্যাদি লেবেল দেয়া হয়েছে, এবং আরেক অংশে বিশেষজ্ঞ যেমন মেডিসিন বিশেষজ্ঞ, কার্ডিওলজিস্ট, ডেন্টিস্ট, গাইনোকলজিস্ট ইত্যাদির লেবেল দেয়া হয়েছে।
মূল কাজে যাওয়ার আগে , কিছু খটমট টার্মিনোলজি সহজ ভাষায় বুঝে নেই।
NLP কি ? সোজা কোথায় NLP মানে ন্যাচারাল ল্যাংগুয়েজ প্রসেসিং। রোবট সোফিয়ার কথা মনে হবে ? যাকে প্রশ্ন করলে উত্তর দিতো ? সোফিয়াকে যেইভাবে এই "কথা বুঝানোর কাজটি" করা হয়েছে সেটাই NLP এর কাজ ,তার মানে NLP দিয়ে মেশিন কে কথা বুঝিয়ে বলা যায়।
এবার আসি ক্লাসিফিকেশনে । সকালে মেইল বাক্স চেক করেছেন ? কেন বললাম কারণ -আপনার ইনবক্স এ যেই মেইল আসে, কিছু চলে যায় spam এ। কিভাবে gmail বুঝতে পারে এগুলো SPAM Email ? এখানেই ক্লাসিফিকেশন এর কেরামতি। জিমেইল এর প্রযুক্তিতে কিছু (আসলে অনেক ) ইমেইল এর কন্টেন্ট কে - কে মার্কা মেরে (এটাকে টেকনিক্যাল ভাষায় লেবেলিং বলে, হিহি ) শিখিয়ে দেওয়া হয়েছে এরকম ইমেইল যদি ইউজার পায় বা ইউজার নিজেই যদি সেটিকে spam ডিটেক্ট করে - সাথে সাথে সেটিকে কোর্টে I mean spam বক্সে চালান করে দিবে । gmail তাই করে। শিখে নিলাম NLP এবং ক্লাসিফিকেশন।
এবার তাহলে কাজের কোথায় আসি।
ডাটাসেটের সামারি তো খুব সুন্দর লিখে দিলাম। কিন্তু বুঝতে কি পেরেছেন আমি কি করতে চলেছি ? না বুঝলেও ক্ষতি নেই, আমিও প্রথমে বুঝি নাই,৫ ঘন্টা চেষ্টা করে বুঝতে পেরেছি এই ডাটাসেটকে। আপনাকে এতো কষ্ট করতে হবে না, মনোযোগ দিয়ে আমি যান বলছি সেটি শুনলেই হবে।
Gazetteers.txt : এই কাজের সাথে রিলেটেড গুরুত্তপূর্ণ মেডিক্যাল টার্মস গুলো দিয়ে একটা ছোট ডিকশনারি তৈরী করা হয়েছে, বলতে পারেন এটি একটা রেফারেন্স লিস্ট। যেমন ধরুন : তিন, দিন, অনেক, মাথা,ব্যাথা- প্রত্যেকটি শব্দ কে আলাদা ভাবে নিয়ে এই এই রেফারেন্স লিস্ট তৈরী। শব্দগুলো নেওয়া হয়েছে, পেশেন্টদের সমস্যাগুলো শুনে।
The Specialist Classification.xlsx : পেশেন্টদের বিস্তারিত তথ্য তাদের যা যা সমস্যা সেগুলা এখানে রেকর্ড করা হয়েছে। যেমন ধরুন : পেশেন্ট এর জেন্ডার, তার সমস্যা, সে কোন ডিসিপ্লিন এর ডক্টর দেখাবে। উদাহরণ হিসেবে বলা যায় : পেসেন্ট এর জেন্ডার male, সমস্যা : আমার ছেলের অনেক মাথা ব্যথা করে, দেখাবে : Medicine এর ডক্টর কে
The Bengali Medical Named Entity Recognition.xlsx : The Specialist Classification.xlsx এই ফাইল থেকে বিস্তারিত শুনে, সেগুলোকে ছোট ছোট শব্দে ভাগ করে ফেলা হয়েছে। তারপর সেই শব্দটিকে চিনানোর জন্য ছোট একটি কিওয়ার্ড ইউজ করা হয়েছে। যেমন ধরুন একটি শব্দ - মাথা এটিকে চিনানোর জন্য কিওয়ার্ড ইউজ করা হয়েছে BP . সুতরাং যত জায়গায় মাথা শব্দটি থাকবে, ঠিক সেই সেই জায়গায় এই কিওয়ার্ড ইউজ হবে : BP , যদি এই শব্দটি Gazetteers.txt ফাইলে থাকে তাহলে ট্যাগ করা হয়েছে Y দিয়ে যার মানে আছে, না থাকলে N যার মানে নেই।
কাজ শেষ।
যারা আমার লেখা নিয়মিত পড়েন তারা জানেন আমি ডাটা নিয়ে কাজ করার জন্য AI মডেল এবং বিভিন্ন LLM কে ইউজ করি। কারণ আমার সবসময়েই মনে হয়েছে ডাটার কনটেক্সট বা ব্যাকগ্রাউন্ড বুঝলে - সেটা দিয়ে কাজ করাটা অনেক সহজ হয় rather than programming . তাই পাইথন এর শত শত লাইব্রেরির বিস্তারিত মনে রেখে সেটাকে আবার হাজার হাজার লাইন দিয়ে কোড করার থেকে - সেটি কোথায় ইউজ করতে হবে সেটি জানাটা আমার জন্য গুরুত্তপূর্ণ। কোডার প্রতি প্রতি ফুল রেস্পেক্ট রেখে বলছি - আমি মনে করি মানুষের মস্তিষ্কের আরো বড়ো জায়গায় কন্ট্রিবিউট করা উচিত, কোডিং থেকে। সবাইকে আমার মতো ভাবতে বলছি না, আপনি যেই মাদ্ধমেই শিখেন না কেন, সেটি সম্পূর্ণ আপনার নিজের চয়েস।
আমার এই মডেলের accuracy level খুব একটা ভালো না, প্রায় 70% এর কাছাকাছি। মডেল ওভারফিট। পিউর নন টেক হিসেবে, আমি যে কোনোদিন ডাটা নিয়ে কাজ করে এরকম একটি মডেল তৈরী করতে পারবো - সেটি আমার ধারণার বাইরে ছিল। চেষ্টা করেছি মেশিন লার্নিং কে নিজের মতো করে শিখে, সবার সামনে নিয়ে আসার। AI এবং LLM মডেল গুলো এই ক্ষেত্রে আমার সবচেয়ে ভালো বন্ধু বলতে পারেন।
যদি কোথাও কোনো ভুল হয়ে থাকে,ক্ষমাসুন্দর দৃষ্টি তে দেখে ভুল ধরিয়ে দিলে ভালো লাগবে।
মেশিন লার্নিং এর বেসিক কনসেপ্ট এ হচ্ছে ডাটা। তাই সবসময়ের মতো এবার বলবো - ডাটা নিয়ে কাজের ক্ষেত্রে ডাটা কে স্টাডি করুন, কনটেক্সট বুঝে তারপরে কাজ শুরু করুন। লেখা ভালো লাগলে কমেন্টে জানাবেন।
আর হ্যা, বলতে ভুলে গেছি পুরো মডেলিং করার জন্য qwen এর সাহায্য নিয়েছি।
Last updated