Content text [SGU][Project] Seminar chuyên đề (2025-2026 - HK1).docx
ĐỒ ÁN MÔN HỌC SEMINAR CHUYÊN ĐỀ XÂY DỰNG TRỢ LÝ PHÂN LOẠI CẢM XÚC TIẾNG VIỆT SỬ DỤNG TRANSFORMER I. THÔNG TIN CHUNG Mục Nội dung Tên đồ án Trợ lý phân loại cảm xúc tiếng Việt (Vietnamese Sentiment Assistant) sử dụng Transformer Mục đích Phát triển ứng dụng phân loại cảm xúc (tích cực, trung tính, tiêu cực) từ văn bản tiếng Việt, sử dụng Transformer Số lượng thành viên 1 – 2 sinh viên Thời gian thực hiện 06/12/2025 Ngôn ngữ lập trình Python Thư viện chính Hugging Face Transformers (phobert-base-v2 hoặc distilbert- base-multilingual-cased), Underthesea (tùy chọn) Công cụ giao diện Không giới hạn (Streamlit, Tkinter, Flask…) Yêu cầu bắt buộc Ứng dụng chạy độc lập, phân loại cảm xúc tiếng Việt, lưu kết quả cục bộ II. MỤC TIÊU ĐỒ ÁN 1. Xây dựng ứng dụng phân loại cảm xúc đơn giản, nhận câu tiếng Việt và trả về nhãn cảm xúc (tích cực, trung tính, tiêu cực). 2. Tích hợp Transformer pre-trained (PhoBERT hoặc DistilBERT) qua pipeline sentiment-analysis để phân loại, không cần fine-tuning. 3. Lưu trữ lịch sử phân loại cục bộ bằng SQLite. 4. Đảm bảo độ chính xác phân loại ≥ 65% trên 10 test case tiếng Việt. 5. Trình bày kết quả qua báo cáo đồ án.
VII. HƯỚNG DẪN TRIỂN KHAI (DÀNH CHO SINH VIÊN) 1. Giải pháp NLP Kiến trúc sử dụng Transformer pre-trained (phobert-base-v2 hoặc distilbert-base- multilingual-cased) qua pipeline sentiment-analysis của Hugging Face. Không cần fine-tuning, tập trung vào tích hợp đơn giản. Kiến trúc tổng quát (Sơ đồ khối – sinh viên vẽ flowchart trong báo cáo): [Đầu vào: Câu tiếng Việt] ↓ (Preprocessing) [Component 1: Tiền xử lý] → Câu đã chuẩn hóa ↓ (Sentiment Analysis) [Component 2: Phân loại cảm xúc] → Nhãn (POSITIVE, NEUTRAL, NEGATIVE) ↓ (Validation) [Component 3: Hợp nhất & xử lý lỗi] → Đầu ra dictionary hoặc lỗi ↓ [Core Engine: Lưu & hiển thị] Hướng dẫn chi tiết và tối ưu hóa vấn đề kỹ thuật Bước Mục đích Hướng dẫn thực hiện 1. Tiền xử lý Chuẩn hóa câu tiếng Việt để phù hợp với Transformer. • (Optional) Dùng underthesea.word_tokenize() để tách từ (VD: “Rat vui hom nay” → “Rất vui hôm nay”). • Chuyển chữ thường, thay “rat” → “rất” bằng từ điển nhỏ (10–20 từ phổ biến: rat/rất, dở/do, v.v.). • Giới hạn câu ≤50 ký tự để giảm thời gian xử lý. 2. Phân loại cảm xúc Xác định nhãn cảm xúc (POSITIVE, NEUTRAL, NEGATIVE). • Sử dụng pipeline sentiment-analysis với model phobert-base-v2 (ưu tiên tiếng Việt) hoặc distilbert-base-multilingual-cased (hỗ trợ đa ngôn ngữ). • Gửi câu chuẩn hóa qua pipeline, lấy nhãn có xác suất cao nhất. • Nếu xác suất <0.5, trả về NEUTRAL mặc định. 3. Hợp nhất & xử lý lỗi Ghép kết quả thành dictionary, kiểm tra hợp lệ. • Tạo dictionary: {text, sentiment}. • Kiểm tra: Câu nhập ≥5 ký tự; nếu rỗng hoặc lỗi pipeline, hiển thị pop-up “Câu không hợp lệ, thử lại”. • Lưu vào SQLite và hiển thị trên giao diện. 2. Lưu trữ & Hiển thị Lưu trữ: Dùng sqlite3, tạo bảng sentiments (cột: id, text, sentiment, timestamp). Lưu timestamp dưới dạng ISO string (YYYY-MM-DD HH:MM:SS).