Machine Learning NLP প্রজেক্ট: Sentiment Analysis গাইড ও নোট

420

Sentiment Analysis (ভাষাগত বিশ্লেষণ) হল একটি প্রক্রিয়া যার মাধ্যমে আমরা টেক্সট ডেটা বিশ্লেষণ করি এবং এটি থেকে মানুষের অনুভূতি বা মতামত নির্ধারণ করি। Sentiment Analysis সাধারণত তিনটি শ্রেণীতে ভাগ করা হয়:

  1. Positive: ইতিবাচক অনুভূতি (যেমন, "এটি একটি দুর্দান্ত বই!")
  2. Negative: নেতিবাচক অনুভূতি (যেমন, "এই সিনেমাটি খুবই খারাপ।")
  3. Neutral: নিরপেক্ষ বা মাঝারি অনুভূতি (যেমন, "আজকে আবহাওয়া ভালো।")

এই প্রজেক্টে, আমরা Python ব্যবহার করে একটি Sentiment Analysis মডেল তৈরি করবো। এখানে আমরা Natural Language Processing (NLP) এর কিছু মৌলিক টেকনিক এবং মডেল ট্রেনিং পদ্ধতি ব্যবহার করব।


Sentiment Analysis প্রজেক্টের ধাপগুলো

১. ডেটা সংগ্রহ এবং প্রিপ্রসেসিং

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

২. ডেটা ভেক্টরাইজেশন

টেক্সট ডেটাকে সংখ্যাগত ফর্মে রূপান্তর করতে হবে, যাতে এটি মডেলে ব্যবহার করা যেতে পারে। এর জন্য আমরা সাধারণত Bag of Words, TF-IDF বা Word Embeddings ব্যবহার করি।

৩. মডেল প্রশিক্ষণ

এই ধাপে আমরা টেক্সট ডেটার উপর একটি মেশিন লার্নিং মডেল (যেমন, Logistic Regression, Naive Bayes, Random Forest) বা Deep Learning Model (যেমন, LSTM বা BERT) ব্যবহার করি।

৪. মডেল মূল্যায়ন

মডেলটির কার্যকারিতা যাচাই করতে, আমরা accuracy, precision, recall এবং F1 score এর মতো মেট্রিক্স ব্যবহার করি।

৫. মডেল প্রেডিকশন

অবশেষে, মডেলটি বাস্তব-জীবনের ডেটা নিয়ে পূর্বাভাস প্রদান করবে।


কোড উদাহরণ: Sentiment Analysis with Logistic Regression

এই প্রজেক্টে আমরা Logistic Regression মডেল ব্যবহার করে Sentiment Analysis করবো। আমরা Scikit-learn এবং NLTK লাইব্রেরি ব্যবহার করবো।

ধাপ ১: প্রয়োজনীয় লাইব্রেরি ইনস্টল করা

প্রথমে কিছু লাইব্রেরি ইনস্টল করতে হবে:

pip install scikit-learn nltk pandas

ধাপ ২: ডেটা প্রস্তুতি

এখানে আমরা একটি সিমুলেটেড ডেটাসেট ব্যবহার করব, তবে আপনি বাস্তব ডেটাসেটও ব্যবহার করতে পারেন (যেমন IMDb reviews dataset বা Twitter sentiment dataset):

import pandas as pd

# উদাহরণস্বরূপ ডেটা
data = {
    'text': ['I love this product!', 'This is a terrible movie.', 'I am so happy with my new phone.', 'I hate waiting.', 'It’s a great day!'],
    'sentiment': ['positive', 'negative', 'positive', 'negative', 'positive']
}

df = pd.DataFrame(data)

# ডেটা দেখানো
print(df)

ধাপ ৩: প্রিপ্রসেসিং (Text Preprocessing)

এখন আমরা টেক্সট ডেটার প্রিপ্রসেসিং করব। যেমন:

  • টোকেনাইজেশন
  • স্টপওয়ার্ড রিমুভাল
  • লেমাটাইজেশন
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from nltk.tokenize import word_tokenize

# NLTK ডেটা ডাউনলোড করা
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('wordnet')

# লেমাটাইজার তৈরি করা
lemmatizer = WordNetLemmatizer()

# স্টপওয়ার্ড তালিকা
stop_words = set(stopwords.words('english'))

# টেক্সট প্রিপ্রসেসিং ফাংশন
def preprocess_text(text):
    # টোকেনাইজেশন
    tokens = word_tokenize(text.lower())  # ছোট অক্ষরে টোকেন
    # স্টপওয়ার্ড রিমুভ করা
    tokens = [word for word in tokens if word not in stop_words and word.isalnum()]
    # লেমাটাইজেশন
    tokens = [lemmatizer.lemmatize(word) for word in tokens]
    return ' '.join(tokens)

# টেক্সট প্রিপ্রসেসিং
df['processed_text'] = df['text'].apply(preprocess_text)

# প্রিপ্রসেসড ডেটা
print(df[['text', 'processed_text']])

ধাপ ৪: ভেক্টরাইজেশন

এখন আমরা TF-IDF ভেক্টরাইজার ব্যবহার করব যাতে টেক্সট ডেটা সংখ্যাতে রূপান্তরিত হয়।

from sklearn.feature_extraction.text import TfidfVectorizer

# TF-IDF ভেক্টরাইজার তৈরি করা
vectorizer = TfidfVectorizer()

# টেক্সট ভেক্টরাইজেশন
X = vectorizer.fit_transform(df['processed_text'])

# টার্গেট ভ্যারিয়েবল
y = df['sentiment']

print(X.shape)

ধাপ ৫: মডেল প্রশিক্ষণ

এখন আমরা Logistic Regression মডেল ব্যবহার করব এবং এটি প্রশিক্ষণ দেব।

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# ডেটাকে ট্রেনিং এবং টেস্টিং সেটে ভাগ করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Logistic Regression মডেল তৈরি করা
model = LogisticRegression()

# মডেল প্রশিক্ষণ
model.fit(X_train, y_train)

# পূর্বাভাস করা
y_pred = model.predict(X_test)

# মডেল মূল্যায়ন
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

ধাপ ৬: মডেল পূর্বাভাস

এখন, প্রশিক্ষিত মডেল ব্যবহার করে আমরা নতুন ডেটা থেকে পূর্বাভাস পেতে পারি।

# নতুন টেক্সটের পূর্বাভাস করা
new_text = ["I absolutely love this movie!"]
processed_text = preprocess_text(new_text[0])
vectorized_text = vectorizer.transform([processed_text])

prediction = model.predict(vectorized_text)
print(f'Sentiment: {prediction[0]}')

সারাংশ

Sentiment Analysis একটি গুরুত্বপূর্ণ Natural Language Processing (NLP) টাস্ক, যা ব্যবহারকারীর মতামত এবং অনুভূতি নির্ধারণ করতে সাহায্য করে। আমরা এখানে একটি প্রাথমিক Logistic Regression মডেল ব্যবহার করে সেন্টিমেন্ট অ্যানালাইসিস করেছি, যেখানে TF-IDF ব্যবহার করে টেক্সট ভেক্টরাইজেশন, এবং NLTK দিয়ে প্রিপ্রসেসিং করা হয়েছে। প্রজেক্টটি যেকোনো টেক্সট ডেটা সেন্টিমেন্ট বিশ্লেষণ করতে ব্যবহার করা যেতে পারে, যেমন সোশ্যাল মিডিয়া পোস্ট, রিভিউ ইত্যাদি।

Content added By
Promotion

Are you sure to start over?

Loading...