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 review sản phẩm bằng học sâu
Hướng Dẫn Đồ ÁnLập Trình AI

Phân tích cảm xúc review sản phẩm bằng học sâu

Chia sẻ
Chia sẻ

Phân tích cảm xúc (Sentiment Analysis) là một trong những ứng dụng phổ biến nhất của xử lý ngôn ngữ tự nhiên (NLP). Nó được sử dụng để hiểu ý kiến của người dùng từ các bình luận, đánh giá sản phẩm hoặc phản hồi trên mạng xã hội. Với sự phát triển của học sâu, việc xây dựng mô hình phân tích cảm xúc đã trở nên đơn giản hơn bao giờ hết nhờ vào các framework như TensorFlow và PyTorch.

Trước khi đi sâu vào học sâu, bạn nên làm quen với tiền xử lý dữ liệu qua bài Hướng dẫn tiền xử lý dữ liệu sạch để huấn luyện mô hình tốt hơn và tìm hiểu tổng quan về Python qua bài Phân tích dữ liệu bán hàng bằng Python và Pandas. Bài Tự động phát hiện biển số xe từ ảnh bằng YOLO cũng là một ví dụ hay về ứng dụng học sâu cho computer vision, giúp bạn hình dung cách các mô hình deep learning hoạt động trong thực tế.

Dữ liệu để thực hành

Trong hướng dẫn này, chúng ta sẽ sử dụng bộ dữ liệu Amazon Product Reviews – một tập dữ liệu khổng lồ chứa các đánh giá của người dùng trên Amazon. Bộ dữ liệu này đã được phân loại cảm xúc thành positivenegative, phù hợp để huấn luyện mô hình học sâu.

📥 Link tải dataset: https://www.kaggle.com/datasets/bittlingmayer/amazonreviews

Bạn cần tải file ZIP, giải nén và upload vào Google Colab. Sau khi upload, tập tin quan trọng là reviews.csv.

Cài đặt thư viện và chuẩn bị môi trường

Học sâu yêu cầu một số thư viện chuyên dụng. Trên Google Colab, bạn có thể cài đặt nhanh bằng:

!pip install tensorflow pandas numpy matplotlib scikit-learn

Import các thư viện cần thiết:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from sklearn.model_selection import train_test_split

Đọc và khám phá dữ liệu

Sau khi tải và upload file reviews.csv, hãy đọc nó vào DataFrame và khám phá một vài dòng đầu tiên.

# Đọc dữ liệu
df = pd.read_csv('/content/reviews.csv')
df.head()

Xem thông tin tổng quan về dữ liệu:

df.info()
print(df['sentiment'].value_counts())

Tiền xử lý dữ liệu

Làm sạch dữ liệu văn bản

Loại bỏ các ký tự đặc biệt và chuyển tất cả về chữ thường để thống nhất.

import re

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

df['clean_review'] = df['review'].apply(clean_text)

Mã hóa nhãn

Chuyển đổi nhãn cảm xúc thành số để mô hình học sâu có thể xử lý.

df['label'] = df['sentiment'].apply(lambda x: 1 if x == 'positive' else 0)

Tách dữ liệu train/test

X_train, X_test, y_train, y_test = train_test_split(df['clean_review'], df['label'], test_size=0.2, random_state=42)

Tokenization và Padding

Sử dụng Keras Tokenizer để chuyển văn bản thành chuỗi số nguyên.

tokenizer = Tokenizer(num_words=5000, oov_token='<OOV>')
tokenizer.fit_on_texts(X_train)

train_sequences = tokenizer.texts_to_sequences(X_train)
test_sequences = tokenizer.texts_to_sequences(X_test)

max_length = 100
train_padded = pad_sequences(train_sequences, maxlen=max_length, padding='post', truncating='post')
test_padded = pad_sequences(test_sequences, maxlen=max_length, padding='post', truncating='post')

Xây dựng mô hình học sâu với TensorFlow

Chúng ta sẽ xây dựng một mạng neural đơn giản với Embedding Layer và LSTM.

model = tf.keras.Sequential([
    tf.keras.layers.Embedding(input_dim=5000, output_dim=64, input_length=max_length),
    tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(64)),
    tf.keras.layers.Dense(64, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()

Huấn luyện mô hình

history = model.fit(train_padded, y_train, epochs=5, validation_data=(test_padded, y_test), batch_size=128)

Đánh giá mô hình

Hiển thị độ chính xác và loss trên tập kiểm tra:

plt.plot(history.history['accuracy'], label='Train Accuracy')
plt.plot(history.history['val_accuracy'], label='Validation Accuracy')
plt.legend()
plt.title('Độ chính xác trong quá trình huấn luyện')
plt.show()

Dự đoán cảm xúc trên review mới

def predict_sentiment(text):
    seq = tokenizer.texts_to_sequences([clean_text(text)])
    padded = pad_sequences(seq, maxlen=max_length, padding='post')
    pred = model.predict(padded)[0][0]
    return "Positive" if pred > 0.5 else "Negative"

# Ví dụ
print(predict_sentiment("This product is amazing!"))
print(predict_sentiment("Terrible experience, very disappointed."))

Kết luận

Bạn vừa xây dựng một pipeline phân tích cảm xúc hoàn chỉnh: từ tiền xử lý dữ liệu, huấn luyện mạng LSTM, đến dự đoán cảm xúc trên dữ liệu mới. Đây là nền tảng để mở rộng sang các mô hình tiên tiến hơn như BERT hoặc GPT cho bài toán NLP.

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!