হাতেকলমে 'বাংলা' ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং
মানুষের এক্সটেনশন
Our intelligence is what makes us human, and AI is an extension of that quality.
– Yann LeCun, Professor, New York University
হার্ডকপি পাওয়া যাচ্ছে রকমারি, দারাজ সহ বেশকিছু বুকস্টলে। ক্লিক করুন এখানে এবং এখানে।
এই বইটার প্রায় ৫০-৫৫% কনটেন্ট আছে অনলাইনে। পাণ্ডুলিপি জমা দেবার পরও অনেক কনটেন্ট ফেলে দিয়ে নতুন কনটেন্ট যোগ করেছি যুগের দাবিতে। তবে, হার্ডকপি বইয়ের বাকিটা আস্তে আস্তে আপলোড করা হবে অনলাইনে। সংকলিত বইয়ের 'ইন-ডিজাইন' ফরম্যাটের 'নন-ইউনিকোড' থেকে ইউনিকোডে আনা একটা দুস্কর কাজ। এর পাশাপাশি অনলাইনে জুপিটার নোটবুক কনভার্সন দেখে নিন এই স্যাম্পল চ্যাপ্টারে।
তবে, হার্ডকপি বইয়ে সময় দেয়া হয়েছে বেশি। অনলাইন ভার্সন, এডিটিং ছাড়া।
অলসতা এবং উদ্ভাবনা
আমি একজন অলস মানুষ। সেটার ‘সার্টিফিকেট’ পাবেন স্বাতীর কাছ থেকে। দিনের বেশ বড় একটা সময় ‘নষ্ট’ করি, কিভাবে পৃথিবীর অন্য মানুষদেরকেও অলস বানানো যায়। সত্যি বলছি! আমার ধারণা, মানুষের কাজ আরো অনেক বড়। কোথায় আমরা ছুটবো গ্রহ থেকে গ্রহান্তরে, নিজেদেরকে খুজতে - আমরা এখনও পড়ে আছি সেই একঘেয়ে একই কাজ করতে - প্রতিদিন। আমি বসে আছি কবে আমরা হব 'ফ্ল্যাশ গর্ডন', যাবো পৃথিবীর মতো আরো কিছু গ্রহের খোঁজে। পাশাপাশি, মহামারী এবং প্রাকৃতিক বিপর্যয়গুলো থেকে বাঁচার উদ্ভাবনা আনতে হবে আমাদেরকেই। তবে, আমাদের জীবদ্দশায় 'সার্বজনীন ন্যূনতম আয়' অর্থাৎ "ইউনিভার্সাল বেসিক পে" চলে এলে মুক্তি পাব এই একঘেয়ে কাজ থেকে। কাজ করবে যন্ত্র, মানুষ করবে উদ্ভাবনা, ক্রিয়েটিভ কাজ।
তবে, আমাদের প্রতিদিনের যে কাজগুলো ‘রিপিটেটিভ’ অর্থাৎ যে কাজগুলোকে বার বার করতে হয় - সেগুলোকে যন্ত্রের কাছে পাঠানোর জন্য আমার 'অলসতা' নেই। আমাকে এমন একটা 'রিপিটেটিভ' কাজ বলুন, যেটাকে পাঠানো যায় না যন্ত্রের কাছে? এই যে বইটা লিখছি, আগে টাইপ করে লিখে পাঠাতাম প্রকাশকের কাছে, এখন টাইপের মত জিনিসগুলোকেও অসহ্য মনে হয়। মানুষ ক্রিয়েটিভ, সে কম্পিউটারের সামনে বসে কেন আংগুল দিয়ে টাইপ করবে? সে মুখে বলবে আর কাজ হয়ে যাবে। যেমন, আমি মুখে বলছি বলে বইটা লেখা হয়ে যাচ্ছে। অথবা - সামনে চিন্তা করতে করতেই লেখা হয়ে যাবে বই। বেশি দেরি নেই সেই সময়ের। নিউরোসাইন্স এবং নিউরাল নেটওয়ার্ক চলে আসছে পাশাপাশি।
তবে, কথা দিয়ে লেখা তো আর এমনি এমনি হচ্ছে না? যন্ত্র আমার মুখের আওয়াজ থেকে শব্দগুলোকে ধাপে ধাপে বুঝে নিয়ে লিখে ফেলার চেষ্টা করছে। প্রচুর ভুল হচ্ছে, আর সেই ভুল থেকেই শিখছে যন্ত্র। ভুলগুলোকে ঠিক করে দিচ্ছি আমরা মানুষ। যখন আমার কথা বুঝতে পারছি না, তখন সেই শব্দের ডিকশনারিতে কাছাকাছি কোন শব্দকে ব্যবহার করতে পারে - সেটার 'প্রবাবিলিটি ডিস্ট্রিবিউশনে' ফেলে দেবার চেষ্টা করছে। এই ভুল হবার কারণে টাইপ করে এই বইটা লিখতে যে সময় লাগতো, তার থেকে চারগুণ বেশি সময় লাগছে এমুহুর্তে। কারণ, যন্ত্র এখনো শিখছে, বাংলায় শেখার জন্য এখনও তার শৈশবকাল চলছে। তবে, এমুহুর্তে এর পেছনে চারগুণ সময় দেওয়ার উদ্দেশ্য হচ্ছে ভবিষ্যতে সে কমিয়ে আনবে সময়। টাইপ থেকেও। এই যন্ত্রকে শেখানোর জন্য সাহায্য চাইছি আপনাদের।
ভাষা একটা 'কমপ্লেক্স' কাজ
মেশিন লার্নিং এর যে দক্ষতাটা এখন শিল্পের পর্যায়ে গিয়েছে - বিশেষ করে মানুষের সাথে যন্ত্রের যোগসুত্র স্থাপনে ‘ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং’ অংশটা অন্যতম। যন্ত্রকে যে মানুষের ভাষার মতো এতো কমপ্লেক্স জিনিসটাকে যে শেখানো যায় সেটা একটা বড় অর্জন। এই ভাষার ব্যাপারে আমি এখনো অনেক কিছু বুঝতে হিমশিম খেয়ে যাই। যেমন, কেউ একটা কথা বলল, আমি শুনলাম - তবে সেই কথাটা যে খোঁচা ছিল সেটা মাথায় খেললো রাত্রে ঘুমানোর আগে। ভাষার ব্যাপারে আমি হয়তোবা এখনো ‘টিউবলাইট’। অথচ, এখন মানুষের বলার ভঙ্গি, চেহারার ‘অঙ্গভঙ্গিমা’ থেকেই যন্ত্র ‘ক্লাসিফাই’ করতে পারে কোন ক্যাটাগরিতে পড়বে সেই বলা কথাগুলো।
ভাষা কী?
ব্যাপারটা বোঝানো কষ্টের। দেখুন, এই ভাষার ডেফিনেশন দিতে গিয়ে উইকিপিডিয়াও হিমশিম খেয়ে যাচ্ছে।
ভাষার ডেফিনেশন
ভাষা ধারণাটির কোন সুনির্দিষ্ট, যৌক্তিক ও অবিতর্কিত সংজ্ঞা দেয়া কঠিন, কেননা যেকোন কিছুর সংজ্ঞা ভাষার মাধ্যমেই দিতে হয়। তাই ভাষার আত্মসংজ্ঞা প্রদান দুরূহ। তবে ভাষার একটি কার্যনির্বাহী সংজ্ঞা হিসেবে বলা যায় যে ভাষা মানুষের মস্তিষ্কজাত একটি মানসিক ক্ষমতা যা অর্থবাহী বাকসংকেতে রূপায়িত (বাগযন্ত্রের মাধ্যমে ধ্বনিভিত্তিক রূপে বা রূপে) হয়ে মানুষের মনের ভাব প্রকাশ করতে এবং একই সমাজের মানুষের মধ্যে যোগাযোগ স্থাপনে সহায়তা করে। ভাষা মানুষে-মানুষে যোগাযোগের প্রধানতম বাহন।
-- উইকিপিডিয়া
আমরা অংকের মানুষ, ব্যাপারটাকে একটু সোজা করে নিয়ে আসি।
একটা ভাষায় যোগাযোগ করতে হলে দরকার একটা নির্দিষ্ট সংখ্যক ভোকাবুলারি। একটা নির্দিষ্ট সমাজের মধ্যে নিজেদের চিন্তা ভাবনা প্রকাশ করতে এই ‘ভোকাবুলারি’র মধ্যেই আমরা থাকি। ‘ভোকাবুলারি’র বাইরে কিছু বললে আপনি হয়তোবা সেটা বুঝবেন না। আমরা বাংলা ভাষায় কথা বললে সাধারণতঃ বাংলা শব্দকোষ এর বাইরের শব্দগুলো নিয়ে নিজেদের ভাব প্রকাশ করব না। এর অর্থ হচ্ছে প্রতিটা ভাষায় আমাদের ‘ভোকাবুলারি’ প্রায় নির্দিষ্ট। মানুষ শৈশবকালে ধীরে ধীরে এই ভোকাবুলারি অংশবিশেষ শিখেই বড় হতে থাকে। তবে, বড় হয়েও যখন আমরা এক শব্দের অর্থ বুঝি না - তখন রেফারেন্স হিসেবে অভিধান, অথবা শব্দকোষ ব্যবহার করি যাতে ভবিষ্যতে সেই শব্দগুলোকে ব্যবহার করতে পারি।
কম্পিউটার কিভাবে ভাষা বোঝে?
কম্পিউটারের নিজের ভাষা হচ্ছে সংখ্যা। আর, সে কারণেই আমরা যেভাবে কথা বলি অথবা লিখি - সেগুলোকে কম্পিউটারে দেবার আগে সংখ্যায় পাল্টে নিতে হয়। যন্ত্র যেহেতু অংকের মডেলিংয়ে ভালো, সে কারণেই এই ভাষাকে যান্ত্রিক ভাষায় অর্থাৎ সংখ্যায় পরিবর্তন করে নেওয়ার ধারনাকে যন্ত্রকে শিখিয়ে দিলেই আমাদের কাজ কমে আসে। কম্পিউটারকে একটা ভাষা শেখানোর জন্য একটা ভাষার সবচেয়ে ছোট ইউনিট অক্ষর হলেও একটা বাক্যে শব্দগুলোর কোনটা কোথায় বসেছে সেটার উপর 'ইন্টারপ্রিটেশন' আসে।
ছোটবেলায় আমরা যখন কথা বোঝা বা বলা শুরু করি তখন আমাদের অক্ষর জ্ঞান প্রয়োজন হয়না। সেই একইভাবে যন্ত্রকে যখন আমরা ভাষা শেখাতে যাব তখন অক্ষরজ্ঞান থেকেও একটা বাক্যে শব্দগুলোর 'প্লেসমেন্ট' ভাষাকে বোঝাতে সাহায্য করে। আমি যে জিনিসটা বলতে চাইছি, মানুষ যেভাবে শেখে একটা যন্ত্রকেও সেভাবে শেখাতে হবে। অক্ষর দিয়ে যেভাবে কোন ভাষার আদান-প্রদান করা যায় না, সেভাবে একটা বাক্যের ভেতরে শব্দগুলো কখন, কিভাবে অথবা কতবার ব্যবহার হয়েছে সেটার উপরে মনের ভাব প্রকাশ করার ধারণা করা যায়। এ ব্যাপারে ভেতরের পুরো ব্যাপারটা হাতে-কলমে করতে করতেই শিখে যাব আমরা।
একটা কথা বলে রাখি চুপিসারে। যন্ত্র যদি 'ভাষা'র মতো কমপ্লেক্স জিনিস নিয়ে কাজ করতে পারে - তাহলে এই যন্ত্রকে দিয়ে সব কাজ করানো সম্ভব। পৃথিবীর সবচেয়ে কমপ্লেক্স কাজ হচ্ছে 'কন্ট্রাক্ট অ্যানালাইসিস', যার উপর চলছে বড় বড় কোম্পানি, আইনি এবং আর্থিক সংস্থাগুলো। সেখানে যখন 'ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং' সহায়তা দিচ্ছে সংস্থাগুলোকে, তাহলে মানুষকে খুঁজতে হবে নতুন কাজ। তবে, এই অটোমেশন মানুষকে খুলে দিচ্ছে নতুন কাজের সুযোগ, যেগুলো নিয়ে চিন্তা করিনি আমরা। কাজ হারাবে না মানুষ, বরং 'রি-স্কিলিং' হবে খাত জুড়ে। এই যেমন আমি 'ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং' নিয়ে পাচ্ছি না দক্ষ মানুষ। বিশেষ করে বাংলায়।
কাদের জন্য এই বইটা প্রযোজ্য?
'ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং' নিয়ে এই বইটিকে লেখা হয়েছে আমার আরেকটি বই ‘হাতেকলমে পাইথন ডিপ লার্নিং’ এর সহযোগী বই হিসেবে। নিউরাল নেটওয়ার্কের ধারনার পাশাপাশি বাংলায় ‘ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং’ নিয়ে বেশ কয়েকটা অধ্যায় লিখেছি সেখানে। ‘এন্ড টু এন্ড’ অর্থাৎ ‘সেন্টিমেন্ট এনালাইসিস’ অ্যাপ্লিকেশন তৈরি করতে 'ন্যাচারাল ল্যাংগুয়েজ প্রসেসিং' ব্যবহার করা হয়েছে ওই বইটাতে। তবে, ‘হাতেকলমে পাইথন ডিপ লার্নিং’ বইটার পৃষ্ঠা সংখ্যা বেড়ে যাওয়াতে বেসিক অর্থাৎ শুরুর দিকে ‘ন্যাচারাল ল্যাংগুয়েজ প্রসেসিং’ নিয়ে আলাপগুলোকে কমিয়ে এনেছিলাম তখন। আর এ কারণেই যারা নিউরাল নেটওয়ার্ক সম্বন্ধে জানেন অথবা ‘হাতেকলমে পাইথন ডিপ লার্নিং’ বইটা শুরু করেছেন তবে, ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং নিয়ে কিছু দ্বিধাদ্বন্দে আছেন তাদের জন্য এই বইটি প্রযোজ্য। আগের বইগুলোর মত এখানে তাত্ত্বিক ব্যাপারগুলো থেকে হাতেকলমের উপরে জোর দেওয়া হয়েছে বেশি। হাতেকলমে এবং নিজের চোখের সামনে যখন একটা জিনিস কাজ করে, তখন সেই জিনিসটি একটা ভালো ফাউন্ডেশন দেয় ভবিষ্যৎ ধারণায়।
'ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং' জিনিসটা কি?
যন্ত্রকে ক্ষমতা দেয়া
Natural Language Processing or NLP is a field of Artificial Intelligence that gives the machines the ability to read, understand and derive meaning from human languages.
কৃত্রিম বুদ্ধিমত্তার যে অংশটুকু যন্ত্রকে মানুষের মত করে মানুষের ভাষা ব্যবহার করার ক্ষমতা দেয় সেটাকে 'ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং টুল' বলতে পারি। এই টেকনিক ব্যবহার করে ভাষার ভেতরের ‘লিঙ্গুইস্টিকস’ অর্থাৎ ‘ভাষাতত্ত্ব’ জ্ঞান সহ অথবা ছাড়াই একটা অ্যাপ্লিকেশন বিভিন্ন স্ট্যাটিসটিক্যাল মডেল ব্যবহার করে বাস্তবসম্মত সমস্যাগুলোকে সমাধান করতে পারে। এই মানুষের ভাষাকে বুঝতে, জানতে, শিখতে, লিখতে, পড়তে ইত্যাদি করার জন্য যত ধরনের টুল ব্যবহার করা হয় সেগুলোকে ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিংয়ের সহায়ক টুল বলতে পারি।
একটা আক্ষরিক শব্দকে বুঝতে সেই শব্দের ভেতরে যে ট্রানসফর্মেশন প্রয়োজন সেটাকে আমরা ‘কম্পিউটেশনাল রিপ্রেজেন্টেশন’ বলতে পারি। আবার, এই শব্দের ‘রিপ্রেজেন্টেশন’কে ঠিকমতো বুঝতে, বিশেষ করে ডাটা থেকে শেখার জন্য প্রয়োজন ‘মেশিন লার্নিং’। যন্ত্রকে মানুষের ভাষা বুঝতে শুরু থেকে শেষ পর্যন্ত অনেকগুলো ট্রান্সফরমেশনের মধ্য দিয়ে যেতে হয় সেগুলোর আলাপ করবো রাস্তায় নামলে। সামনে টোকেনাইজেশন, ভেক্টর, এমবেডিং ইত্যাদি ইত্যাদি টার্মগুলো নিয়ে হাতেকলমে দেখবো।
কেন 'ন্যাচারাল ল্যাংগুয়েজ প্রসেসিং' শিখবেন?
‘ওকে গুগল’, ‘সিরি’, ‘অ্যালেক্সা’, ‘গুগল ট্রান্সলেট’ ধরনের প্রোডাক্টগুলো এখন ব্যবহার হচ্ছে আমাদের বাসায় এবং অফিসে। আমাদের পরবর্তী প্রজন্ম ডেক্সটপ কম্পিউটারের সামনে বসলেও গুগল সার্চ করে ‘ওয়েব’ ব্রাউজারের মাইক্রোফোনে চাপ দিয়ে। ‘ওকে গুগল’, ‘সিরি’, ‘অ্যালেক্সা’ দিয়ে চালাতে পারেন বাসার অফিসের লাইট, ফ্যান, টিভি, গ্যারেজ খোলার মতো হাজারো অ্যাপ্লিকেশন। গুগল সার্চ করার সময় সেই শব্দকে মিলিয়ে আর কোন কোন বাক্য সার্চ করা হয়েছে সেই প্রেডিকশন সময় কমিয়ে নিয়ে আসছে আমাদের সার্চে। এই সবগুলো প্রোডাক্ট এর পেছনে কাজ করছে ‘ন্যাচারাল ল্যাংগুয়েজ প্রসেসিং’।
৪১ বিলিয়ন ডলারের বাজার
The global Natural Language Processing (NLP) market size is expected to surpass USD 41 billion by 2025, at a CAGR of ~23%. This is owing to the growing demand for analyzing the data generated from conversations, social media, and other sources to enhance the customer experience.
-- Adroit Market Research
বাংলায় 'ন্যাচারাল ল্যাংগুয়েজ প্রসেসিং' নিয়ে ইংরেজির মতো সেরকম রিসোর্স না থাকলেও সেটা তৈরি করতে হবে আমাদেরই। আর, সেটা থেকে প্রচুর অ্যাপ্লিকেশন অপেক্ষা করছে সামনেই। বাংলায় আইনি সাহায্য নিয়ে প্রচুর কাজ পড়ে আছে সামনে। একটা বড় বাজার অপেক্ষা করছে, সেটার জন্য তৈরি হতে হবে আমাদের। ইংরেজি বাংলা যাই হোক, ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং ঢুকে যাচ্ছে সব জায়গায়। আমি চাইছি, বাংলায় প্রচুর ডাটাসেট আসুক আপনাদের হাত ধরে। তাহলেই বাংলা হবে আসল 'প্রযুক্তির ভাষা', যখন সেটার ব্যবহার হবে সব মাত্রায়।
'ন্যাচারাল ল্যাংগুয়েজ প্রসেসিং' শেখার পেছনে কয়েকটা ট্রেন্ডের কথা বলা যেতে পারে। প্রথমত: বর্তমানে এই ইন্টারনেটের যুগে আমরা নিজেরাই জেনারেট করছি প্রচুর ডাটা প্রতিমুহূর্তে। সঙ্গে থাকা প্রতিটা ডিভাইস প্রতি সেকেন্ডে এত লগ জেনারেট করছে, এখন এগুলোই আমাদের জন্য ট্রেনিং ডেটা। ডেটার পাশাপাশি প্রচুর ডেটা স্টোর করার ডিভাইসগুলোর দাম কমছে লাফিয়ে লাফিয়ে। আমরা নিজেদের চোখেই দেখছি, অসাধারণ প্রসেসিং স্পিড এবং ডেটাকে প্রসেস করার জন্য ‘স্পেশালাইজড’ প্রসেসর দিয়ে ভর্তি আমাদের কাজের পরিবেশ। এই মুহূর্তে ডাটার এতো ক্ষমতা থেকে এই সুবিধাগুলো না নিতে পারলে ভবিষ্যতে আমরা পিছিয়ে পড়বো আরও।
‘ম্যাথমেটিক্স’ অথবা ‘লিনিয়ার অ্যালজেবরা’ নিয়ে আমাদের কিছুটা ধারনা থাকলেও আমরা চেষ্টা করব - ‘ন্যাচারাল ল্যাংগুয়েজ প্রসেসিং’ ব্যাপারটা হাতে-কলমে দেখার জন্য। আমার গত চারটা বই লেখার অভিজ্ঞতা থেকে এটা বলতে পারি, আমরা যখন কোন জিনিস চোখের সামনে হতে দেখি এবং এর ভেতরে ট্রানসফর্মেশনে কি কি ঘটছে সেটা যদি স্টেপ বাই স্টেপ বুঝতে পারি তাহলে পুরো ব্যাপারটাই সহজ হয়ে যায় আমাদের জন্য।
শুরুতেই বলে নিচ্ছি - এ ব্যাপারে আপনাদের 'আর্টিফিশিয়াল ইন্টেলিজেন্ট' এক্সপার্ট অথবা 'ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং'য়ে বোদ্ধা হবার প্রয়োজন নেই। আমি আপনাদের গাইড এই পুরো রাস্তায়। পুরো ব্যাপারটাকে ঠিকমতো 'কন্টেক্সটচুয়ালাইজেশন' লেভেলে আনতে সাহায্য নিয়েছি গুগলের। বিশেষ করে লরেন্স মরোনির কোর্সেরার কোর্স এবং আরোও অনেকের (কৃতজ্ঞতা দেখুন) কাছ থেকে। এখন কোলাবোরেশনের যুগ। সেটার একটা ভালো ধারণা পাবেন রাস্তায় নামলে।
চলুন, যন্ত্রের সাথে কথা বলি বাংলায়!