• Parabaas
    Parabaas : পরবাস : বাংলা ভাষা, সাহিত্য ও সংস্কৃতি
  • পরবাস | সংখ্যা ৭৫ | জুন ২০১৯ | প্রবন্ধ
    Share
  • যন্ত্রের বীক্ষণে আধুনিক বাংলা গান : অনিন্দ্য বসু


    ধুনিক বাংলা গানের বাণীর অর্থাৎ lyric-এর কালানুক্রমিক এবং নির্ভরযোগ্য সংকলন খুব বেশি বাজারে পাওয়া যায় না। অন্ততঃ আমি যেটুকু খোঁজ করে জেনেছি, তার ভিত্তিতে বলছি। এরই মধ্যে উল্লেখযোগ্য একটি সংকলন বেশ কিছু বছর আগে সুধীর চক্রবর্তী সম্পাদনা করে বের করেছিলেন। সংকলনটির নাম, ‘আধুনিক বাংলা গান’। প্যাপিরাস থেকে বেরিয়েছিল এই সংকলনটি। এই সংকলনটিতে সুধীরবাবু বাংলা আধুনিক গানের যাঁরা সর্বজনমান্য গীতিকার তাঁদের বয়সের ক্রমানুসারে গানগুলি সাজিয়েছেন। এই বইটির পাতা ওল্টাতে ওল্টাতে ‘প্রস্তাবনা’য় সুধীরবাবু যা লিখেছেন তার একটা জায়গায় এসে আমি একটু থমকে গেলাম। এই থমকে যাওয়াটাই আমার বর্তমান লেখাটির মূল উৎস বলা যেতে পারে। ১৯৩০-৪০ সালের গীতিকারদের প্রসঙ্গে, সুধীরবাবু লিখছেন, ‘...রেকর্ডে গান শোনার উৎসাহী এক নতুন শ্রোতার দল আরও আরও নতুন রেকর্ড, নতুন গানের ডালি অনবরত পেতে চাইত। ...এই নতুন চাহিদায় সাড়া দিয়ে রেকর্ড ও চলচ্চিত্রের প্রয়োজনে যে-সব বিচিত্র গীতকার এগিয়ে এলেন বা যাঁদের আনা হল তাঁদের মধ্যে উল্লেখযোগ্যঃ সজনীকান্ত দাস(১৯০০-৩২), হীরেন বসু(১৯০৩), শৈলেন রায়(১৯০৫-৬৩), অজয় ভট্টাচার্য (১৯০৮-৪৩), বাণীকুমার(১৯০৭-৭৪), সুবোধ পুরকায়স্থ(১৯০৭-৮৪), অনিল ভট্টাচার্য ( ১৯০৮-৪৪), প্রণব রায় (১৯১১-৭৫)।‘ এরপর সুধীরবাবু বলছেন যে এইসব গীতিকারদের লেখায় দেখা যেত ‘এক ধরনের কাল্পনিক বেদনাবিলাস, এবং স্বরচিত দুঃখের মায়া জগতে যেন এঁদের বিচরণ...পরিহাস করে বলেন কেউ কেউ, বাংলা গানের সবচেয়ে অবসেসন্‌ হল ফুল আর মালা। আর কেউ কেউ বলেন, চাঁদ সমাধি বালুচর বাসর আর প্রিয়া।‘ এই অংশটা পড়তে পড়তে একটা প্রশ্ন আমার মনে এল। এই যে ধারণাটা, অর্থাৎ এই সময়কার বাংলা গান মানেই এই সব শব্দের ব্যবহার এবং অতএব বেদনাবিলাস, এর বাস্তব ভিত্তি কতটুকু? অর্থাৎ কি ভাবে এই প্রস্তাবটিকে যাচাই করব? সোজা-সাপটা উপায়টা হল এই সময়কার এই সব গীতিকারদের গানের বাণী জোগাড় করে, খাতা- পেন্সিল নিয়ে বসে প্রতিটি শব্দের ব্যবহারের হিসেব করে তার থেকে একটা সিদ্ধান্তে আসা। এই ভাবনাটাকে নিয়ে নাড়া-চাড়া করতে করতে মনে হল, যে বাংলা গানের লিরিক অর্থাৎ বাণীর ক্রম বিবর্তন নিয়ে যদি কেউ খোঁজ খবর করতে চান, তা হলে সেটার পদ্ধতি কী হবে? কিন্তু সেটা যদি এইভাবে হাতে লিখে হিসেব করতে হয়, তাতে তো অনেক সময় লাগবে এবং এই পদ্ধতি ব্যবহার করে অন্য সময়ের অন্যান্য গানের বাণীর সংগে এই সময়কার বাণীর কতটা ফারাক ইত্যাদি প্রাসঙ্গিক প্রশ্নর উত্তর খুঁজতে গেলে সেটা তো অনেক সময়সাপেক্ষ এবং পরিশ্রমসাধ্য ব্যাপার হয়ে যাবে! তাহলে উপায়টা কী? ভাবতে ভাবতে মাথায় এল আমরা তো বাস করছি digital technology-র যুগে! Computer-এর মত একটি শক্তিশালী যন্ত্র তো আমাদের হাতের নাগালের মধ্যে সব সময় আছে। সেটাকে কোনভাবে ব্যবহার করা সম্ভব কী? ইদানীংকালে Natural Language Processing, Computer Vision, Computational Linguistic ইত্যাদি এলাকায় প্রচুর কাজ হয়েছে, যার ফলে একটি computer-কে ব্যবহার করে একটা ছাপা লেখা থেকে লেখাটির সন্ধানযোগ্য নথি অর্থাৎ searchable text document তৈরী করে ফেলা যায়। যে প্রযুক্তি ব্যবহার করে এই কাজটি করা সম্ভব তাকে বলা হয় Optical Character Recognition বা সংক্ষেপে OCR. একবার এর সাহায্যে একটি ছাপা লেখার ছবি থেকে text তৈরী করা গেলে সেই text-এর সঙ্গে অন্য আরেকটি text-এর কতটা ঘনিষ্ঠ সম্পর্ক, একটি আরেকটির নকল কিনা, ইত্যাদি নানান তথ্য উদ্ধার করা সম্ভব। তবে এইসবেরই জন্য যেসব software পাওয়া যায় সেগুলো মূলতঃ ইংরেজি বর্ণমালা এবং ভাষাকে বিশ্লেষণের জন্য তৈরী। কিন্তু প্রাথমিক ভাবে খোঁজ করে জানলাম যে, google cloud vision API নামে google –এর এক ধরনের software package আছে, যার সাহায্যে বাংলা লেখার ছবি থেকে বাংলা সন্ধানযোগ্য নথি (searchable text) তৈরী করা সম্ভব OCR ব্যবহার করে। তবে এই software-টি সরাসরি ব্যবহার করা সম্ভব নয়। বরং, এটিকে একটি library বা উপাদান বলা চলে, যা একটি computerprogram এ ব্যবহার করা সম্ভব। অতএব, আমি কিছুটা সময় নিয়ে এই google cloud vision API ব্যবহার করে Windows –এর উপযোগী একটি কাজ চালানো গোছের program লিখে ফেললাম।১ এরপর শুরু করলাম ছাপার অক্ষরে গানের বাণী জোগাড় করতে। এখানে কেউ প্রশ্ন তুলতে পারেন, যে আমি internet-এ এই ধরণের নথির সন্ধান করলাম না কেন? উত্তর হল, করলাম, কিছু পেলামও। যেমন অজয় ভট্টাচার্য, বা হীরেন বসু, এঁদের কিছু গান পেলাম। কিন্তু আমি মূলতঃ নির্ভর করলাম সুধীরবাবুর করা সংকলনটির ওপর। প্রথমে সুধীরবাবুর বইয়ে এই সব গীতিকারদের গানের lyric-এর পাতাগুলি-কে scan করে বেশ কিছু image file তৈরী করলাম। এরপর আমার এই program-এর সাহায্যে google vision API-কে ব্যবহার করে আমি একে একে অজয় ভট্টাচার্য, অনিল ভট্টাচার্য, সুবোধ পুরকায়স্থ, বাণীকুমার, শৈলেন রায়, প্রণব রায়, সজনীকান্ত দাস ও হীরেন বসুর প্রায় চল্লিশটি গানের searchable text তৈরী করলাম। [এইখানে বলে রাখি, এই image file গুলো google drive এ তুলে দিয়ে, এই file-গুলিতে right-click করে ‘Open with google docs’ এই menu-টি বেছে নিলে, google docs ভেতরে ভেতরে এই cloud vision API ব্যবহার করে ছবিটি থেকে একটি text তৈরী করে নিতে পারে। তবে সেটাও যথেষ্ট সময়সাপেক্ষ হয়ে দাঁড়ায় যদি অনেকগুলি text তৈরী করতে হয়] ‘এই text-গুলি Unicode (UTF-8) encoding ব্যবহার করে তৈরী করা হল। যাই হোক। এইবার প্রশ্ন হল, এই text বা নথিগুলি নিয়ে অতঃপর কী করা যায়? ভাবতে ভাবতে মনে এল, যে ইদানীং কালে word cloud নামক শব্দ-চিত্রটি খুব জনপ্রিয় হয়েছে। এক বা একাধিক নথিকে এই word cloud বা শব্দ-মেঘ সৃষ্টিকারী software-এর সাহায্যে একটি চিত্রে পরিণত করা যায় যেখানে এই শব্দগুলি একটি মেঘমালার মত জড়ো হবে, আর যে শব্দটি যত বেশিবার ব্যবহৃত হয়েছে, তার অক্ষরের আকার ততো বড় হবে। Net-এ খুঁজতে গিয়ে মিলল, word cloud সৃষ্টিকারী একটি সাইটের — https://worditout.com/

    অতঃপর আমার এই চল্লিশটি বাণীর text বা নথিকে একত্রিত করে এই সাইটের সাহায্যে যে শব্দ মেঘটি সৃষ্টি করা গেল্, তার ছবিটি নীচে দিলাম


    এই শব্দ মেঘ তৈরী করার সময় আমি কতকগুলো বহুল ব্যবহৃত শব্দ – ‘আমি তুমি আমার তোমার তোর মোর কে কেন যদি সে যে না হ্যাঁ’ এই শব্দগুলো বাদ দিয়েছি (stop word)। এখন এই শব্দ-মেঘটিকে ভাল করে দেখলে আমরা সহজেই দেখতে পাচ্ছি যে ‘ফুল’ বা ‘গান’ এই লিরিকগুলোতে বহুল ব্যবহৃত। এছাড়া ‘প্রিয়’ শব্দটিরও ব্যবহার হয়েছে অনেকবার। অর্থাৎ সুধীরবাবুর প্রস্তাবটি যেন সত্যি বলেই মনে হচ্ছে। কিন্তু এটি হচ্ছে একেবারেই প্রাথমিক বিশ্লেষণ। এরপর মাথার মধ্যে যে প্রশ্নটা অবধারিত ভাবে এসে পড়ল, সেটা হল যে, এই গানগুলোর মধ্যে কতটা মিল? কতটাই বা ফারাক? এটা মাপার একটা পদ্ধতি Natural Language Processing –এ খুব ব্যবহার করা হয়। এই পদ্ধতিটির নাম cosine similarity measure. সহজ কথায় ব্যাপারটা বলতে চেষ্টা করছি। একটি নথি বা document-কে যদি আমি একটি শব্দের ঝুড়ি ভাবি, তাহলে, একটি নথিকে কতকগুলি শব্দ ও তার ব্যবহারের পরিসংখ্যার ক্রমিক সারণী হিসেবে ভাবতে পারি। অর্থাৎ ধরা যাক একটি বাক্য ‘আমি তোমায় বারণ করলাম, তোমায় বললাম না, তুমি তাও শুনলে না!’ এই বাক্যটি-কে একটি শব্দ সারণী হিসেবে ভাবা যায়ঃ

    আমি -১
    তোমায় – ২
    বারণ-১
    করলাম – ১
    বললাম – ১
    না -১
    তুমি -১
    তাও – ১
    শুনলে -১
    না -২

    এই রকম আরো একটি বাক্য ‘তোমায় পড়েছে মনে আজি এ শ্রাবণ দিনে’ তার চেহারাটা হবে

    তোমায় – ১
    পড়েছে -১
    মনে -১
    আজি – ১
    শ্রাবণ -১
    এ- ১
    দিনে -১

    এবার এই দুটো বাক্যতে যা যা শব্দ ব্যবহার করা হয়েছে তার একটা সামগ্রিক সারণী তৈরী করে প্রতিটি বাক্য-কে সেই ছাঁচে যদি ভাঙি তাহলে দুটি বাক্যকেই একই শব্দের সারণী হিসেবে সাজানো সম্ভব। শুধু কিছু কিছু শব্দের ক্ষেত্রে তার পরিসংখ্যা শূন্য (0) হতে পারে। যেমন উপরে উল্লেখ করা text দুটির সামগ্রিক শব্দ সারণিতে প্রথম বাক্যর চেহারাটা দাঁড়াবেঃ

    আমি -১
    তোমায় – ২
    বারণ-১
    করলাম – ১
    বললাম – ১
    না -১
    তুমি -১
    তাও – ১
    শুনলে -১
    না -২
    পড়েছে -০
    মনে -০
    আজি – ০
    শ্রাবণ -০
    এ- ০
    দিনে -০

    এই ভাবে একাধিক text-কে এই শব্দ সারণী হিসেবে লেখা সম্ভব। শব্দের পরিসংখ্যাটি কে computer এর ভাষায় term frequency বা সংক্ষেপে TF বলা হয়ে থাকে। এইবার যদি আমরা একগুচ্ছ document বা নথির-এর মধ্যে একটি শব্দ কতটা গুরুত্বপূর্ণ সেটা বুঝতে চাই সে ক্ষেত্রে প্রতিটি শব্দ কতগুলো document-এ ব্যবহার হয়েছে তার সংখ্যা মাপা যেতে পারে।[ প্রকৃত পরিমাপটি কিছুটা জটিল এবং logarithmic scale মাপা হয়] তাকে শব্দটির Inverted Document Frequency বা IDF বলা হয়ে থাকে। অতঃপর একটি শব্দের সার্বিক গুরুত্ব মাপতে প্রতিটি শব্দের TF ও IDF এর গুণফল ব্যবহার করে প্রতিটি বাক্যের একটি সারণী তৈরী সম্ভব এই সামগ্রিক শব্দগোষ্ঠীর জন্য। এই সংখ্যার সারণীগুলিকে একটি বহুমাত্রিক শব্দ জগতের একটি vector বা অভিমুখী রাশি হিসেবে ধরা যায়। দুটি এই ধরণের অভিমুখী রাশির মধ্যে যে কৌণিক দূরত্ব কল্পনা করা যায় তাকে একটি নির্দিষ্ট পদ্ধতি ব্যবহার করে মাপা সম্ভব। তাকেই cosine similarity measure বলা হয়ে থাকে।২

    আমি আমার program-টিকে আরও একটু উন্নত করে, দুটি নথির মধ্যে cosine similarity measure মাপার পদ্ধতিটিও program-এর মধ্যে তৈরী করলাম। অতঃপর মাপার পালা। নীচে কয়েকটী গানের জুটির মধ্যে এই সাদৃশ্য মাপার ফল দিচ্ছি।

    Ajay_e_gan_tomar.txt     anil_bhatta_e_pathe_jokhon.txt     00.0314563
    anil_bhatta_e_pathe_jokhon.txt     anil_bhatta_tumi_amar_lukiye.txt     00.0114377
    anil_bhatta_e_pathe_jokhon.txt    bani_k_aha_asharer.txt    00.0266356
    anil_bhatta_e_pathe_jokhon.txt     hiren_aji_shankhe_shankhe.txt    00.0010372
    anil_bhatta_tumi_amar_lukiye.txt    anil_bhatta_tumi_amar_lukiye.txt     01.0000000
    bani_k_aha_asharer.txt    bani_k_aha_asharer.txt     01.0000000

    সাদৃশ্যের কৌণিক মাপ হিসেবে এই লিরিক বা বাণীগুলি খুব একটা পরস্পরের কাছাকাছি নয়। আরেকটা জিনিস লক্ষ করার হল যে একই নথি নিজের সংগে তুলনায় একেবারে ১০০ ভাগ সদৃশ কারণ cosine এর মাপ ১.00 যা তখনই সম্ভব যখন একটি নথির থেকে আরেকটি নথির কৌণিক দূরত্ব শূন্য। অর্থাৎ পরিমাপটি নির্ভরযোগ্য। কিন্তু এই হিসেব বলছে যে যেকোন দুটি ভিন্ন লিরিকের মধ্যে সাদৃশ্য খুবই অল্প। অর্থাৎ শুধুমাত্র আক্ষরিক শব্দের বিচারে এই সময়কার দুটি লিরিকের মধ্যে খুব কিছু মিল পাচ্ছি না, যদিও বেশ কিছু lyric-এই ‘ফুল’ বা ‘গান’ শব্দগুলি ব্যবহার করা হয়েছে।

    এতক্ষণ পর্যন্ত আমরা আক্ষরিক মিল খুঁজছিলাম। তবে এই মিলের পদ্ধতিতে শুধুমাত্র একই শব্দের ব্যবহার খুঁজে পাওয়া সম্ভব। আর এক ধাপ এগিয়ে যেটা করা যায়, তাকে বলে stemming. অর্থাৎ যে সমস্ত শব্দগুলি একই মূল শব্দের থেকে সৃষ্টি হয়েছে, সেগুলো থেকে ডাল-পালা ছেঁটে ফেলে তাদের মূল শব্দ রূপে নিয়ে গিয়ে তবে তাদের ব্যবহারের তুলনামূলক বিচার করা। যেমন ধরা যাক, ‘ফুল’, ‘ফুলের’ ‘ফুলগুলি’ ইত্যাদিকে মূল শব্দ ‘ফুল’ হিসেবে বিচার করা। সেটাও করা সম্ভব কতকগুলো বিশেষ পদ্ধতি ব্যবহার করে। আর এর থেকে এক ধাপ এগিয়ে কোন শ্রোতা বা পাঠক যদি এই প্রশ্ন তোলেন যে এইসময়কার গানগুলি অর্থের দিক থেকে কতটা কাছাকাছি? তাহলে? Evgeniy Gabrilovich এবং Shaul Markovitch৩ এই নামের দুই গবেষক 2009 সালে একটি গবেষণা পত্রে লেখেন যে দুটি text-এর মধ্যে আক্ষরিক শব্দের ব্যবহারের তুলনা না করে যদি আমরা শব্দগুলি যে অর্থে ব্যবহার হয়েছে তার তুলনা করি, তাহলে সেটা আরও অনেক প্রাসঙ্গিক হবে। কারণ যেকোন text-ই তো কতকগুলো ভাবনা বা ধারণাকে পাঠকের কাছে পৌঁছে দিতে চাইছে। এনাদের ব্যবহৃত পদ্ধতিটি-কে বলা হয় Explicit Semantic Analysis. সহজ করে বলার চেষ্টা করছি। Internet –এ Wikipedia-কে একটি বিষয় বা ভাবনার কোষগ্রন্থ হিসেবে যদি আমরা ভাবি, তাহলে, Wikipedia-তে প্রকাশিত যেকোন প্রবন্ধ একটি বিশেষ বিষয়ের চর্চা করছে বলে ভাবতে পারি। এইবার যদি একটি কোন text-এ যে শব্দগুলি ব্যবহার হয়েছে সেই শব্দগুলি যে যে Wikipedia-র প্রবন্ধে ব্যবহার হচ্ছে, সেই সেই প্রবন্ধের ভাবনার সঙ্গে text-টির যোগাযোগ আছে সেটা ভাবি, তাহলে text টিকে আমরা অন্যরকম ভাবে দেখলে, এটি কয়েকটি ভাবনার সমষ্টি বলে ভাবতে পারি। অতঃপর শব্দবিশ্বের মত ভাবনাবিশ্বের একটি vector হিসেবে text-টিকে কল্পনা করলে (বিভিন্ন মাত্রায় এই vector এর পরিমাপ তৈরী করার একটি বিশেষ গাণিতিক পদ্ধতির কথা এঁরা বলেছেন), দুটি এমন text-এর যে কৌনিক দূরত্ব আমরা হিসেব করব, সেটি তাদের মধ্যেকার ভাবনা বা অর্থগত দূরত্ব হিসেবে ভাবা যেতে পারে!

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


    তথ্য সূত্রঃ

    ১) এই cloud vision API সম্বন্ধে জানতে হলে এই সাই্ট্‌-এ যানঃ https://cloud.google.com/vision/docs/

    ২) cosine similarity সম্বন্ধে জানতে হলে এই সাইট্‌-এ যানঃ https://www.machinelearningplus.com/nlp/cosine-similarity/

    ৩) Evgeniy Gabrilovich এবং Shaul Markovitch-এর গবেষণাপত্রটি পড়তে চাইলে এই সাইট্‌-এ যানঃ https://www.jair.org/index.php/jair/article/view/10595/25347



    অলংকরণ (Artwork) : অলংকরণঃ লেখক
  • এই লেখাটি পুরোনো ফরম্যাটে দেখুন
  • মন্তব্য জমা দিন / Make a comment
  • (?)
  • মন্তব্য পড়ুন / Read comments