হাতে-কলমে পাইথন: পর্ব ৭ (কোন শব্দ কয়বার?, শেষ পোস্ট)

June 17, 2016

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

"is": 20,
"been": 15,
"bangladesh": 2,
...

পাইথনে একটা বিশেষ টাইপ আছে, dict বা ডিকশনারী। ডিকশনারী হল একটা হ্যাশমাপ বা কি-ভ্যালু স্টোরের মত ব্যাপার। উদাহরণ,

scores = {}

# setting values
scores['aniruddha'] = 0
scores['alim'] = 1
scores['iftekhar'] = 10
scores['rayhan'] = 10e9

# getting values
scores.get('aniruddha')
scores.get('alim')
scores.get('iftekhar')
scores.get('rayhan')

আশা করি ব্যাপারটা ক্লিয়ার হয়েছে! এখানে aniruddha, alim, rayhan, iftekhar হল key আর 0, 1, 10, 10e9 হল value। আপনারা নিজে ডিকশনারী বানিয়ে একটু গুতাগুতি করে দেখুন তো!

কোন শব্দ কতবার

এই গণনা করার জন্য আমরা ডিকশনারী ব্যবহার করতে পারি। ডিকশনারীতে ওই শব্দের কী এর জন্য ভ্যালু 0 থেকে শুরু করে প্রতিটা অকারেন্সের জন্য +1 করে বাড়াতে পারে। আর স্ট্রিং থেকে শব্দ আলাদা করার জন্যও ফাংশন আছে, split()। জোস, শুরু করি।

sentence = "C is hard but powerful"
sentence_words = sentence.split()
sentence_words

১। এবার আমাদের আসল প্রোগ্রামের মধ্যে একই কায়দায় একটা headline_words ভ্যারিয়েবল তৈরি করুন তো লুপের মধ্যে, আর হেডলাইনের টেক্সট স্প্লিট করার ভ্যালু অ্যাসাইন করুন! headline_words = …

২। তারপর, headline_words এর প্রতিটা ওয়ার্ড নিয়ে কাজ করার জন্য একটি লুপ তৈরি করুন।

আমাদের লুপটির চেহারা এখন,

for headline in headlines:
    headline_words = headline.text.split()
    for word in headline_words:
        ...

এবার আমাদের লুপের বাইরে, লুপ চালানোর আগে একটি ডিকশনারী বানান, আমি নাম পছন্দ করলাম word_count

word_count = {}

এবার আমাদের দ্বিতীয় লুপটির মধ্যে চেক করব যে ডিকশনারীতে আমাদের বর্তমান শব্দটি আছে কিনা, থাকলে তার মান +1 করা হবে, নতুবা তার মান 1 হিসেবে সেট করা হবে।

if word in word_count.keys(): # checking existence of key
	word_count[word] += 1 # increase value by 1
else:
	word_count[word] = 1 # initially setting value

আহ, শেষমেষ লুপের চেহারা দাঁড়ালো:

for headline in headlines:
    headline_words = headline.text.split()
    for word in headline_words:
        if word in word_count.keys():
			word_count[word] += 1
		else:
			word_count[word] = 1

dictionary.keys() ফাংশনটির সাহায্যে ডিকশনারির সকল key কে list আকারে একত্রে পাওয়া যায়।

এরপর সবার শেষে word_count কে প্রিন্ট করি।

print(word_count)

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

দেখতে বড়ই ক্ষ্যাত লাগিতেছে আউটপুট, লুপ করে সুন্দরমত প্রিন্ট করি।

for word in word_count:
    print("*{0}* occurred {1} time".format(word, word_count.get(word)))

format এর রহস্য আমি খোলাসা করব না। ইন্টারনেটে বুঝে নিন ;)

হুম, এবার আউটপুট ভালোমতই পড়া যাচ্ছে দেখা যায়।

শেষ কিছু কথা

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

আমি বিশ্বাস করি কেউ কাউকে শেখাতে পারে না, বড়জোড় শেখানোর জন্য উৎসাহী বা আগ্রহী করে তুলতে পারে। শেখার কাজটা যার যার নিজেকেই করতে হয়। চামচে তুলে খাইয়ে দিলে ১ দিন খাবেন, ২ দিন খাবেন - ৩ দিনের দিন চামচওয়ালা গায়েব হলে আপনার খাওয়া বন্ধ। স্বাবলম্বী খুবই গুরুতপূর্ণ - শেখার জন্য।

যাদের জন্য সিরিজটির অস্তিত্ব আছে

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

তৎকালীন তড়িৎ ও কম্পিউটার প্রকৌশল বিভাগের চেয়ারম্যান ড. আরশাদ এম চৌধুরী স্যারের অবদান ও অনুমতি ছাড়া ওই ওয়ার্কশপগুলো কন্ডাক্ট করা সম্ভব হত না। বিশ্ববিদ্যালয়ের একই বিভাগের লেকচারার ও এক্স-NSUer, মিস সিলভিয়া আহমেদই আমাদের ওয়ার্কশপগুলোর পরিকল্পনায় অংশ নিয়েছেন, দেখভাল করেছেন এবং ডিপার্টমেন্টের অনুমতি যোগাড়ে মূখ্য ভূমিকা পালন করেছেন!

এবং সবচেয়ে গুরুত্বপূর্ণ অবদান হল আপনার; পাঠক হিসেবে। ব্লগ পোস্টগুলো আপনারা পড়েছেন দেখেই আমি লেখার উৎসাহ পেয়েছি। সকলকে ধন্যবাদ জানাচ্ছি :)

রক অন পাইথন।

লিংক

ধন্যবাদ পড়ার জন্য!

comments powered by Disqus