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 Tạo mô hình phát hiện cảm xúc từ văn bản bằng NLP
Hướng Dẫn Đồ ÁnLập Trình AI

Tạo mô hình phát hiện cảm xúc từ văn bản bằng NLP

Chia sẻ
Chia sẻ

Phát hiện cảm xúc từ văn bản 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). Từ phân tích đánh giá khách hàng trên các nền tảng thương mại điện tử, theo dõi phản ứng của người dùng trên mạng xã hội đến hỗ trợ tổng đài thông minh, khả năng hiểu được cảm xúc ẩn trong văn bản giúp doanh nghiệp và tổ chức đưa ra quyết định tốt hơn. Đây cũng là một bài toán tuyệt vời để người mới bắt đầu làm quen với NLP và học sâu.

Nếu bạn chưa từng làm việc với Machine Learning, hãy tham khảo trước bài viết Giải thích đơn giản về hồi quy tuyến tính trong Machine Learning để nắm được các khái niệm cơ bản. Ngoài ra, bài Tạo mô hình phân loại ảnh chó mèo với TensorFlow và So sánh các thuật toán phân loại phổ biến trong học máy sẽ giúp bạn hiểu về các phương pháp và cách lựa chọn mô hình phù hợp. Khi đã có nền tảng đó, bài viết này sẽ hướng dẫn bạn từng bước xây dựng một mô hình phát hiện cảm xúc từ văn bản bằng Python và TensorFlow.

Giới thiệu bài toán

Phát hiện cảm xúc từ văn bản hay sentiment analysis là quá trình phân tích văn bản để xác định thái độ, quan điểm hay cảm xúc của người viết. Ví dụ, với câu “Dịch vụ ở đây thật tuyệt vời”, mô hình cần xác định đây là cảm xúc tích cực. Ngược lại, câu “Tôi rất thất vọng về chất lượng sản phẩm” phải được phân loại là tiêu cực.

Bài toán này thường được xử lý như một bài toán phân loại văn bản, nơi đầu vào là câu hoặc đoạn văn, và đầu ra là một nhãn cảm xúc, ví dụ: tích cực, tiêu cực hoặc trung tính. Trong bài viết này, chúng ta sẽ xây dựng một mô hình đơn giản để phân loại cảm xúc thành hai nhóm: tích cực và tiêu cực.

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

Để thực hành, bạn có thể sử dụng Google Colab, một nền tảng lập trình trực tuyến miễn phí của Google. Truy cập https://colab.research.google.com và tạo một notebook mới.

Các thư viện cần thiết bao gồm TensorFlow, Keras, NumPy, Pandas và Matplotlib. Nếu dùng Jupyter Notebook, bạn cần cài đặt chúng bằng lệnh sau:

!pip install tensorflow numpy pandas matplotlib

Chuẩn bị dữ liệu

Trong bài này, chúng ta sẽ sử dụng tập dữ liệu IMDb Reviews từ TensorFlow Datasets. Đây là bộ dữ liệu gồm 50.000 đánh giá phim được gắn nhãn cảm xúc tích cực hoặc tiêu cực. TensorFlow cung cấp sẵn bộ dữ liệu này nên bạn không cần tải thủ công.

import tensorflow as tf
from tensorflow.keras.datasets import imdb

# Tải dữ liệu và giới hạn số lượng từ phổ biến
num_words = 10000
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=num_words)

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

Dữ liệu tải về là danh sách các chỉ số từ vựng. Để đưa vào mô hình, chúng ta cần chuẩn hóa độ dài câu bằng cách padding.

from tensorflow.keras.preprocessing.sequence import pad_sequences

maxlen = 200
x_train = pad_sequences(x_train, maxlen=maxlen)
x_test = pad_sequences(x_test, maxlen=maxlen)

Xây dựng mô hình phát hiện cảm xúc

Mô hình sẽ bao gồm một lớp Embedding để biểu diễn từ vựng, một lớp LSTM để học các phụ thuộc trong chuỗi và một lớp Dense để phân loại.

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense

model = Sequential([
    Embedding(input_dim=num_words, output_dim=128, input_length=maxlen),
    LSTM(128),
    Dense(1, activation='sigmoid')
])

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

Huấn luyện mô hình

Huấn luyện mô hình trên tập dữ liệu đã được xử lý.

history = model.fit(x_train, y_train, epochs=5, batch_size=64, validation_split=0.2)

Đánh giá mô hình

Kiểm tra độ chính xác của mô hình trên tập dữ liệu kiểm tra.

test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"Độ chính xác trên tập test: {test_acc:.2f}")

Trực quan hóa quá trình huấn luyện

Vẽ đồ thị để quan sát quá trình huấn luyện.

import matplotlib.pyplot as plt

plt.plot(history.history['accuracy'], label='Độ chính xác huấn luyện')
plt.plot(history.history['val_accuracy'], label='Độ chính xác validation')
plt.xlabel('Epoch')
plt.ylabel('Độ chính xác')
plt.legend()
plt.show()

Kết luận

Bạn vừa xây dựng thành công một mô hình phát hiện cảm xúc từ văn bản sử dụng LSTM và TensorFlow. Mô hình này có khả năng phân loại các đánh giá phim thành tích cực hoặc tiêu cực. Đây là bước khởi đầu quan trọng để bạn tiến sâu hơn vào các ứng dụng NLP phức tạp hơn như phân tích chủ đề, trả lời tự động hay dịch máy.

Để nâng cao hiệu quả, bạn có thể thử nghiệm với các kiến trúc tiên tiến hơn như GRU, Transformer hoặc áp dụng kỹ thuật word embedding như Word2Vec hay GloVe.

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!