Skill

বাস্তব উদাহরণ এবং প্রজেক্ট ডেমো

পাইথন কৃত্রিম বুদ্ধিমত্তা (Artificial Intelligence with Python) - Machine Learning

464

একটি বাস্তব উদাহরণ এবং প্রজেক্ট ডেমো দিয়ে মেশিন লার্নিং মডেল ডেপ্লয়মেন্টের প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হলো। আমরা একটি সাধারণ টেক্সট ক্লাসিফিকেশন মডেল তৈরি করব এবং সেটি একটি API সার্ভিসে ডেপ্লয় করব, যা Flask এবং Docker ব্যবহার করবে।

প্রজেক্টের উদ্দেশ্য:

আমরা একটি Sentiment Analysis মডেল তৈরি করব যা একটি টেক্সট ইনপুটের ভিত্তিতে তার সেন্টিমেন্ট (পজিটিভ বা নেগেটিভ) পূর্বাভাস করবে। তারপর আমরা এই মডেলটি ডেপ্লয় করব একটি Flask API রূপে, এবং শেষে সেটি একটি Docker কনটেইনারে মোড়ানো হবে।


ধাপ ১: মডেল তৈরি

আমরা প্রথমে scikit-learn এবং nltk লাইব্রেরি ব্যবহার করে একটি সাধারণ Logistic Regression মডেল তৈরি করব যা টেক্সট ক্লাসিফিকেশন করবে।

কোড উদাহরণ:

import nltk
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import joblib

# টেক্সট ডেটা (সেন্টিমেন্ট লেবেল সহ)
texts = ['I love this product', 'This is the worst thing I have bought', 'Really great experience', 'Not happy with the service']
labels = ['positive', 'negative', 'positive', 'negative']

# ডেটা প্রক্রিয়াকরণ
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)
y = labels

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

# মডেল তৈরি করা
model = LogisticRegression()
model.fit(X_train, y_train)

# মডেল সংরক্ষণ করা
joblib.dump(model, 'sentiment_model.pkl')
joblib.dump(vectorizer, 'vectorizer.pkl')

ধাপ ২: Flask API তৈরি

এখন আমরা Flask ব্যবহার করে একটি API তৈরি করব যা আমাদের সেন্টিমেন্ট মডেলটি ব্যবহার করবে।

কোড উদাহরণ:

from flask import Flask, request, jsonify
import joblib

app = Flask(__name__)

# মডেল এবং ভেক্টরাইজার লোড করা
model = joblib.load('sentiment_model.pkl')
vectorizer = joblib.load('vectorizer.pkl')

@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json(force=True)
    text = data['text']
    
    # টেক্সট ভেক্টরাইজ করা
    text_vector = vectorizer.transform([text])
    
    # পূর্বাভাস করা
    prediction = model.predict(text_vector)
    
    return jsonify({'prediction': prediction[0]})

if __name__ == '__main__':
    app.run(debug=True)

এখানে, /predict রুটটি POST অনুরোধ গ্রহণ করে এবং পাঠানো টেক্সটের সেন্টিমেন্ট পূর্বাভাস প্রদান করে।


ধাপ ৩: Docker কনটেইনার তৈরি করা

এখন আমরা আমাদের Flask অ্যাপটি Docker কনটেইনারে মোড়ানো জন্য Dockerfile তৈরি করব।

Dockerfile:

# Python ইমেজ ব্যবহার করা
FROM python:3.8-slim

# অ্যাপলিকেশন কপি করা
COPY . /app
WORKDIR /app

# প্রয়োজনীয় প্যাকেজ ইন্সটল করা
RUN pip install -r requirements.txt

# Flask অ্যাপ চালানো
CMD ["python", "app.py"]

requirements.txt:

flask
scikit-learn
joblib
nltk

এখন, Docker কনটেইনার তৈরি এবং রান করার জন্য কমান্ড:

docker build -t sentiment-api .
docker run -p 5000:5000 sentiment-api

এটা আমাদের Flask অ্যাপ্লিকেশনকে একটি Docker কনটেইনারে চালু করবে এবং আমরা http://localhost:5000/predict রুটে POST অনুরোধ পাঠিয়ে পূর্বাভাস পেতে পারব।


ধাপ ৪: API এ POST রিকোয়েস্ট পাঠানো

একবার Docker কনটেইনার চলতে শুরু করলে, আমরা API-তে POST রিকোয়েস্ট পাঠাতে পারি। নিচে একটি উদাহরণ দেওয়া হলো যেখানে আমরা requests লাইব্রেরি ব্যবহার করে POST রিকোয়েস্ট পাঠাব:

import requests

# POST রিকোয়েস্ট পাঠানো
url = "http://localhost:5000/predict"
data = {"text": "I really love this product!"}

response = requests.post(url, json=data)
print(response.json())

এটি JSON আউটপুট প্রদান করবে:

{'prediction': 'positive'}

ধাপ ৫: মডেল ডেপ্লয়মেন্ট পরবর্তী মনিটরিং এবং আপডেট

  • মনিটরিং: একবার মডেল ডেপ্লয় হলে, তার কার্যকারিতা নিয়মিতভাবে পর্যবেক্ষণ করা প্রয়োজন। API-এর লোড, একিউরেসি, এবং অন্যান্য মেট্রিক্স মনিটর করা উচিত।
  • মডেল আপডেট: সময়ের সাথে সাথে মডেলটি নতুন ডেটা দিয়ে পুনঃপ্রশিক্ষিত করা উচিত। এইভাবে, মডেলটি পুরনো ডেটার পরিবর্তন বা নতুন প্রবণতা অনুযায়ী মানিয়ে নিতে পারবে।

প্রজেক্টের সারাংশ

এই প্রজেক্টে আমরা একটি সেন্টিমেন্ট অ্যানালাইসিস মডেল তৈরি করেছি এবং সেটি একটি Flask API তে রূপান্তর করেছি। পরে আমরা মডেলটি Docker কনটেইনারে মোড়ানো এবং স্কেলেবলভাবে API ডেপ্লয় করেছি। এর মাধ্যমে মডেলটি রিয়েল-টাইমে টেক্সট ইনপুট নিয়ে তার সেন্টিমেন্ট (পজিটিভ/নেগেটিভ) পূর্বাভাস প্রদান করছে।

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

Content added By

এখানে একটি সাধারণ মেশিন লার্নিং প্রজেক্ট উদাহরণ আলোচনা করা হবে, যা একটি Classification সমস্যা সমাধান করবে। প্রজেক্টটি আমরা Iris Dataset ব্যবহার করে তৈরি করব এবং Scikit-learn লাইব্রেরি দিয়ে মডেল তৈরি করব।

প্রজেক্ট: Iris Flower Classification

Iris Dataset হল একটি বিখ্যাত ডেটাসেট যা বিভিন্ন ধরনের Iris ফুল এর বৈশিষ্ট্য নিয়ে তৈরি। এটি ৪টি বৈশিষ্ট্য (sepal length, sepal width, petal length, petal width) এর উপর ভিত্তি করে ফুলের ৩টি ভিন্ন প্রজাতি (setosa, versicolor, virginica) শ্রেণীবদ্ধ করা হয়।


প্রজেক্টের ধাপসমূহ

  1. ডেটা লোড এবং প্রাক-প্রক্রিয়া (Data Loading and Preprocessing)
  2. ডেটা বিভাজন (Data Splitting)
  3. মডেল তৈরি (Model Building)
  4. মডেল প্রশিক্ষণ (Model Training)
  5. মডেল মূল্যায়ন (Model Evaluation)
  6. মডেল সংরক্ষণ (Model Saving)

1. ডেটা লোড এবং প্রাক-প্রক্রিয়া

প্রথমে Iris dataset লোড করা হবে এবং কিছু প্রাথমিক প্রক্রিয়া করা হবে যেমন ডেটার তথ্য পরীক্ষা করা এবং মিসিং ভ্যালু থাকলে সেগুলি পূর্ণ করা।

import pandas as pd
from sklearn.datasets import load_iris

# Iris ডেটাসেট লোড করা
iris = load_iris()

# ডেটা ফ্রেম তৈরি
df = pd.DataFrame(data=iris.data, columns=iris.feature_names)
df['species'] = iris.target

# ডেটার প্রথম কিছু সারি প্রদর্শন
print(df.head())

2. ডেটা বিভাজন

ডেটাকে প্রশিক্ষণ (training) এবং পরীক্ষা (testing) সেটে ভাগ করা হবে। সাধারণত ৭০%-৮০% ডেটা প্রশিক্ষণের জন্য এবং ২০%-৩০% ডেটা পরীক্ষণের জন্য রাখা হয়।

from sklearn.model_selection import train_test_split

# ডেটা এবং লক্ষ্য বৈশিষ্ট্য আলাদা করা
X = df.drop('species', axis=1)  # বৈশিষ্ট্য
y = df['species']               # লক্ষ্য

# ডেটা বিভাজন
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

3. মডেল তৈরি

এখানে আমরা একটি সহজ মেশিন লার্নিং ক্লাসিফিকেশন মডেল, Logistic Regression ব্যবহার করব। আপনি চাইলে অন্যান্য ক্লাসিফিকেশন মডেল যেমন Random Forest বা Support Vector Machine (SVM) ব্যবহার করতে পারেন।

from sklearn.linear_model import LogisticRegression

# মডেল তৈরি
model = LogisticRegression(max_iter=200)

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

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

আমরা মডেলটি fit() ফাংশন দিয়ে প্রশিক্ষণ দিব। এখানে, X_train বৈশিষ্ট্য এবং y_train লক্ষ্য বা আউটপুট হবে। মডেলটি এই ডেটা থেকে শিখবে এবং একটি সিদ্ধান্তে পৌঁছাবে।

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

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

মডেল প্রশিক্ষণ হয়ে গেলে, Accuracy এবং Confusion Matrix ব্যবহার করে মডেলটির পারফরম্যান্স পরীক্ষা করা হবে। এখানে accuracy_score এবং confusion_matrix ব্যবহার করা হবে।

from sklearn.metrics import accuracy_score, confusion_matrix

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

# Accuracy নির্ণয় করা
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy * 100:.2f}%')

# Confusion Matrix
conf_matrix = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(conf_matrix)

6. মডেল সংরক্ষণ

শেষে, মডেলটি সংরক্ষণ করা হবে যাতে পরবর্তীতে তা আবার ব্যবহার করা যেতে পারে, যেমন একটি ওয়েব সার্ভিস বা অ্যাপ্লিকেশনে ইন্টিগ্রেট করা।

import joblib

# মডেল সংরক্ষণ করা
joblib.dump(model, 'iris_model.pkl')

# মডেল পুনরায় লোড করা
loaded_model = joblib.load('iris_model.pkl')

উপসংহার

এই প্রজেক্টে আমরা Iris Dataset ব্যবহার করে একটি Logistic Regression মডেল তৈরি করেছি এবং সেটি প্রশিক্ষণ, মূল্যায়ন, এবং সংরক্ষণ করেছি। এই প্রজেক্টটি মেশিন লার্নিংয়ের মৌলিক ধারণা এবং স্কikit-learn লাইব্রেরি ব্যবহারের প্রাথমিক অভিজ্ঞতা প্রদান করে।

এই ধরনের প্রজেক্টে আপনি Supervised Learning মডেল তৈরির বিভিন্ন ধাপ, যেমন ডেটা লোডিং, প্রশিক্ষণ, পরীক্ষা, এবং মূল্যায়ন প্রক্রিয়া শিখতে পারেন।

Content added By

Image Classification হল একটি কম্পিউটার ভিশন টাস্ক যেখানে একটি মডেল একটি চিত্রের মধ্যে উপস্থিত অবজেক্ট বা শ্রেণী সনাক্ত করার চেষ্টা করে। ডিপ লার্নিং মডেল, বিশেষত Convolutional Neural Networks (CNN), চিত্র শ্রেণীভিত্তিক বিশ্লেষণে ব্যাপকভাবে ব্যবহৃত হয়।

এই প্রজেক্টে, আমরা Keras এবং TensorFlow ব্যবহার করে একটি Image Classification মডেল তৈরি করবো, যা একটি প্রাথমিক চিত্র ডেটাসেট (যেমন CIFAR-10) ব্যবহার করে চিত্র শ্রেণীভিত্তিক ক্লাসিফিকেশন করবে।

১. ডেটাসেট নির্বাচন

এই প্রজেক্টে আমরা CIFAR-10 ডেটাসেট ব্যবহার করব, যা ১০টি শ্রেণী সহ ৬০,০০০ ৩২x৩২ পিক্সেল আকারের রঙিন চিত্র ধারণ করে।

শ্রেণীগুলি হল:

  • airplane
  • automobile
  • bird
  • cat
  • deer
  • dog
  • frog
  • horse
  • ship
  • truck

২. ডিপ লার্নিং মডেল তৈরি

আমরা CNN (Convolutional Neural Network) ব্যবহার করে একটি মডেল তৈরি করব, যা চিত্রের বৈশিষ্ট্যগুলি শিখবে এবং সেগুলিকে শ্রেণীভিত্তিক সঠিকভাবে শ্রেণীভুক্ত করবে।

৩. প্রক্রিয়া

  1. লাইব্রেরি ইনস্টলেশন: প্রথমে প্রয়োজনীয় লাইব্রেরি ইনস্টল করতে হবে:

    pip install tensorflow keras numpy matplotlib
    
  2. ডেটা লোড করা এবং প্রিপ্রসেসিং: CIFAR-10 ডেটাসেট কেরাস লাইব্রেরির মাধ্যমে সরাসরি লোড করা যেতে পারে।
  3. মডেল তৈরি করা: একটি কনভলিউশনাল নিউরাল নেটওয়ার্ক তৈরি করা হবে।
  4. মডেল প্রশিক্ষণ: মডেলটি fit() ফাংশন ব্যবহার করে প্রশিক্ষণ দেওয়া হবে।
  5. মডেল মূল্যায়ন এবং পূর্বাভাস: প্রশিক্ষণের পর, মডেলটির কার্যকারিতা যাচাই করা হবে এবং নতুন চিত্রের পূর্বাভাস দেওয়া হবে।

কোড উদাহরণ

import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import cifar10
import matplotlib.pyplot as plt

# CIFAR-10 ডেটাসেট লোড করা
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

# ডেটা নরমালাইজেশন (0-255 এর মানকে 0-1 এর মধ্যে নিয়ে আসা)
x_train, x_test = x_train / 255.0, x_test / 255.0

# মডেল তৈরি করা
model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
    layers.MaxPooling2D((2, 2)),
    
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    
    layers.Conv2D(64, (3, 3), activation='relu'),
    
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10)
])

# মডেল কম্পাইল করা
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

# মডেল প্রশিক্ষণ
model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))

# মডেল মূল্যায়ন
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f"Test accuracy: {test_acc}")

# পূর্বাভাস প্রদান
predictions = model.predict(x_test)

# প্রথম ৫টি চিত্র দেখানো এবং পূর্বাভাস দেখানো
for i in range(5):
    plt.imshow(x_test[i])
    plt.title(f"Predicted: {predictions[i].argmax()} - True: {y_test[i][0]}")
    plt.show()

কোডের ব্যাখ্যা:

  1. ডেটা লোড করা:
    • cifar10.load_data() ফাংশন দিয়ে CIFAR-10 ডেটাসেট লোড করা হচ্ছে। এটি স্বয়ংক্রিয়ভাবে ট্রেনিং এবং টেস্ট ডেটাসেট প্রদান করে।
  2. ডেটা প্রিপ্রসেসিং:
    • ডেটা লোড হওয়ার পর, ইনপুট চিত্রগুলিকে [0, 1] রেঞ্জে নরমালাইজ করা হয় যাতে মডেল দ্রুত এবং কার্যকরভাবে প্রশিক্ষিত হয়।
  3. মডেল তৈরি:
    • প্রথম কনভলিউশনাল স্তরটি ইনপুট চিত্রের বৈশিষ্ট্য বের করে, এরপর MaxPooling লেয়ারটি ডেটার আকার কমিয়ে দেয়। এই ধাপগুলো আরও গভীর লেয়ারের জন্য কার্যকরী বৈশিষ্ট্য তৈরি করে।
    • শেষে একটি Dense লেয়ার যোগ করা হয়েছে যা আউটপুট শ্রেণী নির্ধারণ করবে (এখানে ১০টি শ্রেণী রয়েছে)।
  4. মডেল কম্পাইল করা:
    • Adam অপটিমাইজার এবং SparseCategoricalCrossentropy লস ফাংশন ব্যবহার করা হয়েছে, কারণ এটি মাল্টিক্লাস শ্রেণীভিত্তিক ক্লাসিফিকেশন কাজের জন্য উপযুক্ত।
  5. মডেল প্রশিক্ষণ:
    • মডেলটি ১০টি Epoch পর্যন্ত ট্রেনিং হবে এবং validation_data প্যারামিটার ব্যবহার করে validation accuracy যাচাই করা হবে।
  6. মূল্যায়ন:
    • evaluate() ফাংশন ব্যবহার করে টেস্ট ডেটাসেটে মডেলের পারফরম্যান্স মূল্যায়ন করা হয়।
  7. পূর্বাভাস:
    • মডেলটি predict() ফাংশন ব্যবহার করে নতুন চিত্রের পূর্বাভাস প্রদান করে এবং সেগুলি matplotlib দিয়ে প্রদর্শন করা হয়।

ফলাফল এবং সম্ভাব্য উন্নতি:

  1. ফলাফল:
    • এই কোডটি মডেলকে CIFAR-10 ডেটাসেটে প্রশিক্ষণ দেয় এবং এটি চিত্র সঠিকভাবে শ্রেণীভুক্ত করার চেষ্টা করবে। মডেলটি ১০টি শ্রেণী (airplane, automobile, bird, cat, etc.) মধ্যে চিত্রগুলোকে শ্রেণীভুক্ত করবে।
  2. উন্নতি:
    • Data Augmentation: যদি মডেল আরও উন্নত করতে চান, তবে data augmentation ব্যবহার করে ডেটাসেট বৃদ্ধি করা যেতে পারে। এর মাধ্যমে মডেল আরও বিভিন্ন ধরনের চিত্র শিখতে পারবে।
    • Model Architecture Improvement: মডেলটির আর্কিটেকচার আরও উন্নত করা যেতে পারে, যেমন আরও গভীর কনভলিউশনাল স্তর যোগ করা, বা আরও উন্নত ফিচার এক্সট্র্যাকশন টেকনিক ব্যবহার করা।
    • Regularization: Dropout বা L2 regularization ব্যবহার করা যেতে পারে যাতে ওভারফিটিং রোধ করা যায়।

সারাংশ

এই প্রজেক্টে, Deep Learning ব্যবহার করে একটি Convolutional Neural Network (CNN) তৈরি করা হয়েছে, যা CIFAR-10 ডেটাসেট ব্যবহার করে চিত্র শ্রেণীভিত্তিক ক্লাসিফিকেশন করবে। এটি একটি বাস্তব-জগতের সমস্যা সমাধানে সাহায্য করতে পারে, যেখানে চিত্র বিশ্লেষণের মাধ্যমে বিভিন্ন ক্যাটেগরিতে চিহ্নিত করা প্রয়োজন।

Content added By

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

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

মডেল ডেপ্লয়মেন্টের মাধ্যমে আপনার মডেলটি ইন-প্রোডাকশন সিস্টেমে ব্যবহার উপযোগী হয়ে ওঠে এবং API integration এর মাধ্যমে অন্যান্য সিস্টেমের সাথে যোগাযোগ তৈরি করা হয়।


মডেল ডেপ্লয়মেন্ট (Model Deployment)

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

ধাপ ১: মডেল ট্রেনিং ও সেভ করা

প্রথমে মডেলটি তৈরি করতে হবে এবং সেভ করতে হবে, যাতে ডেপ্লয়মেন্টের জন্য প্রস্তুত থাকে।

from sklearn.ensemble import RandomForestClassifier
import pickle
from sklearn.datasets import load_iris

# ডেটাসেট লোড করা
iris = load_iris()
X = iris.data
y = iris.target

# মডেল ট্রেনিং
model = RandomForestClassifier(n_estimators=100)
model.fit(X, y)

# মডেল সেভ করা
with open('rf_model.pkl', 'wb') as file:
    pickle.dump(model, file)

ধাপ ২: Flask অ্যাপ তৈরি করা

Flask একটি মাইক্রো ফ্রেমওয়ার্ক যা সহজে API তৈরি করতে সাহায্য করে। এখানে, আমরা একটি Flask অ্যাপ তৈরি করবো যা আমাদের মডেলটি লোড করবে এবং API দিয়ে ইনপুট গ্রহণ করবে।

from flask import Flask, request, jsonify
import pickle

app = Flask(__name__)

# মডেল লোড করা
with open('rf_model.pkl', 'rb') as file:
    model = pickle.load(file)

@app.route('/')
def home():
    return "Welcome to the ML Model API"

@app.route('/predict', methods=['POST'])
def predict():
    data = request.get_json(force=True)
    prediction = model.predict([data['features']])
    return jsonify({'prediction': prediction.tolist()})

if __name__ == '__main__':
    app.run(debug=True)

ধাপ ৩: API টেস্ট করা

Flask অ্যাপ চলতে থাকলে, এখন আপনি API কল করতে পারেন। API চালু করার জন্য:

python app.py

এটি ওয়েব ব্রাউজারে http://127.0.0.1:5000 তে অ্যাপ্লিকেশন চালু করবে। আপনি POST রিকোয়েস্ট পাঠাতে পারবেন /predict এন্ডপয়েন্টে, যেখানে ইনপুট ডেটা হিসেবে একটি JSON ফর্ম্যাট প্রদান করতে হবে।

curl -X POST -H "Content-Type: application/json" -d '{"features": [5.1, 3.5, 1.4, 0.2]}' http://127.0.0.1:5000/predict

এটি একটি পূর্বাভাস রিটার্ন করবে:

{
    "prediction": [0]
}

API Integration

এখন, মডেল API তৈরি হয়ে গেলে, এটি অন্যান্য সিস্টেমের সাথে ইন্টিগ্রেট করা যায়। API integration হল আপনার মডেলকে অন্য অ্যাপ্লিকেশন বা সিস্টেমের সাথে সংযোগ করে সেটি ব্যবহার করা।

ধাপ ১: API ক্লায়েন্ট তৈরি করা

Python-এ requests লাইব্রেরি ব্যবহার করে আপনি API কল করতে পারেন।

pip install requests

এখানে একটি উদাহরণ দেওয়া হলো যেখানে আমরা Flask API তে POST রিকোয়েস্ট পাঠাবো:

import requests

url = 'http://127.0.0.1:5000/predict'
data = {'features': [5.1, 3.5, 1.4, 0.2]}

# API রিকোয়েস্ট পাঠানো
response = requests.post(url, json=data)

# রেসপন্স দেখা
print(response.json())

এটি JSON ফর্ম্যাটে ফলাফল রিটার্ন করবে:

{
    "prediction": [0]
}

ধাপ ২: API Integration with Web/Mobile Application

এই API কে ওয়েব অ্যাপ বা মোবাইল অ্যাপ্লিকেশনের সাথে ইন্টিগ্রেট করা যেতে পারে। উদাহরণস্বরূপ, আপনি একটি ওয়েব ফর্ম বা মোবাইল অ্যাপ্লিকেশন তৈরি করতে পারেন, যেখানে ব্যবহারকারী ইনপুট দেয় এবং সেটি API তে পাঠিয়ে পূর্বাভাস নেয়।

Web Application এর ক্ষেত্রে, আপনি JavaScript ব্যবহার করে API কল করতে পারেন:

const data = { features: [5.1, 3.5, 1.4, 0.2] };

fetch('http://127.0.0.1:5000/predict', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(data)
})
  .then(response => response.json())
  .then(data => console.log('Prediction:', data.prediction));

সারাংশ

  • মডেল ডেপ্লয়মেন্ট হল মডেলটিকে প্রোডাকশন সিস্টেমে চালু করা, যাতে তা বাস্তব বিশ্বের ডেটার উপর কাজ করতে পারে।
  • API Integration হল মডেলকে ওয়েব বা মোবাইল অ্যাপ্লিকেশনের সাথে সংযুক্ত করার প্রক্রিয়া।
  • Flask ব্যবহারের মাধ্যমে আপনি দ্রুত RESTful API তৈরি করতে পারেন এবং requests বা fetch API ব্যবহার করে আপনার অ্যাপ্লিকেশনকে সেই API তে সংযুক্ত করতে পারেন।
Content added By
Promotion

Are you sure to start over?

Loading...