Text Classification এবং Natural Language Processing (NLP) হলো ভাষাগত ডেটা (text) প্রক্রিয়া এবং বিশ্লেষণের জন্য ব্যবহৃত কিছু মৌলিক কৌশল। Text Classification হল একটি টাস্ক যেখানে টেক্সট ডেটা (যেমন, ইমেইল, টুইট, সংবাদ প্রতিবেদন, ব্লগ পোস্ট) নির্দিষ্ট শ্রেণীতে (যেমন স্প্যাম, স্প্যাম নয়, পজিটিভ বা নেগেটিভ অনুভূতি) শ্রেণীবদ্ধ করা হয়। NLP হল মেশিন লার্নিং-এর একটি শাখা যা ভাষা ডেটার প্রক্রিয়া এবং বিশ্লেষণের জন্য ব্যবহৃত হয়।
এই প্রজেক্টে Text Classification এর সাহায্যে একটি বাস্তব-world NLP অ্যাপ্লিকেশন তৈরি করা হবে, যা একটি মডেল ব্যবহার করে টেক্সট ডেটা শ্রেণীভুক্ত করবে।
Text Classification Project: Sentiment Analysis
আমরা এখানে Sentiment Analysis প্রজেক্ট তৈরি করব, যেখানে মডেলটি টেক্সট ডেটাকে পজিটিভ, নেগেটিভ বা নিউট্রাল হিসেবে শ্রেণীবদ্ধ করবে। এটি একটি জনপ্রিয় NLP টাস্ক যা একটি নির্দিষ্ট টেক্সটের অনুভূতি বা মুড (sentiment) চিহ্নিত করে।
1. প্রজেক্টের লক্ষ্য
- Sentiment Analysis - মডেলটি টেক্সট ডেটাকে শ্রেণীভুক্ত করবে: পজিটিভ, নেগেটিভ অথবা নিউট্রাল।
2. ডেটাসেট নির্বাচন
এখানে, আমরা IMDB Reviews ডেটাসেট ব্যবহার করতে পারি, যা সিনেমা রিভিউগুলির উপর ভিত্তি করে, পজিটিভ এবং নেগেটিভ রিভিউয়ের অনুভূতি চিহ্নিত করে।
ডেটাসেট পাওয়ার জন্য আমরা TensorFlow datasets, Kaggle বা অন্যান্য ওপেন ডেটাসেট সরবরাহকারী উৎস থেকে ডেটা সংগ্রহ করতে পারি।
3. ডেটা প্রিপ্রসেসিং
ডেটা প্রিপ্রসেসিং হল টেক্সট ক্লিনিং এবং ফিচার এক্সট্র্যাকশনের প্রক্রিয়া যাতে মডেলটি ডেটা থেকে কার্যকরী বৈশিষ্ট্য শিখতে পারে।
- টোকেনাইজেশন: টেক্সটকে ছোট ছোট অংশে (যেমন শব্দ বা বাক্য) ভেঙে ফেলা।
- স্টপওয়ার্ড রিমুভাল: টেক্সট থেকে অপ্রয়োজনীয় শব্দ (যেমন "the", "is", "at") মুছে ফেলা।
- স্টেমিং / লেমাটাইজেশন: শব্দের মূল রূপে পরিবর্তন করা (যেমন "running" কে "run" এ রূপান্তর করা)।
4. Model Building
আমরা একটি Deep Learning model যেমন LSTM (Long Short-Term Memory) বা CNN (Convolutional Neural Network) ব্যবহার করতে পারি, যা টেক্সট ডেটাকে প্রক্রিয়া করে শ্রেণীভুক্ত করবে।
এখানে একটি LSTM মডেলের উদাহরণ দেওয়া হলো:
import tensorflow as tf
from tensorflow.keras import layers, models
from sklearn.model_selection import train_test_split
import pandas as pd
# ডেটাসেট লোড করা
df = pd.read_csv('imdb_reviews.csv')
# টেক্সট ডেটা এবং লেবেল প্রস্তুত করা
X = df['review']
y = df['label'] # 1 for Positive, 0 for Negative
# ডেটাকে প্রশিক্ষণ এবং টেস্ট সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# টোকেনাইজেশন এবং প্যাডিং
tokenizer = tf.keras.preprocessing.text.Tokenizer(num_words=10000)
tokenizer.fit_on_texts(X_train)
X_train_seq = tokenizer.texts_to_sequences(X_train)
X_test_seq = tokenizer.texts_to_sequences(X_test)
X_train_padded = tf.keras.preprocessing.sequence.pad_sequences(X_train_seq, padding='post', maxlen=300)
X_test_padded = tf.keras.preprocessing.sequence.pad_sequences(X_test_seq, padding='post', maxlen=300)
# LSTM মডেল তৈরি করা
model = models.Sequential([
layers.Embedding(input_dim=10000, output_dim=128, input_length=300),
layers.LSTM(64),
layers.Dense(1, activation='sigmoid')
])
# মডেল কম্পাইল করা
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# মডেল ট্রেনিং করা
model.fit(X_train_padded, y_train, epochs=5, batch_size=64, validation_data=(X_test_padded, y_test))
5. মডেল মূল্যায়ন
মডেলটি প্রশিক্ষণ শেষ হলে, আমরা accuracy, precision, recall, এবং F1 score মেট্রিক্স ব্যবহার করে মডেলটির কার্যকারিতা মূল্যায়ন করতে পারি।
from sklearn.metrics import classification_report
# টেস্ট ডেটা দিয়ে পূর্বাভাস তৈরি করা
y_pred = (model.predict(X_test_padded) > 0.5)
# মেট্রিক্স বিশ্লেষণ
print(classification_report(y_test, y_pred))
NLP Project: Text Classification Workflow
- ডেটা সংগ্রহ এবং প্রস্তুতি:
- টেক্সট ডেটা সংগ্রহ করুন (যেমন সিনেমা রিভিউ, টুইট, বা ইমেইল)।
- টেক্সট ডেটা ক্লিনিং এবং প্রিপ্রসেসিং করুন।
- মডেল নির্বাচন:
- Traditional Machine Learning: Naive Bayes, Logistic Regression, বা SVM ব্যবহার করে ছোট ডেটাসেটের জন্য ক্লাসিফিকেশন করা যেতে পারে।
- Deep Learning: LSTM, GRU, CNN ইত্যাদি টেক্সট ক্লাসিফিকেশনের জন্য ব্যবহার করা হয়।
- মডেল প্রশিক্ষণ:
- প্রশিক্ষণ ডেটা ব্যবহার করে মডেলটি শেখান এবং মডেলের সঠিকতা মূল্যায়ন করুন।
- Model Evaluation:
- মডেলটির কার্যকারিতা বিশ্লেষণ করতে Confusion Matrix, Precision, Recall, এবং F1-Score ব্যবহার করুন।
- API Deployment:
- Flask বা FastAPI দিয়ে একটি API তৈরি করুন যাতে ব্যবহারকারীরা নতুন টেক্সট ইনপুট দিয়ে পজিটিভ বা নেগেটিভ ক্লাসিফিকেশন পেতে পারেন।
সারাংশ
- Text Classification হল NLP-এ একটি মৌলিক টাস্ক, যেখানে টেক্সট ডেটাকে নির্দিষ্ট শ্রেণীতে (যেমন, পজিটিভ বা নেগেটিভ) শ্রেণীবদ্ধ করা হয়।
- NLP প্রজেক্টে বিভিন্ন মডেল ব্যবহার করা যায়, যেমন LSTM, Naive Bayes, Logistic Regression, SVM ইত্যাদি।
- প্রশিক্ষণ, মূল্যায়ন, এবং API Integration-এর মাধ্যমে একটি বাস্তব NLP প্রজেক্ট তৈরি করা যেতে পারে যা ব্যবসায়িক অ্যাপ্লিকেশন বা গবেষণার জন্য কার্যকরী হতে পারে।
Read more