Sentiment Analysis
Phân tích cảm xúc phân loại ý kiến trong văn bản thành tích cực, tiêu cực hoặc trung tính. Bài viết đề cập đến phương pháp từ vựng và Transformer, khía cạnh và thiên kiến.
Phân tích cảm xúc, còn gọi là khai phá ý kiến, là tác vụ xử lý ngôn ngữ tự nhiên (NLP) nhằm xác định thái độ được thể hiện trong văn bản, thường phân loại thành tích cực, tiêu cực hoặc trung tính, đôi khi dưới dạng điểm số, xếp hạng sao hoặc cảm xúc như tức giận hay vui mừng. Các công ty phân tích đánh giá sản phẩm, phiếu hỗ trợ, câu trả lời khảo sát và bài đăng mạng xã hội để đo lường cảm nhận của khách hàng về sản phẩm hoặc thương hiệu trên lượng văn bản lớn hơn khả năng đọc của bất kỳ nhóm nào; chatbot hỗ trợ khách hàng dùng phân tích này để ưu tiên chuyển khách hàng đang tức giận cho nhân viên.
Các cấp độ phân tích#
Phân tích ở cấp tài liệu gán một nhãn cho toàn bộ bài đánh giá, còn phân tích ở cấp câu gán nhãn cho từng câu. Phân tích cảm xúc dựa trên khía cạnh (ABSA) đi xa hơn, xác định ý kiến về từng đặc điểm được nhắc đến trong văn bản: "Màn hình rất đẹp, nhưng pin chỉ dùng được chưa hết buổi sáng" thể hiện cảm xúc tích cực về màn hình và tiêu cực về pin. Nhiệm vụ chung SemEval-2014 về ABSA chuẩn hóa thiết lập này bằng các bài đánh giá laptop và nhà hàng; trích xuất khía cạnh cũng có điểm giao với nhận dạng thực thể có tên (NER), vì cả hai đều tìm ra những đối tượng được nhắc đến trong câu.
Từ từ vựng đến transformer#
Phương pháp dựa trên từ vựng đếm các từ trong từ điển cảm xúc—danh sách từ có điểm tích cực hoặc tiêu cực—rồi bổ sung quy tắc cho từ phủ định ("không tốt") và từ nhấn mạnh ("rất tốt"). Phương pháp không giám sát của Peter Turney (2002) chấm điểm cụm từ dựa trên tần suất chúng xuất hiện gần "xuất sắc" hoặc "kém" trên web; VADER (2014) tinh chỉnh từ vựng và quy tắc cho mạng xã hội, bao gồm biểu tượng cảm xúc, chữ in hoa và dấu chấm than. Cũng trong năm 2002, Bo Pang, Lillian Lee và Shivakumar Vaithyanathan huấn luyện các bộ phân loại Naive Bayes, entropy cực đại và máy vector hỗ trợ (SVM) trên các bài đánh giá phim; họ nhận thấy các bộ phân loại này vượt trội hơn danh sách từ khóa do con người viết nhưng phân loại cảm xúc kém hơn phân loại chủ đề.
Stanford Sentiment Treebank (2013) gán nhãn 215.154 cụm từ từ 11.855 câu đánh giá phim, giúp model học cách những từ như "không" và "nhưng" làm thay đổi cảm xúc của phần tiếp theo; phiên bản nhị phân của bộ dữ liệu này, SST-2, trở thành một phần của benchmark GLUE. Ngày nay, hầu hết bộ phân loại đều tinh chỉnh một transformer tiền huấn luyện như BERT trên các ví dụ đã gán nhãn, rồi chuyển điểm đầu ra thành xác suất lớp bằng softmax. DistilBERT được tinh chỉnh trên SST-2 đạt độ chính xác 91,3% trên tập validation:
from transformers import pipeline
# DistilBERT fine-tuned on the Stanford Sentiment Treebank (SST-2)
classifier = pipeline("sentiment-analysis", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
reviews = [
"The battery life is not bad at all.",
"Oh great, it crashed again five minutes after the update.",
"The screen is gorgeous, but the battery barely lasts a morning.",
]
for review, result in zip(reviews, classifier(reviews)):
print(f"{result['label']:<8} {result['score']:.3f} {review}")Bộ phân loại hiểu "không tệ chút nào" là TÍCH CỰC (0,997) và bài đánh giá mỉa mai "Ồ tuyệt quá" là TIÊU CỰC (0,998). Bài đánh giá thứ ba khen màn hình và chê pin, nhưng model cấp tài liệu chỉ có thể trả về một nhãn—TIÊU CỰC ở mức 0,966—khiến phần khen ngợi biến mất khỏi kết quả. Model ngôn ngữ lớn (LLM) cũng có thể phân loại cảm xúc theo cách zero-shot từ prompt và trả về một nhãn cho mỗi khía cạnh, nhưng chi phí trên mỗi bài đánh giá cao hơn nhiều so với bộ phân loại 66 triệu tham số.
Phân tích cảm xúc đa phương thức#
Con người thể hiện ý kiến qua ngữ điệu và nét mặt bên cạnh lời nói; sự mỉa mai thường chỉ thể hiện qua ngữ điệu. CMU-MOSEI (2018), bộ dữ liệu lớn nhất cho thiết lập này tại thời điểm phát hành, gán nhãn cảm xúc cho 23.453 đoạn video từ 1.000 người nói; các model học đa phương thức kết hợp bản chép lời, âm thanh và khuôn mặt người nói để dự đoán cảm xúc—mục tiêu chung với điện toán cảm xúc. Kênh khuôn mặt là bài toán phân loại ảnh: model phân loại YOLO26 của Ultralytics được huấn luyện trên ảnh cắt khuôn mặt, sắp xếp vào mỗi thư mục theo một biểu cảm, sẽ trả về xác suất cho từng biểu cảm trong result.probs; đây là cùng loại đầu ra softmax mà bộ phân loại văn bản phía trên tạo ra.
Thách thức#
Mỉa mai, châm biếm và so sánh ("tốt hơn cái cũ, nhưng cũng chẳng nói lên điều gì nhiều") vẫn là những trường hợp khó. Từ biểu thị cảm xúc phụ thuộc vào lĩnh vực: "khó đoán" là lời khen cho cốt truyện phim nhưng là lời chê hệ thống lái xe; vì vậy, model được huấn luyện trên bài đánh giá phim sẽ giảm độ chính xác khi xử lý đánh giá sản phẩm nếu không có dữ liệu huấn luyện mới. Model cũng kế thừa thiên kiến từ dữ liệu. Năm 2018, Svetlana Kiritchenko và Saif Mohammad kiểm thử 219 hệ thống phân tích cảm xúc bằng các câu chỉ khác nhau ở tên riêng hoặc từ chỉ giới tính như "anh ấy" hay "cô ấy"; một số hệ thống liên tục cho điểm cao hoặc thấp hơn tùy theo giới tính hay chủng tộc mà tên gọi gợi ra.
Phân tích cảm xúc và các thuật ngữ liên quan#
- Phân loại văn bản: Tác vụ tổng quát gán nhãn cho văn bản, chẳng hạn chủ đề hoặc thư rác. Phân tích cảm xúc là phân loại văn bản với các nhãn biểu thị ý kiến.
- Nhận dạng cảm xúc: Phát hiện cảm xúc cụ thể từ văn bản, khuôn mặt, giọng nói hoặc tín hiệu sinh lý. Phân tích cảm xúc thường quy ý kiến về một cực tính.
- Nhận dạng thực thể có tên: Xác định những gì được nhắc đến trong văn bản, còn ABSA ghép từng lượt nhắc với ý kiến được thể hiện về đối tượng đó.










