📦 0372hoanghoccode / Seminar-Project

0 stars 0 forks 👁 0 watching
📥 Clone https://github.com/0372hoanghoccode/Seminar-Project.git
HTTPS git clone https://github.com/0372hoanghoccode/Seminar-Project.git
SSH git clone git@github.com:0372hoanghoccode/Seminar-Project.git
CLI gh repo clone 0372hoanghoccode/Seminar-Project
0372hoanghoccode 0372hoanghoccode refator: readme d7db75a 1 months ago 📝 History
📄 README.md
📄 README.md

🇻🇳 Vietnamese Sentiment Assistant

Trợ lý phân loại cảm xúc tiếng Việt sử dụng Transformer (PhoBERT)

Ứng dụng phân loại cảm xúc văn bản tiếng Việt thành 3 loại: POSITIVE (Tích cực), NEUTRAL (Trung lập), NEGATIVE (Tiêu cực). Hỗ trợ xử lý văn bản có dấu, không dấu, viết tắt và phát hiện phủ định.


📋 Thông tin đồ án

MụcNội dung
Tên đồ ánTrợ lý phân loại cảm xúc tiếng Việt (Vietnamese Sentiment Assistant)
Mục đíchPhâ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
Ngôn ngữPython
Thư viện chínhHugging Face Transformers, PhoBERT, Streamlit, SQLite
Độ chính xác100% trên 10 test cases (vượt yêu cầu 65%)

✨ Tính năng chính

  • 🤖 Phân loại cảm xúc: Sử dụng mô hình Hybrid (Rule-based + PhoBERT Transformer)
  • 🇻🇳 Xử lý tiếng Việt: Hỗ trợ có/không dấu, viết tắt (ko, dc, tks...), phát hiện phủ định
  • 💾 Lưu trữ lịch sử: Lưu kết quả vào SQLite với bảng sentiments (id, text, sentiment, timestamp)
  • 🌐 Giao diện web: Streamlit đẹp, dễ sử dụng
  • 📊 Thống kê: Hiển thị số lượng theo từng loại cảm xúc

🖥️ Yêu cầu hệ thống

  • Python 3.8+
  • RAM: 4GB+ (cho mô hình Transformer)
  • Dung lượng: 2GB+ (cho mô hình và dependencies)
  • Kết nối internet (lần đầu để tải mô hình)

🚀 Cài đặt & Chạy ứng dụng

Bước 1: Cài đặt dependencies

pip install -r requirements.txt

Bước 2: Chạy ứng dụng Web (Khuyến nghị)

cd vietnamese-sentiment-assistant
python -m streamlit run src/main.py

Ứng dụng sẽ mở trong trình duyệt tại http://localhost:8501

Bước 3: Chạy Test Cases

python tests/test_cases.py


📖 Hướng dẫn sử dụng

  • Nhập câu tiếng Việt vào ô văn bản (VD: "Hôm nay tôi rất vui")
  • Nhấn nút "Phân loại cảm xúc"
  • Xem kết quả:
  • 😊 Tích cực (màu xanh)
  • 😐 Trung lập (màu xanh dương)
  • 😢 Tiêu cực (màu đỏ)
  • Xem lịch sử phân loại bên dưới

🧪 Bộ Test Cases (10 câu theo đề bài)

STTĐầu vàoĐầu ra mong đợi
1Hôm nay tôi rất vuiPOSITIVE
2Món ăn này dở quáNEGATIVE
3Thời tiết bình thườngNEUTRAL
4Rat vui hom nayPOSITIVE
5Công việc ổn địnhNEUTRAL
6Phim này hay lắmPOSITIVE
7Tôi buồn vì thất bạiNEGATIVE
8Ngày mai đi họcNEUTRAL
9Cảm ơn bạn rất nhiềuPOSITIVE
10Mệt mỏi quá hôm nayNEGATIVE
Kết quả: ✅ 100% (10/10) - Vượt yêu cầu 65%


📂 Cấu trúc dự án

vietnamese-sentiment-assistant/
├── src/
│   ├── main.py                  # Giao diện Streamlit
│   ├── sentiment_classifier.py  # Logic phân loại cảm xúc (Hybrid)
│   └── database.py              # Quản lý SQLite (bảng sentiments)
├── tests/
│   └── test_cases.py            # 10 test cases theo đề bài
├── requirements.txt             # Dependencies
└── README.md                    # Tài liệu này


🔧 Kiến trúc hệ thống

[Đầu vào: Câu tiếng Việt]
        ↓
[Tiền xử lý] → Chuẩn hóa Unicode, mở rộng viết tắt, loại dấu câu
        ↓
[Phát hiện phủ định] → Kiểm tra từ phủ định (không, chưa, chẳng...)
        ↓
    ┌───┴───┐
    ↓       ↓
[Rule-based]  [PhoBERT Transformer]
    ↓       ↓
    └───┬───┘
        ↓
[Kết quả: POSITIVE / NEUTRAL / NEGATIVE]
        ↓
[Lưu SQLite + Hiển thị UI]


🛠️ Công nghệ sử dụng

Thành phầnCông nghệ
NLP ModelPhoBERT (wonrax/phobert-base-vietnamese-sentiment)
FrameworkHugging Face Transformers
Giao diệnStreamlit
DatabaseSQLite3
TokenizerPyVi (ViTokenizer)

⚠️ Troubleshooting

LỗiGiải pháp
Không load được modelKiểm tra kết nối internet để tải model từ Hugging Face
Lỗi dependenciesChạy pip install -r requirements.txt
streamlit không nhậnChạy python -m streamlit run src/main.py

📜 License

Dự án này dành cho mục đích học thuật và nghiên cứu.


👨‍💻 Tác giả

Đồ án môn học - Seminar Project 2025