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 bài đăng Facebook bằng Python
Hướng Dẫn Đồ ÁnLập Trình AI

Phân tích cảm xúc bài đăng Facebook bằng Python

Chia sẻ
Chia sẻ

Phân tích cảm xúc (Sentiment Analysis) là một nhánh quan trọng của xử lý ngôn ngữ tự nhiên (NLP), giúp máy hiểu được thái độ hoặc tình cảm của người viết đối với một chủ đề cụ thể. Trong bối cảnh mạng xã hội phát triển mạnh mẽ, việc phân tích cảm xúc bài đăng Facebook trở thành công cụ quan trọng cho:

  • Doanh nghiệp theo dõi phản ứng khách hàng
  • Chính phủ giám sát dư luận xã hội
  • Nhà nghiên cứu đo lường xu hướng

Nếu bạn đã từng đọc qua các hướng dẫn như Giải thích confusion matrix dễ hiểu nhất hay Xử lý ngôn ngữ tiếng Việt với underthesea, thì đây là bước tiếp theo để ứng dụng NLP vào thực tế: phân tích cảm xúc mạng xã hội bằng Python.

Thu thập dữ liệu bài đăng Facebook

Trước tiên, chúng ta cần có dữ liệu để phân tích. Do Facebook hạn chế quyền truy cập dữ liệu qua API đối với tài khoản cá nhân, nên giải pháp phổ biến là sử dụng trình thu thập dữ liệu từ các trang công khai.

Thư viện facebook-scraper là một lựa chọn đơn giản, cho phép thu thập bài viết công khai mà không cần token hay xác thực phức tạp.

pip install facebook-scraper

Đoạn code cơ bản để lấy thông tin bài post:

from facebook_scraper import get_posts

posts = []
for post in get_posts("tinhte", pages=5):
    posts.append(post['text'])

print(posts[:3])

Lưu ý: Chỉ thu thập bài viết từ trang công khai và sử dụng vào mục đích học tập hoặc nghiên cứu. Việc sử dụng sai có thể vi phạm điều khoản Facebook.

Tiền xử lý văn bản tiếng Việt

Sau khi thu thập được dữ liệu thô, bạn không thể sử dụng trực tiếp để phân tích vì bài đăng Facebook thường chứa emoji, link, từ viết tắt, hoặc các ký hiệu đặc biệt. Do đó, bước tiền xử lý là cực kỳ quan trọng để chuẩn hóa dữ liệu.

Trong tiếng Việt, việc tách từ cũng là một bước then chốt vì không có dấu cách rõ ràng giữa các từ. Chúng ta sẽ sử dụng thư viện underthesea để tách từ và xử lý văn bản.

import re
from underthesea import word_tokenize

def clean_text(text):
    text = re.sub(r"[^\w\s]", "", text)  # bỏ ký tự đặc biệt
    text = text.lower()
    return word_tokenize(text, format="text")

cleaned_posts = [clean_text(p) for p in posts]

Gán nhãn cảm xúc (Labeling)

Một mô hình học máy không thể hoạt động nếu không có dữ liệu đã được gán nhãn. Trong trường hợp này, chúng ta sẽ tạo ra một tập nhỏ gồm các câu ví dụ và nhãn cảm xúc tương ứng để huấn luyện mô hình phân loại cơ bản.

Việc gán nhãn này có thể mở rộng hoặc dùng kỹ thuật semi-supervised để tăng quy mô dữ liệu sau này.

texts = ["Tôi rất vui vì sản phẩm này", "Thật tệ, tôi thất vọng", "Bình thường thôi"]
labels = ["positive", "negative", "neutral"]

Vector hóa dữ liệu bằng TF-IDF

Mô hình học máy không hiểu được văn bản dạng chuỗi. Vì vậy chúng ta phải chuyển văn bản thành các vector số học, phản ánh mức độ quan trọng của từ trong câu. Phổ biến nhất là dùng kỹ thuật TF-IDF (Term Frequency – Inverse Document Frequency).

Chúng ta sẽ sử dụng TfidfVectorizer từ sklearn.feature_extraction.text.

from sklearn.feature_extraction.text import TfidfVectorizer

vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(texts)

Huấn luyện mô hình phân loại cảm xúc

Sau khi đã có dữ liệu vector hóa, ta sẽ huấn luyện mô hình phân loại đơn giản. Ở đây, ta sử dụng thuật toán Naive Bayes vì nó rất phù hợp với dữ liệu văn bản và chạy nhanh.

Chúng ta sẽ kết hợp TF-IDF và mô hình vào một pipeline để tiện sử dụng và dự đoán.

from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline

model = make_pipeline(TfidfVectorizer(), MultinomialNB())
model.fit(texts, labels)

Dự đoán cảm xúc bài đăng Facebook

Khi mô hình đã được huấn luyện, ta sẽ áp dụng nó để phân tích cảm xúc các bài viết Facebook đã thu thập.

Chúng ta sẽ xem xét 5 kết quả đầu tiên để kiểm tra trực quan hiệu suất mô hình.

predictions = model.predict(cleaned_posts)
for i, pred in enumerate(predictions[:5]):
    print(f"{pred}: {posts[i]}")

Trực quan hóa cảm xúc

Trực quan hóa giúp bạn dễ dàng nắm bắt xu hướng cảm xúc chung của các bài đăng. Ở đây, ta sử dụng thư viện seaborn để vẽ biểu đồ cột biểu thị số lượng bài đăng theo từng loại cảm xúc.

Bước này cực kỳ hữu ích nếu bạn cần báo cáo hoặc trình bày kết quả cho người không chuyên.

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

df = pd.DataFrame({"text": posts, "sentiment": predictions})
sns.countplot(data=df, x="sentiment")
plt.title("Phân phối cảm xúc các bài đăng")
plt.show()

Kết luận

Bằng cách sử dụng Python và các thư viện mã nguồn mở, bạn có thể dễ dàng xây dựng hệ thống phân tích cảm xúc cho bài đăng Facebook. Đây là bước quan trọng trong việc nắm bắt tâm lý khách hàng, xu hướng cộng đồng, hay đánh giá chiến dịch marketing.

Tuy mô hình đơn giản, nhưng bạn đã nắm được toàn bộ quy trình: từ thu thập, xử lý dữ liệu, huấn luyện mô hình, đến phân tích và trực quan hóa. Bạn có thể nâng cấp mô hình này bằng các kỹ thuật hiện đại hơn như fine-tune PhoBERT, áp dụng deep learning hoặc triển khai thành API realtime với Flask hay FastAPI để tích hợp vào hệ thống sản phẩm.

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!