Tô màu từng token theo đóng góp vào dự đoán. Xanh lá = ủng hộ nhãn, đỏ = phản đối. Model-agnostic, hoạt động trên toàn pipeline.
Phân tích tabular branch: xác định đặc trưng hành vi nào (likes, shares, độ dài...) ảnh hưởng nhất đến phân loại.
Phân tích nhiều văn bản cùng lúc — tối đa 64 posts, kết quả dạng bảng có thể export.
| Thí nghiệm | Backbone | Teencode | Tabular | F1-Macro | Accuracy | Δ vs Exp1 |
|---|---|---|---|---|---|---|
| Exp 1 — Baseline | XLM-RoBERTa | — | — | 0.6235 | 0.6424 | — |
| Exp 2 — + Teencode | XLM-RoBERTa | ✓ | — | 0.6548 | 0.6647 | +3.13 |
| Exp 3 — Full Fusion | XLM-RoBERTa | ✓ | ✓ | 0.6454 | 0.6587 | −0.94 |
| Exp 4 — PhoBERT-v2 Best | PhoBERT-v2 | ✓ | — | 0.7186 | 0.7212 | +6.38 |
Δ = F1-Macro difference vs Exp1 × 100 · Tất cả thí nghiệm dùng cùng train/val/test split 70/15/15
Nhấn vào ảnh để phóng to
Thử đổi preset để thấy tabular features ảnh hưởng đến dự đoán.
Model áp dụng 170+ quy tắc trước khi encode: viết tắt (mk→mình, k→không, lun→luôn), emoji→text (😊→cười), tiếng lóng, từ ghép. Giúp XLM-R tokenize chính xác hơn trên văn bản mạng xã hội.
Kết quả sẽ hiển thị ở đây
Chọn ví dụ hoặc nhập văn bản rồi nhấn Phân tích
LIME tạo ~150 biến thể ngẫu nhiên, đo thay đổi xác suất khi xoá từng token — độ đậm tỷ lệ thuận với mức đóng góp.
| Token | LIME Weight | Ảnh hưởng | Giải thích |
|---|
Chỉ hiển thị token có |weight| > 0.01. LIME là model-agnostic — hoạt động trên toàn pipeline (Teencode → XLM-R → Fusion → Softmax).
| # | Văn bản (tóm tắt) | Likes | Kết quả | Confidence | Độ chắc chắn | Thời gian |
|---|
Nhập 1 văn bản để chạy qua 4 cấu hình thí nghiệm và so sánh kết quả: ảnh hưởng của Teencode normalization, Tabular features và backbone khác nhau.
Mỗi dòng là một văn bản. Tối đa 64 dòng.
Kết quả batch
Nhập nhiều văn bản và nhấn Phân tích
| # | Văn bản | Cảm xúc | Confidence |
|---|
| Cảm xúc | F1 | Precision | Recall | Support | F1 Bar |
|---|---|---|---|---|---|
| 😊 Vui vẻ joy | 0.7893 | 0.8480 | 0.7381 | 378 | |
| 😢 Buồn bã sadness | 0.7431 | 0.7602 | 0.7268 | 205 | |
| 😠 Tức giận anger | 0.5413 | 0.5364 | 0.5463 | 108 | |
| 😨 Sợ hãi fear | 0.7205 | 0.8169 | 0.6444 | 90 | |
| 🤢 Ghê tởm disgust | 0.5871 | 0.5319 | 0.6550 | 229 | |
| 😲 Ngạc nhiên surprise | 0.8243 | 0.7409 | 0.9289 | 197 | |
| 😐 Trung tính neutral | 0.6081 | 0.6490 | 0.5720 | 236 |
Ngạc nhiên đạt F1 cao nhất (0.8243) — Recall 0.929 xuất sắc. Tức giận khó nhất (0.5413) do ít sample và dễ nhầm với Ghê tởm.
So sánh 7 cấu hình mô hình trên cùng tập test (15% = 1,443 mẫu), từ baseline truyền thống đến deep learning hiện đại. Metric chính: F1-Macro — phù hợp với dữ liệu mất cân bằng lớp. * Baseline TF-IDF và DNN là ước tính từ thí nghiệm sơ bộ. Exp1–4 là kết quả chính thức từ ablation study.
| Mô hình / Cấu hình | Teencode | Tabular | Tiếng Việt | F1-Macro ↑ | Accuracy ↑ | Precision | Recall | Δ F1 vs BL | F1-Macro (trực quan) | Tốc độ inference |
Ghi chú |
|---|---|---|---|---|---|---|---|---|---|---|---|
|
TF-IDF + LogReg
Baseline truyền thống
|
✗ | ✗ | ✗ | ~0.420 | ~0.480 | ~0.440 | ~0.410 | — (BL) | 42% |
⚡ Nhanh | Bag-of-words, không hiểu ngữ nghĩa. Bị hại bởi teencode và viết tắt mạng xã hội. |
|
DNN Text-only
MLP 3 lớp + TF-IDF
|
✗ | ✗ | ✗ | ~0.510 | ~0.560 | ~0.520 | ~0.500 | +9.0 | 51% |
⚡ Nhanh | Phi tuyến hơn LogReg nhưng vẫn phụ thuộc TF-IDF — không học được biểu diễn ngữ cảnh. |
|
Exp 1 — XLM-RoBERTa
Text branch only, không chuẩn hoá
|
✗ | ✗ | Đa ngữ | 0.6235 | 0.6424 | 0.6310 | 0.6180 | +20.4 | 62.35% |
⏱ Vừa | Pretrained LLM bứt phá so với baseline. Bị ảnh hưởng bởi teencode chưa chuẩn hoá. |
|
Exp 2 — + Teencode Norm
XLM-R + chuẩn hoá tiếng Việt mạng
|
✓ | ✗ | Đa ngữ | 0.6548 | 0.6647 | 0.6621 | 0.6490 | +23.4 | 65.48% |
⏱ Vừa | Teencode norm đóng góp +3.13 F1. 170+ quy tắc chuẩn hoá từ viết tắt, emoji. |
|
Exp 3 — Full Late Fusion
XLM-R + Teencode + FT-Transformer
|
✓ | ✓ | Đa ngữ | 0.6454 | 0.6587 | 0.6502 | 0.6420 | +22.5 | 64.54% |
🐢 Chậm | Thêm tabular tăng Accuracy nhưng F1-Macro giảm nhẹ so với Exp2 — tabular features cần điều chỉnh fusion weight. |
|
🚀 Deployed Model
Production
XLM-R + Teencode · Đánh giá trên test set
|
✓ | ✓ | Đa ngữ | 0.6877 | 0.7020 | 0.6994 | 0.6874 | +26.8 |
68.77% ← deployed
|
⏱ Vừa | Mô hình đang chạy trong demo này. Trained đến convergence trên toàn bộ train+val. |
|
Exp 4 — PhoBERT-v2
Best F1
PhoBERT + Teencode · Backbone tiếng Việt chuyên biệt
|
✓ | ✗ | 🇻🇳 Việt | 0.7186 | 0.7212 | 0.7241 | 0.7139 | +29.9 |
71.86% ← best
|
🐢 Chậm | VnCoreNLP word-segmentation bắt buộc. F1 cao nhất nhưng phức tạp hơn khi deploy với văn bản noisy. |
Δ F1 = (F1 − TF-IDF baseline) × 100 · * Baseline là ước tính sơ bộ · Exp1–4: val set · Deployed: test set (1,443 mẫu)
Insight: Ngạc nhiên dễ nhận dạng nhất (Recall 0.929 — mẫu đặc trưng rõ). Tức giận khó nhất vì ít sample (108 mẫu) và hay bị nhầm với Ghê tởm — cả hai đều mang sắc thái tiêu cực mạnh.
| Mô hình | F1-Macro | Độ phức tạp train | Tốc độ inference | Yêu cầu đặc biệt | Phù hợp với |
|---|---|---|---|---|---|
| TF-IDF + LogReg | Thấp ~0.42 | Rất thấp | ⚡ <1ms | Không | Prototype nhanh, edge device |
| DNN Text-only | Trung bình ~0.51 | Thấp | ⚡ ~2ms | Không | Tài nguyên hạn chế |
| Exp1 XLM-R bare | Khá 0.6235 | Cao | ⏱ ~200ms | GPU khuyến nghị | Văn bản chuẩn, không teencode |
| Exp2 + Teencode | Tốt 0.6548 | Cao | ⏱ ~210ms | GPU khuyến nghị | Văn bản mạng xã hội tiếng Việt |
| 🚀 Deployed Cân bằng tốt | Tốt 0.6877 | Cao | ⏱ ~220ms | GPU khuyến nghị | Production, demo, real-world |
| 🏆 PhoBERT Exp4 F1 cao nhất | Xuất sắc 0.7186 | Rất cao | 🐢 ~400ms | VnCoreNLP + GPU bắt buộc | Nghiên cứu, accuracy ưu tiên |
text_length, n_words) quan trọng hơn tương tác xã hội (likes, comments).
Tabular branch đóng góp lớn nhất cho lớp surprise và neutral — hai nhãn này có pattern hành vi rõ ràng hơn các nhãn cảm xúc mạnh (joy, anger).
| Nguồn | Mẫu | Mô tả |
|---|---|---|
| crawled_emotions.xlsx | 2,034 | Facebook posts tự crawl — 7 cảm xúc, annotated thủ công |
| UIT-VSMEC.csv | 6,927 | Facebook comments công khai — UIT-NLP benchmark |
| pseudo_labeled_apify.csv | 655 | 990 posts Apify → zero-shot NLI (mDeBERTa) confidence ≥ 0.35 |
| Train set (sau split) | ~6,700 | Stratified split 70/15/15 — train/val/test |
| Input mạng xã hội | Output chuẩn hóa |
|---|---|
| ko / k / hok | không |
| đc / đk | được |
| mk / mik | mình |
| iu / iu thik | yêu / yêu thích |
| 😊 | [SMILE] |
| 🔥 | [FIRE] |
| 💯 | [HUNDRED] |
170+ từ lóng và 70 emoji token được chuẩn hóa trước khi đưa vào model
Dán link bài viết → tự động đọc bình luận thật → 4 kiến trúc cùng phân loại cảm xúc → bảng xếp hạng cho thấy mô hình nào nhận biết tốt hơn, đồng thuận tới đâu, và xử lý case khó (teencode, mỉa mai) ra sao.
Lấy miễn phí: console.cloud.google.com → bật YouTube Data API v3 → Tạo API key. Key chỉ lưu cục bộ (localStorage), không gửi đi đâu khác.
Xếp theo F1-Macro (đánh giá trên tập test). Bên phải là chỉ số trực tiếp trên thread bạn vừa nhập: độ tự tin trung bình và tỉ lệ đồng thuận với mô hình đang chạy (Fusion).
| Mô hình | Kiến trúc | Khả năng | F1-Macro ↑ | Accuracy ↑ | Conf. TB (thread) | Đồng thuận Fusion | Trạng thái |
|---|
So sánh cách 4 kiến trúc gán nhãn cho cùng một thread. Mô hình tốt cho phân bố gần với Fusion; mô hình yếu thường sụp về một nhãn (ví dụ FT-Transformer chỉ dùng đặc trưng hành vi nên hay dồn về một cảm xúc).
Ô có viền đỏ = mô hình đó dự đoán khác Fusion → đây thường là case khó (mỉa mai, teencode, mơ hồ) bộc lộ điểm yếu của từng kiến trúc.