Friday, May 24, 2019

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


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

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

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

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

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

যাইহোক, আবারো লিনাক্স কার্নেলের কথায় ফেরত আসি। লিনাক্স কার্নেলটাকে বেজ হিসেবে ধরে বানানো শুরু হলো নানা রকম অপারেটিং সিস্টেম। এই লিনাক্স বেজড অপারেটিং সিস্টেমগুলোকে আমরা আদর করে ডাকি "ডিস্ট্রিবিউশন" বা "ডিস্ট্রো"। এখন পর্যন্ত বাজারে অন্তত পাঁচশ অপারেটিং সিস্টেম আছে লিনাক্সের। যার যেমনটা দরকার সে তেমন করেই বানিয়ে নিয়েছে। যেমন হ্যাকার বা সিকিউরিটি বিশেষজ্ঞরা ব্যাবহার করেন "Kali Linux", "Parrot Os", "Black Arch"। আবার শিক্ষার্থীদের জন্যে আছে Edubuntu, Endless OS। বিজ্ঞানীরা ব্যবহার করেন 'Scientific Linux', 'Fedora Scientific' ইঞ্জিনিয়াররা ব্যবহার করেন 'LinuxCNC', 'CAELinux', জেনেটিক ইঞ্জিনিয়ার কেমিক্যাল ইঞ্জিনিয়াররা ব্যবহার করেন 'Bio Linux', 'Poseidon Linux' ইত্যাদি!

আর আমার প্রায় পাঁচ বছরের লিনাক্স অভিজ্ঞতায় প্রায় চল্লিশটির মত অপারেটিং সিস্টেম ব্যাবহার করার সুযোগ হয়েছে। আমার কাছে মনে হয়েছে লিনাক্স মোটেও কঠিন কিছু নয়। এটি সার্বজনীন!

কেন উইন্ডোজ ছেড়ে লিনাক্স ব্যাবহার করবেন? 
  • সিকিউরিটি: নাসা, সার্ন, গুগল, ফেসবুক সার্ভার সহ পৃথিবীর সমস্ত গুরুত্বপূর্ণ জায়গাগুলোতে লিনাক্স অপারেটিং সিস্টেম ব্যাবহার করা হয়। ইন্টারনেট দুনিয়ার প্রায় ৯০% সার্ভারে লিনাক্স ব্যাবহার করা হয় এর সিকিউরিটি সুনামের কারণে। লিনাক্স সার্ভারে অ্যাটাক করা প্রায় অসম্ভব একটি কাজ হ্যাকারদের জন্যে। একজন সাধারণ ইউজার হিসেবে সার্ভার সিকিউরিটি নিয়ে হয়ত আপনার মাথাব্যথা নাও থাকতে পারে, কিন্তু আপনি যদি পার্সোনাল কম্পিউটারের সিকিউরিটির কথা চিন্তা করেন সেক্ষেত্রেও লিনাক্স সবার আগে। উইন্ডোজ কম্পিউটারে হরেক রকম অ্যান্টিভাইরাস ইউজ করেন আপনারা ভাইরাস বা ম্যালওয়্যার থেকে বাঁচার জন্যে। অনেক অ্যান্টিভাইরাস কোম্পানি বাজারে তাদের ব্যাবসা টিকিয়ে রাখতে নিজেরাই ভাইরাস আপলোড করে থাকে। অনেক দাম দিয়ে এসব অ্যান্টিভাইরাস কিনতে হয়। সিরিয়াল কী আপডেট করতে হয়। উইন্ডোযে যেখানে এত ঝামেলা সেখানে লিনাক্স একদম দুর্ভেদ্য একটা অপারেটিং সিস্টেম। কোনোরকম অ্যান্টিভাইরাস প্রয়োজন নেই। আমি আজ পর্যন্ত কাউকে বলতে শুনিনি যে তার লিনাক্স কম্পিউটার এ ভাইরাস এ্যটাক হয়েছে!
  • দাম: উইন্ডোজ এর জেনুইন ভার্সন যদি আপনি ব্যাবহার চান তাহলে আপনাকে প্রায় ১০০ থেকে ২৫০ ডলার গুণতে হবে। কিন্তু লিনাক্স আজীবনের জন্য ফ্রি! হ্যা আপনি ঠিকই পড়েছেন! একটি টাকাও খরচ করতে হবে না আপনাকে।
  • পারফরম্যান্স: নতুন কম্পিউটার কেনার দুই-তিন মাস পরেই ভীষণ স্লো হয়ে যায় উইন্ডোজ কম্পিউটার। একটা ক্লিক দিয়ে ঘুমিয়ে যাচ্ছেন, ঘুম থেকে উঠে দেখবেন তখনো কাজ হয়নি! মাঝেমধ্যেই আছাড় মেরে ল্যাপটপ ভেঙ্গে ফেলার ইচ্ছে করে হয়ত। বছরের পর বছর লিনাক্স ইউজ করবেন, একটা দিনও স্লো হবে না! কম্পিউটার বন্ধও করে রাখতে হবে না। দিনের পর দিন কম্পিউটার চালু রাখতে পারবেন। আমি যখন এই লিখাটা লিখছি তখনো আমার কম্পিউটার একটানা ২২ দিন ধরে চলছে, এরমধ্যে একবারও শাট ডাউন করার দরকার হয়নি। বাইরে যাবার সময় ঘুম পাড়িয়ে রেখে গেছি (মানে স্লিপ মুডের কথা বলছি)। 
  • আপডেট: উইন্ডোজের বিরক্তিকর আপডেটের সম্মুখীন হননি এরকম মানুষ হারিকেন দিয়েও খুঁজে একটা পাওয়া যাবে বলে আমার মনে হয় না! ভীষণ রকম স্লো আর ল্যাগি আপডেট, সাথে রিস্টার্ট করার প্যারা তো আছেই! রিস্টার্ট করতে গেলেও চার পাচ মিনিট সময় চলে যায়! জীবনটাই তামাতামা হয়ে যায়! 😀লিনাক্সের যেকোনো অপারেটিং সিস্টেমে এই আপডেটের কাজটা সেরে ফেলতে পারবেন মাত্র একটা ক্লিক দিয়েই। সেইসাথে ইনস্টল থাকা প্রত্যেকটা অ্যাপ আপডেট হয়ে যাবে কোনো ঝামেলা ছাড়াই। উইন্ডোজের মত শুধুমাত্র সিস্টেম আপডেট হবে না। খুঁজে খুঁজে আলাদাভাবে আর কোনো অ্যাপ আপডেট করতে হবে না।
    মাত্র এক ক্লিক এ আপডেটের ঝামেলা শেষ!
  • অ্যাপ ইনস্টলেশন: উইন্ডোজে নতুন কোনো অ্যাপ ইনস্টল করাও ঝামেলা! গুগল থেকে খুজে খুজে ডাউনলোড করো, তারপর ইনস্টল করো, দুদিন যেতে না যেতেই আবার রেজিস্ট্রেশন কী দিতে হবে নাইলে অ্যাপ কাজ করবে না! মহা মুশকিল! লিনাক্সে এত খোঁজাখুঁজি করতে হবে না। সফটওয়্যার ম্যানেজারে সার্চ করবেন আপনার প্রয়োজনীয় অ্যাপ, একটা ক্লিক করবেন, কিচ্ছা খতম! কোনো সিরিয়াল কী, রেজিট্রেশন ফী হ্যানত্যান ঝামেলা নেই! সফটওয়্যার ম্যানেজার জিনিসটা প্লেস্টোরের মত, সার্চ করবেন আর ডাউনলোড করবেন। এই ফাঁকে একটি তথ্য জানিয়ে দেই, আপনার হাতে থাকা অ্যান্ড্রয়েড ফোনটিও কিন্তু লিনাক্স অপারেটিং সিস্টেম!
    Software Manager/Store
  • প্রাইভেসি: উইন্ডোজ আপনার অগোচর আপনার প্রত্যেকটি কর্মকাণ্ডই নজরদারী করে, আপনার প্রত্যেকটি ডেটা তাদের সার্ভারে জমা হতে থাকে। লিনাক্স আপনার কোনো ডেটাই তাদের সার্ভারে পাঠায় না, যদি প্রয়োজন বশত কোনো ডেটা বা সিস্টেম লগ তারা নিতে চায়, তার আগে অবশ্যই আপনাকে নোটিফাই করবে।
  • ইউজার ইন্টারফেস: এবার আসি ইউজার এনভায়রনমেন্ট এর ব্যাপারটায়। সারাটা জীবন ধরে উইন্ডোজের চেহারা দেখতে দেখতে বিরক্ত হয়েছেন? মাঝেমধ্যেই একটু সুন্দর করে সাজাতে চেয়েছেন নিজের কম্পিউটার? কিন্তু কালার ছাড়া আর কোনোকিছু চেঞ্জ করতে পারেননি? তাহলে আপনি চোখ বন্ধ করে লিনাক্স ব্যাবহার শুরু করুন। কালার, ফন্ট, আইকন থেকে শুরু করে কার্নেল পর্যন্ত চেঞ্জ করতে পারবেন দুই একটা ক্লিক করেই! আমি নিজেই তো Asus ল্যাপটপ এ MacBook এর স্বাদ নিচ্ছি! ও আচ্ছা! ম্যাক অপারেটিং সিস্টেমও কিন্তু লিনাক্স কার্নেলেই বানানো! মোদ্দাকথা, আপনি চাইলেই আপনার মনের মাধুরী মিশিয়ে আপনার কম্পিউটার কাস্টমাইজ করতে পারবেন। টাকা দিয়ে কিনেছেন, আপনার কম্পিউটার থাকবে আপনার ইচ্ছামত, তাহলে কেন উইন্ডোজ এর কাছে বন্দী হয়ে থাকবেন? আমার ল্যাপটপের স্ক্রিনশটগুলো দেখুন, ম্যাকবুক ভেবে ভুল করবেন না!

    ফাইল ম্যানেজার

    Application Drawer
    System Info
    System Monitor
  • টার্মিনাল: আপনি যদি অ্যাডভান্স ইউজার হয়ে থাকেন তাহলে উইন্ডোজ কমান্ড লাইনের সাথে নিশ্চয় পরিচিত। উইন্ডোজ কমান্ড লাইন অথবা পাওয়ারশেল জিনিসটাকে আমার কাছে নিছক খেলনা মনে হয়েছে লিনাক্স টার্মিনালের তুলনায়। টার্মিনাল দিয়ে আপনি চাইলে আপনার কম্পিউটার কেন মহাকাশ পর্যন্ত কাঁপিয়ে দিতে পারবেন। আমি একটুও বাড়িয়ে বলছি না, টার্মিনাল এতটাই শক্তিশালী! 
    Terminal
যাই হোক, উইন্ডোজ এ কুয়োর ব্যাঙ হয়ে না থেকে লিনাক্সে আসুন, কম্পিউটিং বিস্ময়কর জগৎটা দেখুন! তবে আশার কথা হলো, দেরীতে হলেও মাইক্রোসফট এতদিনে বুঝতে শুরু করেছে ওপেন সোর্সের গুরুত্ব, লিনাক্সের গুরুত্ব। এবছরই তারা উইন্ডোজের ভিতরেই লিনাক্স ব্যাবহার করার জন্যে WSL (Windows Subsystem for Linux) রিলিজ করেছে। আগে এই কাজটিই করতে হতো বিভিন্নরকম ভার্চুয়াল মেশিন সফটওয়্যার ব্যাবহার করে। এছাড়াও তারা উইন্ডোজের জন্যে নতুন টার্মিনাল ডেভেলপ করা শুরু করেছে।
New cmd
এতক্ষণ ধরে বকবক করেও আমি শুধুমাত্র লিনাক্সের বাহ্যিক দিকটাই একটুখানি তুলে ধরেছি। ভেতরের কথাবার্তা নিয়ে, একজন বিগিনার হিসেবে লিনাক্সের কোন অপারেটিং সিস্টেমটি ব্যাবহার করতে পারেন, কীভাবে ইনস্টল করবেন, সেসব বিস্তারিত লিখবো অন্য একটি লিখায়। ভালো থাকুন। Happy Computing!

ডেটা সায়েন্সে লিনাক্স কীভাবে কাজে লাগতে পারে জানতে চোখ রাখুন এখানে
আরও পড়ুন
☛ লিনাক্স ও ডেটা সায়েন্স: tr কমান্ডের কারিশমা

Category: articles

Thursday, May 16, 2019

ডেটা সায়েন্সের জন্য লিনাক্স টার্মিনাল দারুণ এক জিনিস। এর আগে আমরা tr কমান্ড নিয়ে বলেছিলাম। আজকে দেখব, সামান্য কয়েকটি কমান্ড এক সঙ্গে ব্যবহার করে কত দারুণ একটা কাজ করা যায়।


যাদের লিনাক্স নেই তারা এই মিনি টিউটোরিয়ালকে ফলো করতে WSL (উইন্ডোজ সাবসিস্টেম ফর লিনাক্স) ব্যবহার করতে পারেন। আমি নিজেও আসলে তাই করছি।

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

তাহলে কাজে নেমে পড়া যাক। মূল কাজে যাবার আগে আমরা টেক্সটটাকে একটা ফাইলে নিয়ে সেভ করে রাখি। লিনাক্সের ফাইল ম্যানেজিং আগে থেকেই পারলে নীচের কথাগুলো অবশ্য অতিরঞ্জন হবে।

  • তাহলে শুরুতে আমরা আর্টিকেলের টেক্সটটা কপি করে নেই। আমরা শুরু থেকে Contents সেকশনের আগ পর্যন্ত কপি করব। এই মুহূর্তে লাস্ট লাইনটা এ রকম: ...such as a star cluster or a galaxy। উইকপিডিয়া পরিবর্তনশীল বলে এটা হয়ত সব সময় নাও থাকতে পারে। 
  • এবার লিনাক্স টার্মিনালে আসি। একটা ফাইল বানাই। নাম দেই star_wiki.txt। এটার জন্য কোড touch star_wiki.txt
  • এবার এই ফাইলে টেক্সটখানা বসাতে হবে। তাহলে ইডিট মোডে যেতে টাইপ করি: nano star_wiki.txt
  • এবার আগে কপি করা টেক্সটটুকু এখানে বসিয়ে দেই। এখানে Ctrl + V সবসময় কাজ করে না। তার চেয়ে বরং মাউসের রাইট ক্লিক করলেই পেস্ট হয়ে যায়। 
  • এবার Ctrol + O এবং এন্টার চেপে তারপর Ctrl + X চেপে বের হয়ে আসুন। 
আমাদের মূল কাজ আসলে এখনও হয়নি। তবে এবার হবে। আমরা যা করতে চাই তার জন্যে পুরো কমান্ড হলো:

cat star_wiki.txt | tr '[:upper:]' '[:lower:]' | grep -oE '\w+' | sort | uniq -c | sort -nr | head -n 10
চাইলে পুরোটা রান করে দেখতে পারেন। তবে আমরা কাজটা করব ধাপে। প্রত্যেক লাইনে কী ঘটছে সেটা বুঝে বুঝে। 

উপরের কমান্ডে আমরা "|" চিহ্নটা বেশ কয়েকবার ব্যবহার করেছি। লিনাক্স কমান্ড লাইনে একে বলে পাইপ কমান্ড। এটা দিয়ে একটা কাজের রেজাল্টকে আরেকটা কাজের ইনপুট হিসেবে ব্যবহার করা যায়। ব্যাপারটা R এর dplyr ও আরও ভাল করে বললে magrittr প্যাকেজের পাইপের সাথে মিল আছে। অবশ্য R এর পাইপ কমান্ড হলো %>%। এর ব্যবহার দেখতে এই লেখাটি দেখুন। 

তাহলে একে একে দেখা যাক, ওপরের পুরো কোডটা আসলে কী করল। 
  • cat কমান্ড কোনো ফাইলের টেক্সটগুলোকে টার্মিনালে প্রিন্ট করে। ফাইল জোড়া দিতেও এটা ব্যবহার করা যায়। তবে সেটা আমাদের আজকের আলোচনার অংশ নয়। তাহলে আপাতত শুধু রান করুন cat star_wiki.txt। এটা আসলে টেক্সটটা দেখানো ছাড়া আর কিছুই করবে না। ফাইলটায় যেহেতু টেক্সট খুব বেশি নেই, তাই একে প্রিন্ট টার্মিনালে প্রিন্ট করতে অসুবিধা নেই। এবার পাইপ কমান্ড দিয়ে আমরা অ্যানালাইসিসের দিকে যাব। 
  • tr কমান্ডের কারিশমা নিয়ে আমরা আগেই বলেছিলাম। টেক্সট কনভার্ট বা ডিলিট করতে এর ব্যবহার খুব বেশি। এখানে tr '[:upper:]' '[:lower:]' কমান্ড দিয়ে আমরা আমাদের ফাইলের সব লেখাকে ইংরেজি ছোট হাতের বানিয়ে নিলাম। তাহলে এবার কোড হলো-  
cat star_wiki.txt | tr '[:upper:]' '[:lower:]'
  • এখনও টেক্সটটা আছে প্যারাগ্রাফ আকারে। অ্যানালাইসিসের সুবিদার্থে আমরা প্রতিটি শব্দকে আলাদা আলাদা লাইনে নিয়ে আসব। এ জন্যেই পাইপ দিয়ে পরের কমান্ডে চলে গেলাম। বাড়তি কোড লাগবে grep -oE '\w+' । তাহলে সব মিলিয়ে হবে- 
cat star_wiki.txt | tr '[:upper:]' '[:lower:]' | grep -oE '\w+' 
  • এবার আমরা শব্দগুলোকে আদ্যক্ষর অনুসারে সাজিয়ে নেব। এ জন্য লাগবে sort কমান্ড। এবার কোড হলো- 
cat star_wiki.txt | tr '[:upper:]' '[:lower:]' | grep -oE '\w+' | sort 
  • এখানে একাধিকবার থাকা শব্দগুলোকে একাধিকবারই দেখাচ্ছে। যেমন দেখুন উপরের দিকে অনেকগুলো a দেখা যাচ্ছে। নীচে আবার with আছে চারবার। আমরা এবার একটা শব্দকে একবারই শুধু রাখব। সাথে সেটা কয়বার ছিল সেই তথ্য নিয়ে আসব। এর জন্য কোড হলো uniq -c। c হলো count বা গণনার জন্যে। সব মিলিয়ে এবার-
cat star_wiki.txt | tr '[:upper:]' '[:lower:]' | grep -oE '\w+' | sort | uniq -c 
  • এটা ভালোই হলো। কিন্তু কোন শব্দগুলো বেশি আছে সেটা সহজে বোঝা যাচ্ছে না। তাই আবার sort করা দরকার। যাতে বেশি ফ্রিকুয়েন্সির শব্দগুলো শুরুতে থাকে। এজন্য আমরা sort -nr ব্যবহার করব। এখানে n মানে হলো নিউমেরিক সর্ট। আর r মানে হলো রিভার্স সর্ট। এটা না করলে বেশি ফ্রিকুয়েন্সির শব্দ থাকবে শেষে। এবার তাহলে-  
cat star_wiki.txt | tr '[:upper:]' '[:lower:]' | grep -oE '\w+' | sort | uniq -c | sort -nr
  • মূল কাজ আসলে শেষ। কিন্তু সব শব্দের ফ্রিকুয়েন্সি দেখে কোনো লাভ নেই। আমরা দেখব কোন দশটি শব্দ সবচেয়ে বেশি আছে। head -10। অবশ্যই ১০ এর বদলে আপনি অন্য কিছি দিতেই পারেন। 
  • তাহলে ফাইনাল কমান্ড দাঁড়াল 
cat star_wiki.txt | tr '[:upper:]' '[:lower:]' | grep -oE '\w+' | sort | uniq -c | sort -nr | head -10

এবার আমরা পেয়ে গেলাম সবচেয়ে বেশি ব্যবহৃত শব্দগুলো। চাইলে এটাকে আমরা আলাদা ফাইলে সেভও করে নিতে পারি। সেজন্যে বাড়তি লিখতে হবে > star_wiki_top.txt। 

কত সহজে কেল্লা ফতে হয়ে গেল! 

আগেই বলেছি, উইকিপিডিয়া পরিবর্তনশীল। তাই আপনার রেজাল্ট আমার রেজাল্টের সাথে নাও মিলতে পারে। তাতে কী এসে যায়? মূল বিষয়টা তো জানা হয়েই এল! 

হ্যাঁ, চাইলেই আপনি কাজটি R-এও করতে পারেন। কীভাবে জানতে এই লেখাটি দেখুন। লেখাটিতে এই আমাদের আলোচিত কমান্ডগুলোর আরও অ্যাডভান্সড ব্যবহারও আলোচনা করা আছে। 

সূত্র:  Data Science at the Command Line নামের অসাধারণ বইটি। লেখক: Jeroen Janssens
Category: articles

Monday, May 13, 2019

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



খুব সাধারণ একটা উদাহরণ দিয়ে শুরু করি। To follow along, আপনার লিনাক্স টার্মিনাল খুলুন। উইন্ডোজে লিনাক্সের সুবিধা ব্যবহার করতে ব্যাবহার করুন WSL। পুরো নাম উইন্ডোজ সাবসিস্টেম ফর লিনাক্স। ইনস্টল করতে সময় লাগবে এক মিনিট। কীভাবে করবেন দেখুন এখানে

১। স্পেসকে রিপ্লেস করতে

দেখা যাক, স্পেসকে ডট দিয়ে রিপ্লেস করা যায় কি না।


এটা থেকে আউটপুট আসবে Welcome.to.stat.mania.

চাইলে কমা (,), কোলন (:) বা অন্য যে-কোনো ক্যারেক্টার দিয়েই রিপ্লেস করা যায়।

যেমন echo "Welcome to stat mania" | tr [:space:] '_' থেকে আসবে Welcome_to_stat_mania_।

আর স্পেসকে ট্যাব দিয়ে রিপ্লেস করতে এই কোড
echo "Welcome to Stat Mania" | tr "[:space:]" "\t"
আসবে: Welcome to      Stat    Mania

২। আপার কেইস থেকে লোয়ার কেইস বা উল্টোটা

ইংরেজি ছোট হাতের অক্ষর থেকে বড় হাতের অক্ষরে রূপান্তর করতে এই কমান্ড সিদ্ধহস্ত।
echo "Weclcome to Stat Mania" | tr "[:upper:]" "[:lower:]"
আসবে: weclcome to stat mania

মানে, সব অক্ষর ছোট হাতের হয়ে যাবে। একইভাবে ছোট হাতের অক্ষরকে বড় হাতের করতে হলে upper আর lower কে ইন্টারচেঞ্জ করে দিতে হবে।
echo "Welcome to Stat Mania" | tr "[:lower:]" "[:upper:]"
আসবে: WELCOME TO STAT MANIA

এই একই কাজটি করা যায় আরেকভাবে।
echo "Welcome to Stat Mania" | tr "[a-z]" "[A-Z]"
আসবে: WELCOME TO STAT MANIA

৩। {} থেকে ()
cat sample.txt  | tr "{}" "()"
এবারে আমি sample.txt ফাইলে রেখেছিলাম এই কথা।
GO OFF
{My OS is Ubuntu}

কমান্ড অ্যাপ্লাই করে পেলাম
GO OFF
(My OS is Ubuntu)

আবার চাইলে এই কোডকে একটু বড় করে tr আবারও অ্যাপ্লাই করা যায়।
cat sample.txt  | tr "{}" "()" | tr "[A-Z]" "[a-z]"
এবার এল:
go off
(my os is ubuntu)

৪। নির্দিষ্ট কোনো ক্যারেক্টার ডিলিট করতে

অদ্ভুত কোনো কিছু ডিলিট করতে এটা দারুণ কাজে আসবে। ডেটা সায়েন্সে ডেটা ক্লিনিং করতে এটি খুব কাজে লাগবে। যেমন ধরুন ভুলক্রমে শহরে নাম টাইপ করতে গিয়ে সব শহরের শেষে একটা বাড়তি . পড়ে গেছে। ধরুন আমরা city.csv ফাইলের শহরের লিস্ট নিয়ে কাজ করছি। এটা আছে এরকম আপাতত।

id, city
1,Dhaka.
2, Cumilla.
3, Lakshmipur.
4, Feni.
5, Chandpur.
6, Barishal.
7, Rangpur.
8, Rajshahi.
9, Sylhet.

এবার আমরা শহরের ডটগুলো মুছে ফেলব।
cat city.csv | tr -d "."
আসবে:
id, city
1,Dhaka
2, Cumilla
3, Lakshmipur
4, Feni
5, Chandpur
6, Barishal
7, Rangpur
8, Rajshahi
9, Sylhet

বুঝতেই পারছেন, -d এর পরের কোটেশনের মধ্যে যা দেবেন সেটা ডিলিট হয়ে যাবে। অবশ্যই এই কমান্ড সতর্কতার সাথে ব্যবহার করতে হবে।

৫. নির্দিষ্ট কোনো ক্যারেক্টার রিপ্লেস করতে 

এর আগে আমরা দেখেছি বিশেষ কিছু দিয়ে অন্য কিছু রিপ্লেস করা। এবার দেখব যে-কোনো কিছুকে যে-কোনো অন্য কিছু দিয়ে রিপ্লেস করার উপায়।
echo "Nothing is impossible" | tr "i" "P"
এখানে সবগুলো i এর বদলে P চলে আসবে।
আসবে: NothPng Ps PmpossPble

এই আউটপুটটা দেখতে বিদঘুটে হলেও এর শক্তি কিন্তু বোঝা গেছে।

৬. সব সংখ্যা (আসলে ডিজিট বা অঙ্ক!) ডিলিট করতে
echo "My roll number is 123" | tr -d "[:digit:]"
হয়ে যাবে: My roll number is

আবার উল্টোও করা যাবে। মানে ডিজিট থাকবে। আর সব মুছে যাবে। তাহলে এই কোড:
echo "My roll number is 123" | tr -cd "[:digit:]"
আসবে: 123

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

সূত্র:
১। Geeksforgeeks
Category: articles