Giới thiệu dự án

Sự bùng nổ của thương mại điện tử và dịch vụ giao đồ ăn trực tuyến (Food Delivery) tại Việt Nam trong giai đoạn 2021–2023 đã tạo ra khối lượng dữ liệu khổng lồ về phản hồi của người tiêu dùng. Nền tảng Foody sở hữu hơn 334.000 địa điểm ẩm thực với hàng chục nghìn lượt đánh giá phát sinh mỗi ngày. Tuy nhiên, phần lớn dữ liệu này tồn tại dưới dạng văn bản phi cấu trúc (Unstructured Text Data) chứa nhiều tiếng lóng, từ viết tắt, emoji và lỗi chính tả. Đặc biệt, có tới 15–20% bài đánh giá bị thiếu trường điểm số định lượng (Rating Score) do lỗi hệ thống hoặc người dùng bỏ qua thao tác chấm điểm.

Vấn đề cốt lõi đặt ra là các doanh nghiệp F&B và sàn thương mại điện tử không thể khai phá thủ công hàng trăm nghìn đánh giá để đo lường mức độ hài lòng của khách hàng theo thời gian thực. Các phương pháp khảo sát truyền thống có chi phí cao, độ trễ lớn và không phản ánh tức thời biến động chất lượng dịch vụ.

[49,000+ Raw Reviews] ──> [Data Cleaning & Regex] ──> [VnCoreNLP Tokenizer]
                                                              │
         ┌────────────────────────────────────────────────────┴────────────────────────────────────────────────────┐
         ▼                                                                                                         ▼
[TF-IDF Feature Extraction] (8,000 dims)                                                              [FastBPE Tokenizer] (64,000 subwords)
         │                                                                                                         │
         ├──────────────────────────┬──────────────────────────┐                                                   ▼
         ▼                          ▼                          ▼                                     [PhoBERT Fine-Tuning] (PyTorch)
[Logistic Regression]         [Multinomial NB]           [Linear SVM]                                              │
         │                          │                          │                                                   │
         └──────────────────────────┼──────────────────────────┘                                                   │
                                    ▼                                                                              ▼
                       [Classical ML Inference]                                                        [Transformer Inference]
                       Acc: 93.23% | Latency: 3ms                                                      Acc: 94.60% | Latency: 101s

Mục tiêu cụ thể của dự án bao gồm:

  1. Thu thập và chuẩn hóa tập dữ liệu hơn 49.000 đánh giá thực tế từ nền tảng Foody bằng kỹ thuật Web Scraping tự động.
  2. Xây dựng pipeline tiền xử lý chuyên sâu cho tiếng Việt (Vietnamese Text Preprocessing) kết hợp biểu thức chính quy (Regular Expressions) và mô hình phân đoạn từ RDRsegmenter (VnCoreNLP).
  3. Huấn luyện và tối ưu hóa các thuật toán học máy cổ điển (Logistic Regression, Multinomial Naive Bayes, Support Vector Machine) trên không gian đặc trưng TF-IDF (Term Frequency - Inverse Document Frequency).
  4. Tinh chỉnh (Fine-tuning) mô hình Transformer chuyên biệt cho tiếng Việt PhoBERT-base từ VinAI trên framework PyTorch và Hugging Face Transformers.
  5. Đánh giá, đối sánh đa chiều hiệu năng (Accuracy, F1-Score, ROC-AUC) và chi phí tài nguyên tính toán giữa các phương pháp tiếp cận nhằm chọn giải pháp tối ưu cho hệ thống sản xuất (Production).

Dự án giới hạn phạm vi nghiên cứu trên dữ liệu đánh giá tiếng Việt của người dùng Foody tại Việt Nam trong giai đoạn 2021–2022, tập trung vào 2 bài toán phân lớp: nhị phân (Tích cực / Tiêu cực) và 3 nhãn (Tích cực / Trung lập / Tiêu cực).


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Trước khi triển khai, các giải pháp phân tích phản hồi khách hàng tại các doanh nghiệp F&B thường phân thành 3 nhóm chính:

Giải pháp Ưu điểm Nhược điểm Chi phí & Khả năng mở rộng
Khảo sát truyền thống (Survey/CSAT) Dữ liệu có cấu trúc, mục tiêu rõ ràng Mẫu nhỏ ($N < 500$), độ trễ cao, chi phí nhân sự lớn Chi phí cao, không mở rộng tự động được
Dictionary/Rule-based NLP Triển khai nhanh, không cần gán nhãn Bỏ sót ngữ cảnh phủ định, tiếng lóng, độ chính xác thấp ($< 70%$) Chi phí thấp, độ chính xác kém
Machine Learning / Pre-trained LM Tự động hóa hoàn toàn, hiểu ngữ cảnh phức tạp Yêu cầu dữ liệu gán nhãn, tài nguyên GPU lớn khi huấn luyện Tối ưu chi phí vận hành, độ chính xác cao ($> 90%$)

Theo mô hình định thứ tự ưu tiên MoSCoW:

  • Must have: Pipeline làm sạch văn bản tiếng Việt, bộ trích xuất đặc trưng TF-IDF, mô hình phân loại nhị phân đạt Accuracy $\ge 90%$.
  • Should have: Tinh chỉnh mô hình PhoBERT, bộ phân loại 3 nhãn (Positive / Neutral / Negative), phân tích phân phối độ dài câu và ma trận nhầm lẫn (Confusion Matrix).
  • Could have: API endpoint dự đoán cảm xúc thời gian thực, module tự động gán nhãn cho dữ liệu thiếu rating.
  • Won't have (lần này): Phân tích cảm xúc đa phương thức (hình ảnh món ăn kèm theo), triển khai cụm phân tán đa máy chủ.

Thiết kế hệ thống

Kiến trúc giải pháp được thiết kế theo luồng dữ liệu 4 tầng độc lập:

  1. Tầng thu thập dữ liệu (Ingestion Layer): Sử dụng Selenium WebDriver và BeautifulSoup4 để trích xuất dữ liệu phi cấu trúc từ Foody, lưu trữ dưới định dạng JSON Lines/CSV.
  2. Tầng tiền xử lý văn bản (Preprocessing Layer):
    • Module chuẩn hóa ký tự: Thay thế biểu tượng cảm xúc (emoji), quy chuẩn đơn vị tiền tệ (10k, 10000đ $\rightarrow$ N nghìn vnd), đơn vị đo lường (kg, gram).
    • Module xử lý tiếng lóng và viết tắt: Ánh xạ từ điển tiếng lóng (thik $\rightarrow$ thích, ko/k $\rightarrow$ không, iu $\rightarrow$ yêu).
    • Module phân đoạn từ: Ứng dụng cây phân loại RDRsegmenter (vncorenlp v1.0.3) để ghép các từ ghép tiếng Việt (ví dụ: kinh_tế, nhân_viên, chất_lượng).
  3. Tầng mô hình hóa (Modeling Layer):
    • Pipeline 1: TfidfVectorizer (Scikit-learn v1.2.2, max_features=8000, ngram_range=(1,2)) kết hợp với Logistic Regression, MultinomialNB và Linear SVM.
    • Pipeline 2: AutoTokenizer (FastBPE, vocab_size=64000) kết hợp PhoBERT-base (135M parameters, PyTorch v2.0.0, Hugging Face transformers v4.28.0).
  4. Tầng đánh giá & Lưu trữ (Evaluation & Persistence Layer): Xuất báo cáo hiệu năng với các chỉ số Accuracy, Precision, Recall, F1-Macro, ROC-AUC; serialize mô hình bằng joblib và PyTorch checkpoint (.pt).
+-----------------------------------------------------------------------------------+
|                            ARCHITECTURE PIPELINE                                  |
+-----------------------------------------------------------------------------------+
| [Foody Crawler] (Selenium) ──> Raw JSON Data (49,000+ items)                      |
|        │                                                                          |
|        ▼                                                                          |
| [Text Normalizer] (Regex Engine: currency, slang, emoji removal, lowercase)       |
|        │                                                                          |
|        ▼                                                                          |
| [Word Segmentation] (VnCoreNLP - RDRsegmenter: syllabic linking -> word_tokens)   |
|        │                                                                          |
|        ├────────────────────────────────────┬─────────────────────────────────────┤
|        ▼                                    ▼                                     |
| [Classical Path]                   [Deep Learning Path]                           |
|  - TfidfVectorizer (max_feat=8000)   - FastBPE Tokenizer (max_len=256)            |
|  - Linear Classifier                 - VinAI PhoBERT-base (135M params)           |
|    (Logistic Regression / SVM / NB)  - AdamW Optimizer (lr=3e-5)                  |
|        │                                    │                                     |
|        └─────────────────┬──────────────────┘                                     |
|                          ▼                                                        |
|           [Model Evaluation & Inference Engine]                                   |
|           - Metrics: Acc, F1, ROC-AUC, Latency Benchmarking                       |
+-----------------------------------------------------------------------------------+

Methodology

Nghiên cứu ứng dụng quy trình thực nghiệm dữ liệu CRISP-DM chuẩn:

  • Thu thập & Khám phá dữ liệu (EDA): Phân tích 49.000 đánh giá cho thấy phân phối điểm số trung bình đạt 7.27/10 (trung vị = 7.0). Điểm 1.0 và khoảng 7.0–8.0 chiếm tỷ lệ cao vượt trội, phản ánh tâm lý người dùng thường chỉ để lại phản hồi khi cực kỳ hài lòng hoặc rất bức xúc.
  • Chiến lược gán nhãn:
    • Bộ nhãn 2 lớp: Điểm $< 5.0 \rightarrow$ Tiêu cực (Negative, 5.999 mẫu); Điểm $\ge 5.0 \rightarrow$ Tích cực (Positive, 28.892 mẫu). Sau lọc nhiễu còn ~35.000 mẫu (chia 80% train = 27.920 mẫu, 20% test = 6.980 mẫu).
    • Bộ nhãn 3 lớp: Điểm $< 5.0 \rightarrow$ Tiêu cực (24.43%); $5.0 \le \text{Điểm} < 8.0 \rightarrow$ Trung lập (17.20%); Điểm $\ge 8.0 \rightarrow$ Tích cực (56.37%).
  • Quản trị rủi ro: Rủi ro mất cân bằng nhãn (Class Imbalance) được kiểm soát bằng kỹ thuật Stratified K-Fold Cross-Validation và đánh giá bằng F1-Macro thay vì chỉ dựa vào Accuracy thuần túy.

Implementation và kết quả

Development process

Quá trình tiền xử lý văn bản tiếng Việt và trích xuất vector được triển khai bằng mã nguồn Python tối ưu:

import re
import unicodedata
from vncorenlp import VnCoreNLP
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report, roc_auc_score

# Khởi tạo mô hình phân đoạn từ VnCoreNLP
rdrsegmenter = VnCoreNLP(
    "/opt/vncorenlp/VnCoreNLP-1.1.1.jar", 
    annotators="wseg", 
    max_heap_size='-Xmx2g'
)

# Từ điển chuẩn hóa tiếng lóng
SLANG_DICT = {
    "thik": "thích", "iu": "yêu", "ko": "không", "k": "không",
    "dc": "được", "đc": "được", "ngonnn": "ngon", "ok": "tốt",
    "chuc": "chút", "nv": "nhân viên", "qan": "quán"
}

def clean_vietnamese_text(text: str) -> str:
    """Tiền xử lý và chuẩn hóa chuỗi văn bản tiếng Việt thô."""
    if not isinstance(text, str):
        return ""
    text = unicodedata.normalize("NFC", text.lower())
    # Chuẩn hóa giá tiền và đơn vị
    text = re.sub(r'\b\d+[\.,]?\d*\s*(k|nghìn|ngàn|vnd|đ|dong)\b', ' N nghìn vnd ', text)
    # Loại bỏ email, url, số điện thoại
    text = re.sub(r'\S+@\S+', ' ', text)
    text = re.sub(r'https?://\S+|www\.\S+', ' ', text)
    text = re.sub(r'\b0\d{9,10}\b', ' ', text)
    # Thay thế tiếng lóng
    words = text.split()
    words = [SLANG_DICT.get(w, w) for w in words]
    text = " ".join(words)
    # Loại bỏ ký tự đặc biệt, dấu câu, emoji
    text = re.sub(r'[^\w\s]', ' ', text)
    text = re.sub(r'\s+', ' ', text).strip()
    return text

def segment_text(text: str) -> str:
    """Phân đoạn từ ghép tiếng Việt sử dụng RDRsegmenter."""
    sentences = rdrsegmenter.tokenize(text)
    segmented = " ".join([" ".join(sentence) for sentence in sentences])
    return segmented

# Pipeline Vector hóa TF-IDF & Huấn luyện Logistic Regression
tfidf = TfidfVectorizer(
    max_features=8000, 
    ngram_range=(1, 2), 
    sublinear_tf=True
)
X_train_tfidf = tfidf.fit_transform(train_corpus)
X_test_tfidf = tfidf.transform(test_corpus)

clf_lr = LogisticRegression(C=1.0, max_iter=1000, solver='lbfgs', n_jobs=-1)
clf_lr.fit(X_train_tfidf, y_train)

Đối với mô hình PhoBERT, cấu trúc fine-tuning sử dụng kiến trúc Encoder 12 lớp, 768 chiều ẩn, 12 attention heads kết hợp lớp phân loại tuyến tính SequenceClassificationHead:

import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification, AdamW

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tokenizer = AutoTokenizer.from_pretrained("vinai/phobert-base", use_fast=False)
model = AutoModelForSequenceClassification.from_pretrained(
    "vinai/phobert-base", 
    num_labels=2
).to(device)

optimizer = AdamW(model.parameters(), lr=3e-5, weight_decay=0.01)
# Training Loop: batch_size=32, epochs=3, total_steps=3348 batches

Testing và validation

Quá trình kiểm thử thực nghiệm được tiến hành trên tập kiểm thử độc lập ($N = 6.980$ quan sát) với môi trường Google Colab GPU NVIDIA Tesla T4 16GB VRAM.

                    ROC CURVES COMPARISON (2-CLASS TASK)
   1.0 ┌─────────────────────────────────────────────────────────────┐
       │                                                      ███████│ PhoBERT (AUC = 0.958)
   0.8 │                                            ██████████       │ Logistic Reg (AUC = 0.932)
       │                                     ████████                │ Linear SVM (AUC = 0.930)
TPR0.6 │                              ███████                        │ Multinomial NB (AUC = 0.922)
       │                        ██████                               │
   0.4 │                  ██████                                     │
       │            ██████                                           │
   0.2 │      ██████                                                 │
       │██████                                                       │
   0.0 └─────────────────────────────────────────────────────────────┘
       0.0         0.2         0.4         0.6         0.8         1.0
                                    FPR

Kết quả đạt được

Bảng tổng hợp chi tiết kết quả thực nghiệm trên bài toán phân loại 2 nhãn (Tích cực / Tiêu cực):

Mô hình thuật toán Vector hóa Accuracy Precision (Pos / Neg) Recall (Pos / Neg) ROC-AUC Thời gian huấn luyện Thời gian suy luận (Test set)
Multinomial Naive Bayes TF-IDF (8k) 92.15% 0.8514 / 0.9182 0.9840 / 0.6210 0.9215 0.0125 s 0.0008 s
Linear SVM TF-IDF (8k) 92.97% 0.9174 / 0.8504 0.9630 / 0.6920 0.9297 720.00 s 54.60 s
Logistic Regression TF-IDF (8k) 93.23% 0.9127 / 0.8641 0.9680 / 0.6840 0.9323 0.85 s 0.003 s
PhoBERT-base FastBPE 94.60% 0.9207 / 0.8716 0.9640 / 0.7410 0.9580 3,240.00 s (54m) 101.40 s

Trên bài toán phân loại 3 nhãn (Tích cực / Trung lập / Tiêu cực):

  • Phương pháp One-vs-Rest Logistic Regression đạt Accuracy 89.96%, tuy nhiên chỉ số F1 trên tập nhãn "Trung lập" suy giảm do đánh giá trung lập có độ dài lớn (trung bình 111.4 từ) chứa nhiều nhận xét khen chê đan xen.
  • Naive Bayes thể hiện khả năng phát hiện bình luận tiêu cực vượt trội với Precision đạt 91.82%, trong khi Logistic Regression cân bằng hoàn hảo giữa độ chính xác tổng thể (93.23%) và độ trễ siêu thấp (0.003 giây).

Đổi mới và đóng góp

  1. Pipeline tiền xử lý chuyên biệt cho F&B Việt Nam: Tích hợp quy tắc chuẩn hóa văn bản phong cách ẩm thực đường phố, loại bỏ nhiễu giá tiền, chuyển đổi 100% từ viết tắt thông dụng trong ẩm thực kết hợp với RDRsegmenter giúp tăng 4.2% độ chính xác so với việc chỉ dùng phương pháp phân tách khoảng trắng cơ bản.
  2. Nghiên cứu đối sánh định lượng toàn diện giữa Classical ML và Deep Learning: Chứng minh rằng trên tập dữ liệu đánh giá văn bản có quy mô trung bình (35.000–50.000 dòng), việc kết hợp TF-IDF $N$-gram tối ưu với Logistic Regression mang lại hiệu năng xấp xỉ mô hình ngôn ngữ lớn PhoBERT ($\Delta \text{Acc} = 1.37%$) nhưng giảm thiểu chi phí tính toán tới hơn 33.000 lần về độ trễ suy luận ($0.003\text{s}$ so với $101.4\text{s}$) và 3.800 lần về thời gian huấn luyện.
  3. Phát hiện quy luật biểu đạt cảm xúc theo độ dài văn bản: Đánh giá tiêu cực có xu hướng ngắn gọn, dứt khoát (trung bình 88.3 từ), tập trung vào các từ khóa gay gắt như "tệ", "chán", "thất vọng". Đánh giá trung lập dài nhất (111.4 từ) do người dùng cân nhắc giữa ưu điểm (chất lượng món ăn) và nhược điểm (thời gian phục vụ, không gian ồn ào).

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng trong doanh nghiệp F&B

  • Hệ sinh thái Foody/ShopeeFood/GrabFood: Tự động gán nhãn chỉ số hài lòng (Customer Satisfaction Score) cho 15–20% bài đánh giá bị thiếu rating điểm số.
  • Hệ thống cảnh báo khủng hoảng truyền thông (PR Monitoring): Phát hiện theo thời gian thực các đánh giá tiêu cực nghiêm trọng (Precision $\ge 91.8%$ khi dùng Naive Bayes/PhoBERT) để thông báo cho quản trị viên xử lý trong vòng 15 phút.
  • Bảng điều khiển phân tích đối thủ (Competitive Intelligence Dashboard): Tự động phân tích điểm mạnh/điểm yếu của các đối thủ cùng phân khúc ẩm thực trên địa bàn.

Yêu cầu hệ thống và Triển khai Production

+-----------------------------------------------------------------------------------+
|                        PRODUCTION SERVING ARCHITECTURE                            |
+-----------------------------------------------------------------------------------+
|  [Client Request] (Review Text) ──> [FastAPI Gateway / Docker Container]          |
|                                                    │                              |
|          ┌─────────────────────────────────────────┴───────────────────────┐      |
|          ▼                                                                 ▼      |
|  [Realtime Mode (Low Latency)]                              [Deep Analysis Mode]  |
|  Engine: TF-IDF + Logistic Regression                       Engine: PhoBERT ONNX  |
|  - RAM: 512 MB                                              - RAM: 4 GB + GPU     |
|  - Latency: < 5 ms                                          - Latency: ~150 ms    |
|  - Throughput: > 2000 req/s                                 - Throughput: 50 req/s|
+-----------------------------------------------------------------------------------+
  • Môi trường đề xuất: Container hóa bằng Docker trên Linux Alpine, API framework sử dụng FastAPI (Python 3.10+).
  • Phần cứng tối thiểu:
    • Mô hình Logistic Regression: 1 Core vCPU, 512MB RAM, dung lượng mô hình serialize chỉ ~18MB.
    • Mô hình PhoBERT (Fine-tuned): 4 Core vCPU hoặc 1 NVIDIA T4 GPU, 4GB RAM, dung lượng checkpoint ~540MB (hoặc 135MB sau khi lượng tử hóa ONNX INT8).

Hạn chế và hướng phát triển

  • Hạn chế hiện tại:
    • Dữ liệu bị mất cân bằng tỷ lệ nhãn tự nhiên (nhãn tích cực chiếm tới 82.8% ở phân lớp 2 nhãn), dẫn đến Recall của nhãn tiêu cực ở các mô hình cổ điển chưa vượt qua mốc 75%.
    • Chưa xử lý triệt để hiện tượng châm biếm/mỉa mai (Sarcasm/Irony) thường gặp trên mạng xã hội.
    • Chưa hỗ trợ phân tích cảm xúc ở mức độ khía cạnh chi tiết (Aspect-Based Sentiment Analysis - ABSA), ví dụ: khen đồ ăn ngon nhưng chê phục vụ chậm trong cùng một câu.
  • Hướng phát triển tương lai:
    • Áp dụng các kỹ thuật cân bằng dữ liệu nâng cao: Focal Loss, SMOTE trên không gian nhúng, hoặc Data Augmentation bằng kỹ thuật Back-translation và LLM paraphrase.
    • Mở rộng bài toán sang ABSA để phân tách cảm xúc theo 4 khía cạnh: Giá cả (Price), Vệ sinh (Hygiene), Không gian (Ambiance) và Dịch vụ (Service).
    • Tối ưu hóa mô hình PhoBERT thông qua tri thức chưng cất (Knowledge Distillation) sang mô hình nhỏ hơn (DistilBERT/MiniBERT) và chuyển đổi sang định dạng TensorRT/ONNX Runtime.

Đối tượng hưởng lợi

  • Sinh viên & Học viên chuyên ngành Data Science/NLP: Cung cấp tài liệu tham khảo chi tiết về toàn bộ vòng đời dự án xử lý văn bản tiếng Việt từ cào dữ liệu, xử lý VnCoreNLP đến fine-tuning PhoBERT.
  • Kỹ sư AI & Software Engineers: Tham khảo pipeline tối ưu hóa giữa độ chính xác và độ trễ trong môi trường thực tế, ứng dụng Scikit-learn và PyTorch/Transformers.
  • Chủ doanh nghiệp F&B & Quản lý thương hiệu: Nhận diện insight khách hàng tự động, nâng cao chất lượng dịch vụ dựa trên phản hồi định lượng từ khách hàng.
  • Các nhà nghiên cứu ứng dụng: Nguồn dẫn chứng thực nghiệm về độ hiệu quả của phương pháp $N$-gram TF-IDF so với các kiến trúc Transformer nặng nề trên ngữ liệu thương mại điện tử đặc thù.

Câu hỏi thường gặp

1. Technical requirements để deploy hệ thống này là gì?

Đối với mô hình khuyến nghị sản xuất (Logistic Regression + TF-IDF), hệ thống chỉ yêu cầu môi trường Python 3.9+, thư viện scikit-learn v1.0+, vncorenlp v1.1, Java Runtime Environment (JRE 8+) để chạy bộ tách từ, cùng 1 vCPU và tối thiểu 512MB RAM. Đối với PhoBERT, cần tối thiểu 4GB RAM và khuyến nghị có card đồ họa GPU hỗ trợ CUDA (như NVIDIA T4) để tối ưu thời gian suy luận.

2. Khả năng mở rộng (Scalability limits) và cách giải quyết?

Với mô hình Logistic Regression, một instance FastAPI đơn lẻ có thể xử lý hơn 2.000 requests/giây với độ trễ dưới 5ms. Khi lưu lượng tăng đột biến, hệ thống có thể scale ngang (Horizontal Pod Autoscaling trên Kubernetes) mà không tốn nhiều chi phí RAM/GPU. Nếu sử dụng PhoBERT, cần triển khai qua Triton Inference Server hoặc lượng tử hóa ONNX Runtime INT8 để giảm tải VRAM.

3. Cách tích hợp hệ thống vào nền tảng F&B hiện có?

Hệ thống được đóng gói dưới dạng RESTful API thông qua FastAPI. Khi người dùng gửi bình luận, ứng dụng backend gửi HTTP POST request chứa chuỗi raw_text tới endpoint /api/v1/predict-sentiment. Kết quả trả về gồm nhãn phân loại (positive/neutral/negative), điểm tự tin (confidence score) và các từ khóa đặc trưng.

4. Nhu cầu bảo trì và cập nhật mô hình định kỳ như thế nào?

Cần thiết lập pipeline MLOps theo dõi hiện tượng suy thoái dữ liệu (Data Drift/Concept Drift), bởi vì ngôn ngữ mạng và tiếng lóng của giới trẻ biến đổi liên tục. Khuyến nghị thu thập dữ liệu mới và huấn luyện lại (Retrain) mô hình định kỳ 3–6 tháng/lần, đồng thời cập nhật thêm từ khóa vào từ điển tiếng lóng SLANG_DICT.

5. Dự toán chi phí và thời gian thu hồi vốn (ROI)?

Triển khai giải pháp dựa trên Classical ML (Logistic Regression) trên cụm máy chủ đám mây tiêu chuẩn (ví dụ: AWS EC2 t4g.small hoặc GCP e2-small) chỉ tốn chi phí khoảng $10–$20/tháng. Doanh nghiệp tiết kiệm được hàng nghìn giờ công đọc và phân loại đánh giá thủ công, giúp phản ứng với phàn nàn của khách hàng nhanh hơn 90%, nâng cao tỷ lệ giữ chân khách hàng (Customer Retention Rate).


Kết luận

Đồ án tốt nghiệp của tác giả Trần Ngọc Kiên đã giải quyết trọn vẹn bài toán phân tích cảm xúc người dùng trên nền tảng thương mại điện tử Foody bằng cách tiếp cận khoa học, chặt chẽ từ thống kê cổ điển đến học sâu hiện đại. Kết quả thực nghiệm trên hơn 35.000 mẫu dữ liệu đã chứng minh: mô hình PhoBERT mang lại độ chính xác cao nhất (94.60%), nhưng mô hình Logistic Regression kết hợp phân đoạn từ RDRsegmenter và mã hóa TF-IDF mới là giải pháp tối ưu toàn diện nhất cho triển khai công nghiệp với độ chính xác đạt 93.23%, ROC-AUC 0.9323 cùng tốc độ xử lý siêu tốc 0.003 giây/mẫu. Nghiên cứu mở ra tiềm năng ứng dụng thực tiễn to lớn cho các sàn thương mại điện tử và chuỗi F&B trong việc tự động hóa giám sát chất lượng dịch vụ và nâng cao trải nghiệm khách hàng tại Việt Nam.