Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Phân tích cảm xúc người dùng: một đề tài AI dễ ăn điểm
Hướng Dẫn Đồ Án

Phân tích cảm xúc người dùng: một đề tài AI dễ ăn điểm

Chia sẻ
Chia sẻ

Giới thiệu

Trong những năm gần đây, các đề tài về phân tích cảm xúc người dùng (Sentiment Analysis) đang trở thành một trong những hướng đi phổ biến trong các đồ án, đặc biệt là đồ án tốt nghiệp hoặc thực tập ngành CNTT hoặc các đồ án AI – machine learning.

Tại sao?

  • Bài toán có nội dung gần gũi, dễ hiểu

  • dữ liệu công khai trên Kaggle, GitHub

  • Dễ triển khai bằng các thư viện phổ biến như scikit-learn, pandas, nltk, sklearn

  • Có thể mở rộng lên mô hình hiện đại như BERT sau khi làm xong mô hình cơ bản

Bài viết này sẽ hướng dẫn bạn từng bước xây dựng một hệ thống phân tích cảm xúc đơn giản bằng Python. Bạn chỉ cần biết một chút về Python, còn lại mình sẽ lo!

Tải dữ liệu cảm xúc có sẵn để huấn luyện mô hình

Để làm bài toán này, ta sẽ sử dụng tập dữ liệu từ Kaggle:
Sentiment140 – Twitter Dataset

Bạn hãy tải file CSV từ link trên, đặt vào thư mục data/ và đổi tên thành sentiment.csv (nếu cần).

Cấu trúc dữ liệu gồm:

  • target: 0 = tiêu cực, 4 = tích cực

  • text: nội dung tweet

  • Một số cột không cần thiết khác có thể bỏ đi

Tiền xử lý dữ liệu văn bản để mô hình hiểu được

Trước khi huấn luyện, bạn cần xử lý văn bản: loại bỏ ký tự đặc biệt, chuyển chữ thường, loại stopwords, tách từ…

File: preprocess.py

import pandas as pd
import re
import nltk
from nltk.corpus import stopwords

nltk.download('stopwords')
stop_words = set(stopwords.words('english'))

def clean_text(text):
    text = text.lower()
    text = re.sub(r'http\S+', '', text)  # bỏ link
    text = re.sub(r'[^a-zA-Z\s]', '', text)  # bỏ ký tự đặc biệt
    text = ' '.join(word for word in text.split() if word not in stop_words)
    return text

# Đọc dữ liệu
df = pd.read_csv("data/sentiment.csv", encoding='latin-1', usecols=[0, 5], names=["target", "text"], header=None)

# Gộp label về 0 (tiêu cực) và 1 (tích cực)
df['target'] = df['target'].apply(lambda x: 0 if x == 0 else 1)
df['text'] = df['text'].apply(clean_text)

df.to_csv("data/sentiment_clean.csv", index=False)

Sau bước này, bạn có thể tiếp tục bước vector hóa văn bản.

Chuyển văn bản thành vector số bằng TF-IDF

Mô hình học máy không thể làm việc với text thuần túy, nên ta cần chuyển text thành dạng vector.

File: vectorize.py

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
import joblib

df = pd.read_csv("data/sentiment_clean.csv")

vectorizer = TfidfVectorizer(max_features=5000)
X = vectorizer.fit_transform(df['text'])
y = df['target']

# Lưu vectorizer để dùng lại khi dự đoán
joblib.dump(vectorizer, "vectorizer.pkl")

# Lưu đặc trưng và nhãn
joblib.dump((X, y), "data/data_vectorized.pkl")

Huấn luyện mô hình phân tích cảm xúc đơn giản

Ở bước này, bạn sẽ huấn luyện mô hình Logistic Regression – thuật toán đơn giản nhưng cực kỳ hiệu quả với dữ liệu text.

File: train.py

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

# Tải dữ liệu vector hóa
X, y = joblib.load("data/data_vectorized.pkl")

# Chia dữ liệu train/test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Huấn luyện
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)

# Dự đoán
y_pred = model.predict(X_test)

# Đánh giá độ chính xác
acc = accuracy_score(y_test, y_pred)
print(f"Độ chính xác: {acc*100:.2f}%")

# Lưu mô hình
joblib.dump(model, "model_sentiment.pkl")

Nếu chạy đúng, bạn sẽ đạt độ chính xác trên 80% mà không cần đến deep learning.

Dự đoán cảm xúc của một câu mới bất kỳ

Sau khi huấn luyện, bạn có thể dùng mô hình để phân tích cảm xúc của bất kỳ câu nào.

File: predict.py

import joblib
import re

model = joblib.load("model_sentiment.pkl")
vectorizer = joblib.load("vectorizer.pkl")

def clean(text):
    text = text.lower()
    text = re.sub(r'http\S+', '', text)
    text = re.sub(r'[^a-zA-Z\s]', '', text)
    return text

# Văn bản cần phân tích
sample = "I really love this product. It's amazing!"

sample_clean = clean(sample)
X_input = vectorizer.transform([sample_clean])
prediction = model.predict(X_input)

label = "Tích cực" if prediction[0] == 1 else "Tiêu cực"
print(f"Cảm xúc của người dùng là: {label}")

Mở rộng đồ án phân tích cảm xúc

Sau khi hoàn thành bản đơn giản, bạn có thể mở rộng bằng:

  • Dùng Naive Bayes, Random Forest, hoặc SVM để so sánh kết quả

  • Tạo giao diện nhập cảm xúc người dùng bằng Streamlit hoặc Flask

  • Dự đoán cảm xúc trên bình luận sản phẩm, đánh giá app, hoặc bài đăng Facebook

  • Tạo dashboard thống kê theo thời gian, biểu đồ phân phối tích cực/tiêu cực

  • Dùng mô hình nâng cao như BERT hoặc LSTM để nâng độ chính xác

Kết luận

Phân tích cảm xúc người dùng là một đề tài AI dễ ăn điểm, dễ triển khai, nhưng vẫn có giá trị thực tiễn cao. Với dữ liệu có sẵn, mô hình đơn giản bằng scikit-learn, bạn hoàn toàn có thể tạo ra một đồ án thuyết phục, dễ trình bày và dễ mở rộng sau này.

Chỉ với vài file .py, bạn có thể xây dựng:

  • Mô hình phân tích cảm xúc

  • Giao diện dự đoán tương tác

  • Báo cáo đánh giá độ chính xác

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!