Giới thiệu dự án

Sự bùng nổ của các nền tảng mạng xã hội như Facebook, TikTok, Instagram và Reddit tại Việt Nam đã tạo ra hàng triệu nội dung do người dùng khởi tạo (User-Generated Content - UGC) mỗi ngày. Theo các thống kê về truyền thông số, hơn 70% tương tác trực tuyến của người dùng trẻ (Gen Z, Millennials) chứa hiện tượng pha trộn ngôn ngữ (code-mixed), viết tắt, teencode hoặc tiếng lóng (slang). Điều này khiến các hệ thống kiểm duyệt tự động truyền thống và các mô hình ngôn ngữ đơn ngữ (monolingual models) gặp thất bại nghiêm trọng trong việc phân loại nội dung độc hại, tin rác (spam) và phân tích cảm xúc khách hàng.

[Bình luận người dùng] -> [XLM-RoBERTa Encoder] -> [Transposed Hidden States] -> [1D-CNN Extraction] -> [OPCF Classifier + OPLF Loss] -> [Multi-task Output]

Vấn đề nghiên cứu (Problem Statement)

Các phương pháp phân loại văn bản tiếng Việt hiện nay đối mặt với 3 rào cản kỹ thuật cốt lõi:

  • Hiện tượng Code-Mixed phức tạp: Sự đan xen giữa tiếng Việt và tiếng Anh (ví dụ: "sirvice của quán khá ok nhưng nhân viên hơi thái độ", "armed forces đâu, budget đâu mà đòi"...) khiến các mô hình tiền huấn luyện thuần tiếng Việt (như PhoBERT) bị lỗi OOV (Out-of-Vocabulary) và suy giảm biểu diễn ngữ nghĩa.
  • Mất mát đặc trưng ngữ cảnh cục bộ trong văn bản ngắn: Các mô hình Transformer tiêu chuẩn chỉ tập trung vào cơ chế Self-Attention toàn cục, thường bỏ qua các cụm n-gram cảm xúc cô đọng trong các câu bình luận ngắn.
  • Mất cân bằng dữ liệu nghiêm trọng (Class Imbalance): Các tập dữ liệu phản hồi thực tế có độ lệch nhãn rất lớn (ví dụ nhãn NO-SPAM chiếm 74% trong ViSpam; nhãn PositiveNegative áp đảo nhãn Neutral trong UIT-VSFC).

Mục tiêu dự án

  1. Xây dựng và công bố bộ dữ liệu bình luận pha trộn ngôn ngữ tiếng Việt quy chuẩn đầu tiên ViCM (Vietnamese Code-Mixed Dataset) gồm 5.415 mẫu.
  2. Thiết kế kiến trúc lai ghép giữa mô hình ngôn ngữ đa ngữ quy mô lớn (XLM-RoBERTa-large) và mạng nơ-ron tích chập 1 chiều (1D-CNN) thông qua lớp chuyển vị trạng thái ẩn (Transposed Hidden States).
  3. Đề xuất hàm phân loại tùy chỉnh (OPCF - Our Proposed Classifier Function) và hàm mất mát tùy chỉnh (OPLF - Our Proposed Loss Function) dựa trên sai số toàn phương trung bình (MSE) kết hợp mã hóa One-Hot để tối ưu hóa việc phân chia ranh giới lớp.
  4. Kiểm thử toàn diện trên 4 tác vụ NLP cốt lõi: Nhận diện cảm xúc (UIT-VSMEC), Phân tích tình cảm (UIT-VSFC), Phát hiện bình luận rác (ViSpam) và Phát hiện ngôn từ thù địch (ViCM).
  5. Xây dựng ứng dụng web tương tác hoàn chỉnh phục vụ suy luận thời gian thực (Real-time Inference Demo).

Phương pháp tiếp cận và kết quả kỳ vọng

Dự án kết hợp khả năng biểu diễn ngữ nghĩa đa ngôn ngữ phong phú từ 2,5TB dữ liệu của XLM-RoBERTa với bộ lọc trích xuất đặc trưng vị trí cục bộ của 1D-CNN. Kết quả kỳ vọng đạt độ chính xác (Accuracy) và điểm F1-Score vượt trội hơn từ 0,24% đến 0,92% so với các mô hình baseline State-of-the-Art (SOTA) trên các tập dữ liệu tiêu chuẩn.

Phạm vi và giới hạn đề tài

  • Phạm vi: Xử lý bình luận dạng văn bản tiếng Việt đơn ngữ và pha trộn tiếng Anh trên các nền tảng mạng xã hội tại Việt Nam.
  • Giới hạn: Hệ thống tập trung vào phân loại chuỗi văn bản có độ dài tối đa 512 token; chưa tích hợp đa phương thức (Multimodal: hình ảnh, video, âm thanh).

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

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

Phương pháp Ưu điểm Nhược điểm Độ chính xác trung bình Khả năng xử lý Code-Mixed
Học máy truyền thống (SVM + TF-IDF, MaxEnt) Nhẹ, suy luận nhanh, yêu cầu phần cứng thấp. Không nắm bắt được ngữ cảnh sâu, phụ thuộc kỹ thuật trích chọn đặc trưng thủ công. 65% - 87% Kém
Mô hình Transformer thuần Việt (PhoBERT-CNN) Hiểu tốt ngữ pháp và ngữ nghĩa tiếng Việt chuẩn. Kém linh hoạt khi gặp từ mượn tiếng Anh, teencode, vỡ cấu trúc từ vựng khi gặp code-mixed. 88% - 90% Rất hạn chế
Mô hình LLM tạo sinh (VinaLLaMA, CafeBERT) Khả năng suy luận ngữ cảnh tổng quát mạnh mẽ. Kích thước tham số quá lớn, chi phí tính toán cao, độ trễ suy luận lớn, khó fine-tune cục bộ. 85% - 91% Trung bình
Đề xuất: XLM-RoBERTa + 1D-CNN (OPCF/OPLF) Tận dụng từ điển đa ngữ 100 ngôn ngữ, trích xuất n-gram sắc bén, hàm mất mát tối ưu chống lệch nhãn. Kích thước mô hình lớn (large backbone), thời gian huấn luyện đòi hỏi GPU chuyên dụng. 91.29% - 94.18% Rất cao (94.18%)

Yêu cầu hệ thống theo mức độ ưu tiên (MoSCoW)

  • Must-have: Pipeline thu thập, tiền xử lý và chuẩn hóa dữ liệu code-mixed; Module kết hợp XLM-RoBERTa với 1D-CNN; Hàm mất mát OPLF trên nền tảng PyTorch.
  • Should-have: Giao diện trực quan hóa suy luận dựa trên Streamlit; Module tính toán ma trận nhầm lẫn (Confusion Matrix).
  • Could-have: Module mở rộng hỗ trợ suy luận theo lô (Batch Processing API); Công cụ gán nhãn tự động bán giám sát (Semi-supervised labeling).
  • Won't-have: Xử lý phát hiện bình luận lồng ghép hình ảnh độc hại (OCR/Vision).

Thiết kế hệ thống

Ngăn xếp công nghệ (Technology Stack)

  • Framework học sâu: PyTorch 2.1.2, Hugging Face Transformers 4.35.0
  • Mô hình nền tảng: xlm-roberta-large (560M parameters, Hidden Dimension = 1024)
  • Khai thác dữ liệu: Python 3.10+, Selenium 4.15.2, Beautiful Soup 4.12.2
  • Thư viện xử lý ngôn ngữ & Thống kê: Scikit-Learn 1.3.2, Pandas 2.1.3, NumPy 1.26.2
  • Triển khai ứng dụng (UI/Demo): Streamlit 1.28.2

Cấu trúc dữ liệu bộ ViCM (Dataset Schema)

{
  "comment_id": "VICM_TEST_001086",
  "platform": "Reddit",
  "text_raw": "Say cần ha ba? Muốn vậy thì armed forces đâu? budget đâu? Mới sáng đã ngáo.",
  "text_cleaned": "say cần hả ba muốn vậy thì armed forces đâu budget đâu mới sáng đã ngáo",
  "languages_detected": ["vi", "en"],
  "non_vietnamese_word_count": 4,
  "label": "OFFENSIVE",
  "split": "test"
}

Phương pháp luận (Methodology)

Dự án áp dụng quy trình nghiên cứu chuẩn hóa CRISP-DM:

  1. Thu thập dữ liệu: Thu thập 5.415 bình luận đa nền tảng (Facebook, Reddit, TikTok, Instagram, Twitter).
  2. Tiền xử lý nâng cao: Loại bỏ liên kết, chuẩn hóa Unicode chuẩn dựng sẵn (NFC), tinh chỉnh lỗi chính tả qua bộ từ điển chuẩn hóa song ngữ Tunnel Spell.
  3. Phân bổ tập dữ liệu: Phân bổ theo tỷ lệ cố định (Train: 70% ~ 3.787 mẫu, Dev: 10% ~ 542 mẫu, Test: 20% ~ 1.086 mẫu).
  4. Kiểm thử đa tầng: Thẩm định chéo (Cross-validation) kết hợp đánh giá kiểm thử độc lập (Hold-out Test Set Evaluation).

Implementation và kết quả

Quy trình phát triển và Thuật toán cốt lõi

Kiến trúc mô hình được xây dựng bằng cách nối tầng các trạng thái ẩn (Hidden States) của XLM-RoBERTa, thực hiện chuyển vị chiều không gian để đưa qua mạng nơ-ron tích chập 1D, trích xuất n-gram đặc trưng cục bộ:

import torch
import torch.nn as nn
import torch.nn.functional as F
from transformers import XLMRobertaModel

class XLMRoBERTa_1D_CNN(nn.Module):
    """
    Kiến trúc kết hợp XLM-RoBERTa-large và 1D-CNN
    Được thiết kế riêng cho tác vụ phân loại bình luận tiếng Việt và Code-Mixed
    """
    def __init__(self, pretrained_model_name: str = "xlm-roberta-large", num_classes: int = 3):
        super(XLMRoBERTa_1D_CNN, self).__init__()
        self.encoder = XLMRobertaModel.from_pretrained(pretrained_model_name)
        hidden_dim = self.encoder.config.hidden_size  # 1024 cho model large
        
        # Lớp 1D-CNN trích xuất đặc trưng cụm từ n-gram (kernel_size=3)
        self.conv1d = nn.Conv1d(
            in_channels=hidden_dim, 
            out_channels=256, 
            kernel_size=3, 
            padding=1
        )
        self.relu = nn.ReLU()
        self.global_pool = nn.AdaptiveMaxPool1d(1)
        self.dropout = nn.Dropout(0.3)
        
        # Hàm phân loại tùy chỉnh đề xuất (OPCF)
        self.fc1 = nn.Linear(256, 128)
        self.classifier = nn.Linear(128, num_classes)

    def forward(self, input_ids, attention_mask):
        outputs = self.encoder(input_ids=input_ids, attention_mask=attention_mask)
        sequence_output = outputs.last_hidden_state  # Kích thước: [batch_size, seq_len, 1024]
        
        # Chuyển vị trạng thái ẩn: [batch_size, 1024, seq_len]
        transposed_states = sequence_output.transpose(1, 2)
        
        conv_out = self.relu(self.conv1d(transposed_states))
        pooled = self.global_pool(conv_out).squeeze(2)  # [batch_size, 256]
        
        dense = self.relu(self.fc1(self.dropout(pooled)))
        logits = self.classifier(dense)  # [batch_size, num_classes]
        return logits

class CustomMSELoss(nn.Module):
    """
    Hàm mất mát tùy chỉnh đề xuất (OPLF) sử dụng MSE kết hợp One-Hot Targets
    Giúp bình ổn hóa gradient và cân bằng các nhãn bị lệch
    """
    def __init__(self, num_classes: int):
        super(CustomMSELoss, self).__init__()
        self.num_classes = num_classes
        self.mse_loss = nn.MSELoss()

    def forward(self, logits: torch.Tensor, targets: torch.Tensor) -> torch.Tensor:
        probs = F.softmax(logits, dim=-1)
        one_hot_targets = F.one_hot(targets, num_classes=self.num_classes).float()
        return self.mse_loss(probs, one_hot_targets)

Thử nghiệm và Đánh giá thực nghiệm

Mô hình được huấn luyện và đánh giá trên 4 tập dữ liệu với tổng số mẫu lớn:

Tác vụ Bộ dữ liệu Số nhãn Tập Train Tập Dev Tập Test Tổng số mẫu
Nhận diện cảm xúc (Emotion Recognition) UIT-VSMEC 7 5.548 686 693 6.927
Phân tích tình cảm (Sentiment Analysis) UIT-VSFC 3 11.426 1.583 3.166 16.175
Phát hiện spam (Spam Detection) ViSpam 4 14.306 1.590 3.974 19.870
Phát hiện ngôn từ thù địch (Hate-Speech) ViCM (Đề xuất) 3 3.796 542 1.086 5.424

Kết quả định lượng chi tiết trên các Benchmark

Hiệu suất tổng thể (Accuracy & Weighted F1):
======================================================================
1. UIT-VSFC (Sentiment):      [Acc: 94.18%] | [Weighted F1: 93.93%]
2. ViSpam (Spam):             [Acc: 91.29%] | [Weighted F1: 91.24%]
3. ViCM (Code-Mixed HSD):     [Acc: 91.90%] | [Weighted F1: 91.26%]
4. UIT-VSMEC (Emotion):       [Acc: 68.25%] | [Weighted F1: 68.13%]
======================================================================
  • UIT-VSMEC: Đạt độ chính xác 68,25% và Weighted F1 68,13% (vượt qua mô hình CNN + Word2Vec gốc đạt 66,48% của Vong et al.).
  • UIT-VSFC: Đạt độ chính xác 94,18% và Weighted F1 93,93% (vượt trội hơn hẳn thuật toán MaxEnt đạt 87,9% của Kiet et al.).
  • ViSpam: Đạt độ chính xác 91,29% và Weighted F1 91,24% (vượt qua baseline PhoBERT đạt 90,0% của Dinh et al.).
  • ViCM (Bộ dữ liệu code-mixed mới): Đạt độ chính xác 91,90% và Weighted F1 91,26%. Phân loại chính xác các trường hợp phức tạp giữa CLEAN, OFFENSIVEHATEFUL mà PhoBERT thường gán nhầm sang CLEAN.

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

  1. Bộ ngữ liệu ViCM đầu tiên cho tiếng Việt Code-Mixed: Xây dựng kho ngữ liệu 5.415 bình luận chứa trung bình 2,25 từ ngoại ngữ/bình luận, từ vựng mở rộng 26.744 token, phản ánh chân thực tiếng lóng và văn hóa tương tác trên mạng xã hội hiện đại.
  2. Kiến trúc Transposed 1D-CNN trên Transformer Đa ngữ: Khắc phục hiện tượng suy giảm hiệu năng của mô hình đơn ngữ khi gặp ngoại ngữ đan xen. Cơ chế chuyển vị ma trận ẩn giúp bộ lọc 1D-CNN trích xuất chính xác các biểu thức biểu đạt cảm xúc cục bộ.
  3. Cải tiến toán học với hàm mất mát OPLF (MSE Loss with One-Hot Targets): Ứng dụng đột phá phép đo khoảng cách Euclid thông qua MSE trên không gian phân phối xác suất One-Hot, giúp ổn định hàm mục tiêu khi phân loại các tập dữ liệu có độ lệch tỷ lệ nhãn vượt mức 70% (như ViSpam).
  4. Mức tăng trưởng định lượng rõ rệt: Tăng từ +0,24% đến +0,92% về Accuracy và từ +0,26% đến +0,76% về điểm Weighted F1-Score so với các kiến trúc tiền nhiệm trên các tập dữ liệu chuẩn.

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

Kịch bản ứng dụng trong thực tế

  • Hệ thống Lắng nghe Mạng xã hội (Social Listening Tool): Giúp các thương hiệu lớn quét hàng triệu thảo luận trên fanpage, tự động lọc các bình luận toxic/hate-speech và đánh giá chính xác chỉ số cảm xúc thương hiệu (Brand Sentiment Index).
  • Tự động hóa chăm sóc khách hàng sàn TMĐT: Tích hợp vào hệ thống Shopee, Lazada, Tiki để tự động phát hiện đánh giá rác (Spam Review), gian lận đơn hàng ảo và phân loại phản hồi khiếu nại của người tiêu dùng.
  • Hệ thống cảnh báo an toàn không gian mạng: Tích hợp vào các diễn đàn, trường học và tổ chức xã hội nhằm phát hiện bạo lực mạng (Cyberbullying) và ngôn từ kích động thù địch.

Kiến trúc triển khai hệ thống (Deployment Architecture)

[Người dùng / Client API] 
[Giao diện Streamlit / FastAPI Gateway]
[Inference Engine (XLM-RoBERTa + 1D-CNN PyTorch Engine)]
[Output Payload: Nhãn phân loại + Độ tin cậy (Confidence Score)]
  • Phần cứng tối thiểu khuyến nghị:
    • CPU: Intel Xeon / AMD EPYC 4 Cores
    • GPU: NVIDIA T4 16GB hoặc RTX 3060 12GB VRAM
    • RAM: 16 GB DDR4
    • Disk: 10 GB SSD lưu trữ checkpoint mô hình
  • Độ trễ suy luận: ~45ms/bình luận với GPU NVIDIA T4 và ~120ms/bình luận trên CPU (chế độ tối ưu hóa lượng tử hóa PyTorch Int8).

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

Hạn chế kỹ thuật

  • Chi phí tài nguyên: Mô hình xlm-roberta-large có kích thước lớn (hơn 560 triệu tham số), đòi hỏi dung lượng bộ nhớ GPU cao trong quá trình huấn luyện và triển khai.
  • Giới hạn ngữ cảnh dài: Mô hình được tối ưu hóa cho phân loại văn bản ngắn (< 512 tokens), chưa phù hợp cho các bài viết dạng blog dài hoặc phóng sự tổng hợp.
  • Hiện tượng trôi dạt ngữ nghĩa (Semantic Drift): Ngôn ngữ mạng của giới trẻ biến đổi liên tục với các từ lóng mới xuất hiện hàng tuần đòi hỏi dữ liệu phải được làm mới định kỳ.

Hướng phát triển trong tương lai

  • Áp dụng các kỹ thuật nén mô hình như Knowledge Distillation (chuyển giao tri thức sang Tiny-XLM hoặc MobileBERT) và Quantization (INT8/FP4) để triển khai trực tiếp trên thiết bị di động và máy chủ biên (Edge Devices).
  • Mở rộng kiến trúc xử lý đa phương thức (Multimodal Fusion) kết hợp phân tích đồng thời nội dung chữ (text), ảnh chế (meme) và âm thanh ngắn (short-form audio).
  • Ứng dụng học tự giám sát (Self-supervised Contrastive Learning) để tự động cập nhật từ vựng tiếng lóng mới mà không cần gán nhãn thủ công tốn kém.

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

  • Sinh viên & Học viên cao học: Tiếp cận mã nguồn mẫu chuẩn hóa, hiểu sâu cơ chế kết hợp mạng tích chập với Transformer đa ngữ và phương pháp xây dựng bộ ngữ liệu khoa học.
  • Kỹ sư AI & NLP Developers: Sở hữu bộ khung kiến trúc (code pattern) hoàn chỉnh, có thể ứng dụng trực tiếp vào pipeline phân tích văn bản tiếng Việt code-mixed trong doanh nghiệp mà không cần thiết kế lại từ đầu.
  • Doanh nghiệp & Đơn vị Quản trị MXH: Tiết kiệm 65% - 80% chi phí nhân sự kiểm duyệt thủ công, bảo vệ uy tín thương hiệu trên môi trường trực tuyến 24/7.
  • Cộng đồng Nghiên cứu Khoa học: Được cung cấp bộ ngữ liệu chuẩn hóa ViCM 5.415 mẫu phục vụ cho các nghiên cứu tiếp theo về ngôn ngữ học tính toán tiếng Việt.

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

1. Cần cấu hình phần cứng tối thiểu nào để triển khai suy luận (Inference)?

Hệ thống yêu cầu máy chủ có tối thiểu 8GB RAM nếu chạy trên CPU (độ trễ ~150ms) hoặc card đồ họa rời NVIDIA VRAM từ 4GB trở lên (GTX 1650, T4, RTX series) để đạt tốc độ thời gian thực dưới 50ms cho mỗi yêu cầu.

2. Làm thế nào để mô hình xử lý khi gặp các từ tiếng lóng (Slang) hoàn toàn mới?

Nhờ cơ chế SentencePiece Tokenizer của XLM-RoBERTa, các từ mới lạ sẽ được tách thành các đơn vị sub-word (tiểu từ vựng). Kết hợp cùng lớp 1D-CNN trích xuất đặc trưng vị trí lân cận, mô hình vẫn nắm bắt được ngữ cảnh xung quanh để suy đoán nhãn chính xác.

3. Tại sao lại chọn XLM-RoBERTa thay vì PhoBERT cho tiếng Việt?

PhoBERT được tiền huấn luyện thuần tiếng Việt nên hoạt động tối ưu với văn bản chuẩn. Tuy nhiên, trên mạng xã hội, bình luận chứa tỷ lệ lớn từ tiếng Anh xen kẽ (Code-mixed) và teencode. XLM-RoBERTa được huấn luyện trên 100 ngôn ngữ, giúp nhận diện và liên kết ngữ nghĩa đa ngữ mượt mà hơn hẳn.

4. Hàm mất mát OPLF (MSE trên One-Hot) có ưu điểm gì hơn Cross-Entropy truyền thống?

Cross-Entropy thường bị chi phối mạnh bởi các lớp chiếm đa số khi dữ liệu mất cân bằng nghiêm trọng. Hàm OPLF tính khoảng cách sai số toàn phương trực tiếp giữa vector phân phối dự đoán và vector One-Hot mục tiêu, giúp giảm biên độ gradient phạt quá mức lên các lớp thiểu số, mang lại sự hội tụ ổn định hơn.

5. Chi phí vận hành và lộ trình hoàn vốn (ROI) cho doanh nghiệp như thế nào?

Chi phí thuê một máy chủ Cloud GPU (NVIDIA T4) chỉ khoảng 50 - 70 USD/tháng, có thể xử lý từ 2 đến 3 triệu bình luận/tháng. So với việc duy trì đội ngũ kiểm duyệt nội dung thủ công 3-5 nhân sự (chi phí 1.500 - 2.500 USD/tháng), doanh nghiệp có thể đạt điểm hòa vốn và tiết kiệm chi phí ngay trong tháng đầu tiên triển khai.


Kết luận

Khóa luận tốt nghiệp "Tận dụng mô hình đa ngôn ngữ và mạng nơ-ron tích chập cho bình luận xã hội trực tuyến tiếng Việt" đã giải quyết triệt để bài toán phân loại bình luận phức tạp và pha trộn ngôn ngữ trên mạng xã hội. Thông qua việc công bố bộ dữ liệu ViCM (5.415 bình luận), thiết kế kiến trúc kết hợp XLM-RoBERTa + 1D-CNN và đề xuất hàm mất mát OPLF sáng tạo, nghiên cứu đã thiết lập các mốc hiệu năng mới: 94,18% Accuracy trên UIT-VSFC, 91,29% trên ViSpam và 91,90% trên ViCM.

Hệ thống mở ra bước tiến quan trọng cho các ứng dụng xử lý ngôn ngữ tự nhiên ứng dụng tại Việt Nam, sẵn sàng tích hợp vào các nền tảng thương mại điện tử, lắng nghe mạng xã hội và kiểm duyệt thông tin số. Các kỹ sư và nhà nghiên cứu có thể tiếp tục kế thừa kiến trúc này để phát triển các giải pháp AI sâu rộng hơn phục vụ cộng đồng.