Sentiment Analysis এবং Text Classification

Machine Learning - পাইথন কৃত্রিম বুদ্ধিমত্তা (Artificial Intelligence with Python) - প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (Natural Language Processing - NLP)
428

Sentiment Analysis এবং Text Classification দুটি গুরুত্বপূর্ণ প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (Natural Language Processing - NLP) কাজ, যা টেক্সট ডেটার মধ্য থেকে আর্ন্তজাতিক তথ্য বের করার জন্য ব্যবহৃত হয়। এই দুটি পদ্ধতি মূলত মেশিন লার্নিং এবং ডিপ লার্নিং মডেল ব্যবহার করে প্রক্রিয়া করা হয় এবং এটি অনেক ক্ষেত্রে যেমন সোশ্যাল মিডিয়া মনিটরিং, মার্কেট রিসার্চ, গ্রাহক সেবা ইত্যাদিতে ব্যবহৃত হয়।

১. Sentiment Analysis

Sentiment Analysis হলো এমন একটি প্রক্রিয়া যা টেক্সটের মধ্যে মনোভাব, অবস্থার অনুভূতি বা আবেগ নির্ধারণ করে। এটি সাধারণত পজিটিভ, নেগেটিভ, বা নিউট্রাল শ্রেণিতে ভাগ করা হয়।

উদাহরণ:

  • একটি টুইট বা গ্রাহক পর্যালোচনা যদি বলা হয় "এই প্রোডাক্টটি খুবই ভালো", তাহলে এটি পজিটিভ সেন্টিমেন্ট।
  • "এই প্রোডাক্টটি খুবই খারাপ" হলে এটি নেগেটিভ সেন্টিমেন্ট।
  • "এটি একটি সাধারণ প্রোডাক্ট" হলে এটি নিউট্রাল সেন্টিমেন্ট।

Sentiment Analysis এর গুরুত্ব:

  1. গ্রাহক প্রতিক্রিয়া বিশ্লেষণ: ব্যবসায়ের জন্য গ্রাহকদের মতামত এবং অনুভূতি বোঝা খুবই গুরুত্বপূর্ণ। এটি তাদের সেবা এবং পণ্য উন্নত করতে সাহায্য করে।
  2. সোশ্যাল মিডিয়া মনিটরিং: বিভিন্ন প্ল্যাটফর্মে মানুষের অনুভূতি এবং মতামত বিশ্লেষণ করে কোম্পানিগুলি তাদের ব্র্যান্ড ইমেজ এবং বিপণন কৌশল পরিচালনা করতে পারে।
  3. পণ্য বা সেবার পারফরম্যান্স: একটি পণ্য বা সেবা সম্পর্কে সাধারণ জনগণের অনুভূতি বিশ্লেষণ করা।

২. Text Classification

Text Classification একটি প্রক্রিয়া যা নির্দিষ্ট টেক্সট ডেটাকে নির্দিষ্ট শ্রেণিতে (যেমন: ইমেইল স্প্যাম, নন-স্প্যাম, গ্রাহক অভিযোগ ইত্যাদি) শ্রেণিবদ্ধ করে। এই প্রক্রিয়ায় বিভিন্ন কাগজপত্র, ওয়েব পেজ, ইমেইল ইত্যাদির মধ্যে তথ্য খুঁজে বের করা এবং তাদের শ্রেণি নির্ধারণ করা হয়।

উদাহরণ:

  • একটি ইমেইল যদি "ফ্রি অফার! আপনার আইফোন জিতে নিন" থাকে, তবে এটি স্প্যাম ইমেইল হিসেবে শ্রেণিবদ্ধ হবে।
  • একটি নিউজ আর্টিকেল যদি প্রযুক্তি বিষয়ক হয়, তবে এটি "প্রযুক্তি" শ্রেণিতে রাখা হবে।
  • একটি টুইট যদি "বিক্রয়ের জন্য সস্তা ল্যাপটপ" সম্পর্কিত হয়, তবে এটি একটি "বিপণন" শ্রেণিতে রাখা হতে পারে।

Text Classification এর গুরুত্ব:

  1. স্প্যাম ফিল্টারিং: ইমেইল এবং টেক্সট ডেটা থেকে স্প্যাম ফিল্টার করা।
  2. টেক্সট কন্টেন্ট ক্যাটেগোরাইজেশন: বিভিন্ন শ্রেণিতে টেক্সট কন্টেন্ট ভাগ করা যেমন সেগমেন্টেশন, ন্যাচারাল ল্যাঙ্গুয়েজ ইনপুট এবং গ্রাহক পর্যালোচনা।
  3. বাজার গবেষণা: টেক্সট ক্লাসিফিকেশন ব্যবহার করে কোম্পানি তাদের পণ্যের জন্য গ্রাহকের মতামত বিশ্লেষণ করতে পারে।

Sentiment Analysis এবং Text Classification করতে Machine Learning মডেল ব্যবহার

Machine Learning এবং Deep Learning মডেল দ্বারা Sentiment Analysis এবং Text Classification করা সম্ভব। এখানে একটি Naive Bayes মডেল এবং Logistic Regression ব্যবহার করে একটি সাধারণ Sentiment Analysis এবং Text Classification উদাহরণ দেখানো হলো।

উদাহরণ: Text Classification using Scikit-learn

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score

# ডেটা (উদাহরণ হিসেবে)
data = {
    'text': ['I love this product', 'This is the worst thing ever', 'I am happy with the purchase', 'So bad, waste of money', 'Amazing experience'],
    'label': ['positive', 'negative', 'positive', 'negative', 'positive']
}

# প্যান্ডাস DataFrame এ ডেটা রূপান্তর
df = pd.DataFrame(data)

# ফিচার এবং লেবেল ভাগ করা
X = df['text']
y = df['label']

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

# CountVectorizer ব্যবহার করে টেক্সটের ভেক্টর তৈরি করা
vectorizer = CountVectorizer()
X_train_vect = vectorizer.fit_transform(X_train)
X_test_vect = vectorizer.transform(X_test)

# মডেল তৈরি করা (Naive Bayes)
model = MultinomialNB()

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

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

# মডেল মূল্যায়ন
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy * 100:.2f}%")

এই কোডে যা হচ্ছে:

  1. একটি ছোট ডেটাসেট তৈরি করা হয়েছে যেখানে positive এবং negative শ্রেণি রয়েছে।
  2. CountVectorizer ব্যবহার করে টেক্সট ডেটাকে bag-of-words ফর্মেটে রূপান্তর করা হয়েছে, যেখানে প্রতিটি শব্দ একটি ফিচার হিসেবে বিবেচিত হয়।
  3. Naive Bayes Classifier ব্যবহার করা হয়েছে টেক্সট ক্লাসিফিকেশন বা সেন্টিমেন্ট অ্যানালাইসিসের জন্য।
  4. শেষে, accuracy_score দিয়ে মডেলটির সঠিকতা পরিমাপ করা হয়েছে।

Deep Learning দিয়ে Sentiment Analysis

ডিপ লার্নিং মডেল, বিশেষত Recurrent Neural Networks (RNN) এবং Long Short-Term Memory (LSTM), Text Classification এবং Sentiment Analysis কাজের জন্য অত্যন্ত কার্যকর। এখানে, শব্দের মধ্যকার সম্পর্ক এবং প্রেক্ষাপটের উপর ভিত্তি করে মডেলটি পূর্বাভাস দেয়।

from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM, Embedding, SpatialDropout1D
from tensorflow.keras.preprocessing.sequence import pad_sequences

# টেক্সট ডেটা
texts = ['I love this product', 'This is the worst thing ever', 'I am happy with the purchase', 'So bad, waste of money', 'Amazing experience']
labels = [1, 0, 1, 0, 1]  # 1 - positive, 0 - negative

# টোকেনাইজেশন
tokenizer = Tokenizer(num_words=5000, split=' ')
tokenizer.fit_on_texts(texts)
X = tokenizer.texts_to_sequences(texts)
X = pad_sequences(X)

# LSTM মডেল তৈরি
model = Sequential()
model.add(Embedding(5000, 64, input_length=X.shape[1]))
model.add(SpatialDropout1D(0.2))
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))

# মডেল কম্পাইল
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# মডেল প্রশিক্ষণ
model.fit(X, labels, epochs=5, batch_size=2, verbose=1)

এই কোডে যা হচ্ছে:

  1. Tokenizer ব্যবহার করে টেক্সট ডেটাকে সিকোয়েন্সে রূপান্তর করা হয়েছে।
  2. LSTM (Long Short-Term Memory) মডেল তৈরি করা হয়েছে, যা টেক্সটের মধ্যে দীর্ঘমেয়াদী সম্পর্ক শিখতে পারে।
  3. মডেলটি binary_crossentropy লস ফাংশন দিয়ে প্রশিক্ষিত হয়েছে, যেহেতু এটি একটি বাইনারি সেন্টিমেন্ট (পজিটিভ বা নেগেটিভ) প্রেডিকশন সমস্যা।

সারাংশ

Sentiment Analysis এবং Text Classification দুটি অত্যন্ত গুরুত্বপূর্ণ কাজ যা প্রাকৃতিক ভাষা প্রক্রিয়াকরণে ব্যবহৃত হয়। Sentiment Analysis মূলত একটি টেক্সটের অনুভূতি নির্ধারণ করার জন্য ব্যবহৃত হয় (পজিটিভ, নেগেটিভ, বা নিউট্রাল), এবং Text Classification বিভিন্ন টেক্সট ডেটাকে নির্দিষ্ট শ্রেণিতে ভাগ করার জন্য ব্যবহৃত হয়। এই কাজগুলোর জন্য Machine Learning এবং Deep Learning মডেল ব্যবহার করা হয়, যার মধ্যে Naive Bayes, Logistic Regression, RNN, এবং LSTM এর মতো মডেল বেশ জনপ্রিয়।

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

Are you sure to start over?

Loading...