Scikit-Learn এর CountVectorizer এবং TfidfVectorizer

Machine Learning - সাইকিট-লার্ন (Scikit-Learn) - Text Classification এবং Natural Language Processing (NLP)
196

CountVectorizer এবং TfidfVectorizer হল Scikit-Learn এর দুটি গুরুত্বপূর্ণ টুল, যা টেক্সট ডেটা প্রক্রিয়াকরণ এবং ফিচার এক্সট্র্যাকশন এর জন্য ব্যবহৃত হয়। এই দুইটি ভেক্টরাইজার টেক্সট ডেটা থেকে ফিচার (features) বের করে, যেগুলি মেশিন লার্নিং মডেল ট্রেনিংয়ে ব্যবহৃত হয়।

1. CountVectorizer

CountVectorizer একটি বেসিক টেকনিক যা টেক্সট ডেটাকে একটি ম্যাট্রিক্সে রূপান্তরিত করে, যেখানে প্রতিটি কলাম একটি শব্দের (word) উপস্থিতি বা ফ্রিকোয়েন্সি (frequency) নির্দেশ করে। এটি প্রতিটি শব্দের সংখ্যা গণনা করে এবং টেক্সট ডেটার একটি ডকুমেন্ট-ওয়ার্ড ম্যাট্রিক্স তৈরি করে।

ফিচার:

  • এটি ডেটা থেকে শব্দের সংখ্যা বের করে।
  • নির্দিষ্ট শব্দের উপস্থিতি ম্যাট্রিক্স হিসেবে রূপান্তরিত হয়।
  • বাইনারি উপস্থিতি বা সংখ্যাত্মক সংখ্যা প্রদান করে।

ব্যবহার:

  • এই ভেক্টরাইজার মূলত টেক্সট ক্লাসিফিকেশন বা নেচারাল ল্যাঙ্গুয়েজ প্রসেসিং (NLP) সমস্যায় ব্যবহৃত হয়, যেখানে প্রতিটি শব্দের উপস্থিতির উপর ভিত্তি করে ডেটা ফিচার তৈরি করা হয়।

উদাহরণ:

from sklearn.feature_extraction.text import CountVectorizer

# টেক্সট ডেটা
corpus = [
    'I love programming',
    'Programming is fun',
    'I love fun'
]

# CountVectorizer ব্যবহার করা
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(corpus)

# আউটপুট দেখানো
print("Feature Names:", vectorizer.get_feature_names_out())
print("Bag of Words Matrix:\n", X.toarray())

আউটপুট:

Feature Names: ['fun' 'is' 'love' 'programming']
Bag of Words Matrix:
 [[0 0 1 1]
 [1 1 0 1]
 [1 0 1 0]]

এখানে, আমরা দেখতে পাচ্ছি যে "fun", "is", "love", "programming" শব্দগুলির উপস্থিতি ম্যাট্রিক্সে গণনা করা হয়েছে।


2. TfidfVectorizer

TfidfVectorizer (Term Frequency - Inverse Document Frequency) একটি উন্নত পদ্ধতি যা শব্দের অহমিয়তা নির্ধারণ করে। এটি শব্দের সাধারণতা এবং বিশেষত্ব (importance) পরিমাপ করে, এবং প্রত্যেক শব্দের জন্য একটি স্কোর প্রদান করে। TF-IDF শব্দের তীব্রতা নির্ধারণ করতে সাহায্য করে, যেখানে একটি শব্দ যতো বেশি বিশেষ (specific) এবং কম সাধারণ (common), তার স্কোর তত বেশি হবে।

  • Term Frequency (TF): এটি কোন শব্দের উপস্থিতির সংখ্যাকে সাধারণত ডকুমেন্টের মোট শব্দের সাথে তুলনা করে।

    TF=শব্দটির সংখ্যাডকুমেন্টের মোট শব্দের সংখ্যা\text{TF} = \frac{\text{শব্দটির সংখ্যা}}{\text{ডকুমেন্টের মোট শব্দের সংখ্যা}}

  • Inverse Document Frequency (IDF): এটি একটি শব্দের বিশেষত্ব মাপতে সাহায্য করে, এবং এটি হিসাব করে যে একটি শব্দ ডেটাসেটে কতোটা বিরল (rare)।

    IDF=log(ডকুমেন্ট সংখ্যাবিশেষ শব্দের উপস্থিতি সংখ্যার সাথে ডকুমেন্ট সংখ্যা)\text{IDF} = \log\left(\frac{\text{ডকুমেন্ট সংখ্যা}}{\text{বিশেষ শব্দের উপস্থিতি সংখ্যার সাথে ডকুমেন্ট সংখ্যা}}\right)

  • TF-IDF Calculation:
    একটি শব্দের TF-IDF স্কোর উভয় TF এবং IDF এর গুণফল। এর মাধ্যমে, টেক্সট ডেটাতে বেশি গুরুত্বপূর্ণ শব্দগুলো আলাদা করা যায়।

    TF-IDF=TF×IDF\text{TF-IDF} = \text{TF} \times \text{IDF}

ব্যবহার:

  • TfidfVectorizer মূলত বড় ডেটাসেটের মধ্যে গুরুত্বপূর্ণ শব্দগুলি চিহ্নিত করা এবং তাদের স্কোর হিসাব করার জন্য ব্যবহৃত হয়।
  • এটি ডকুমেন্ট-ওয়ার্ড ম্যাট্রিক্স তৈরি করে, যা মডেল ট্রেনিংয়ের জন্য উপযোগী।

উদাহরণ:

from sklearn.feature_extraction.text import TfidfVectorizer

# টেক্সট ডেটা
corpus = [
    'I love programming',
    'Programming is fun',
    'I love fun'
]

# TfidfVectorizer ব্যবহার করা
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)

# আউটপুট দেখানো
print("Feature Names:", vectorizer.get_feature_names_out())
print("TF-IDF Matrix:\n", X.toarray())

আউটপুট:

Feature Names: ['fun' 'is' 'love' 'programming']
TF-IDF Matrix:
 [[0.         0.         0.70710678 0.70710678]
 [0.57735027 0.57735027 0.         0.57735027]
 [0.57735027 0.         0.70710678 0.        ]]

এখানে, প্রতিটি শব্দের জন্য TF-IDF স্কোর তৈরি হয়েছে। দেখা যাচ্ছে যে "love" এবং "programming" শব্দগুলি তুলনামূলকভাবে বেশি গুরুত্বপূর্ণ, কারণ তাদের স্কোর তুলনামূলকভাবে বেশি।


CountVectorizer vs TfidfVectorizer

বৈশিষ্ট্যCountVectorizerTfidfVectorizer
ফিচারের মাপশব্দের উপস্থিতির সংখ্যা (frequency)শব্দের উপস্থিতি ও তার গুরুত্ব (importance)
ডেটা স্কেলিংনয়, শুধুমাত্র শব্দের সংখ্যাTF-IDF স্কোর দিয়ে স্কেলিং
বিরল শব্দের গুরুত্বসকল শব্দের গুরুত্ব সমানবিরল শব্দের স্কোর বেশি (বিশেষ শব্দের গুরুত্ব বেশি)
ব্যবহারসাধারণ ডেটা প্রক্রিয়াকরণগুরুত্বপূর্ণ শব্দ খুঁজে বের করা

সারাংশ

  • CountVectorizer টেক্সট ডেটাকে ফিচারে রূপান্তর করে যেখানে শুধুমাত্র শব্দের উপস্থিতি গুনে আনা হয়। এটি সোজা এবং সহজ পদ্ধতি, তবে টেক্সট ডেটাতে বিরল শব্দের গুরুত্ব ধরে রাখতে পারে না।
  • TfidfVectorizer শব্দের অহমিয়তা নির্ধারণ করে এবং বিশেষ শব্দের স্কোর বেশি দেয়। এটি সাধারণত বেশি ব্যবহৃত হয়, কারণ এটি শব্দের গুরুত্ববিশেষত্ব মাপতে সাহায্য করে, এবং এটি ওজনযুক্ত শব্দ প্রদান করে।

এই দুটি টুল সাধারণত টেক্সট ক্লাসিফিকেশন, স্প্যাম ডিটেকশন, টেক্সট মাইনিং ইত্যাদি কাজে ব্যবহৃত হয়।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...