Giới thiệu dự án

Bối cảnh và thực trạng ngành

Trong hệ thống hỏi đáp tự động (Question Answering - QA), xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP) và trợ lý ảo đối thoại (Chatbot), phân loại câu hỏi (Question Classification - QC) đóng vai trò là tầng tiền xử lý quyết định độ chính xác của toàn bộ chu trình truy xuất thông tin. Theo các nghiên cứu chuẩn hóa từ hội nghị Text Retrieval Conference (TREC), việc phân loại chính xác câu hỏi vào các lớp ngữ nghĩa (thực thể, con người, vị trí, số liệu, mô tả, từ viết tắt) giúp giảm không gian tìm kiếm dữ liệu lên đến 70% và tăng độ chính xác truy vấn của hệ thống tìm kiếm thông tin.

Tuy nhiên, xây dựng mô hình phân loại câu hỏi tiếng Việt gặp rào cản lớn do thiếu hụt tài nguyên ngữ liệu gán nhãn chất lượng cao (Low-resource Language Challenge). Tiếng Việt có tính đơn lập, phụ thuộc chặt chẽ vào ngữ cảnh, cấu trúc thanh điệu phong phú và có nhiều biến thể diễn đạt cho cùng một ý định hỏi (ví dụ: "Tại sao?", "Vì lý do gì?", "Vì sao?").

   [Tập dữ liệu gốc nhỏ] 

Vấn đề cụ thể và điểm nghẽn kỹ thuật (Problem Statement)

  • Sự khan hiếm dữ liệu câu hỏi tiếng Việt: Thiếu hụt nghiêm trọng các bộ ngữ liệu diễn giải câu hỏi (Question Paraphrase) và phân loại câu hỏi chuẩn hóa đa tầng.
  • Hạn chế của các phương pháp tăng cường dữ liệu truyền thống (EDA - Easy Data Augmentation): Các kỹ thuật như xóa từ ngẫu nhiên (Random Deletion - RD), hoán đổi từ (Random Swap - RS), chèn từ (Random Insertion - RI), hoặc thay thế từ đồng nghĩa (Synonym Replacement - SR) thường phá vỡ trật tự ngữ pháp tiếng Việt, làm sai lệch cấu trúc hỏi hoặc tạo ra các câu vô nghĩa.
  • Hiện tượng trôi dạt ngữ nghĩa trong dịch ngược (Back-Translation - BT): Dịch trung gian qua ngôn ngữ thứ ba (tiếng Anh) qua Bing Translate hoặc Google Translate thường làm mất đi sắc thái biểu cảm, cấu trúc đặc thù của trợ từ nghi vấn tiếng Việt.

Mục tiêu dự án

  1. Xây dựng bộ dữ liệu diễn giải câu hỏi tiếng Việt ViQP (Vietnamese Question Paraphrase): Thu thập, làm sạch và gán nhãn thủ công với quy trình kiểm định chéo (Cross-check), đạt quy mô 13,411 câu hỏi và 56,068 cặp câu tương đương ngữ nghĩa.
  2. Chuẩn hóa bộ dữ liệu phân loại câu hỏi ViTREC: Xây dựng tập dữ liệu phân loại theo chuẩn TREC-QC gồm 6 nhãn thô (Coarse) và 50 nhãn mịn (Fine) dành riêng cho tiếng Việt.
  3. Phát triển mô hình sinh câu hỏi tự động (ViT5-QP): Ứng dụng kiến trúc Transformer chuyên biệt (ViT5) để diễn giải câu hỏi mà vẫn bảo toàn nguyên vẹn mục đích hỏi (Intent Preservation).
  4. Đánh giá toàn diện trên các mô hình phân loại đa dạng: Thử nghiệm tác động của dữ liệu tăng cường trên 8 thuật toán học máy và học sâu: K-Nearest Neighbors (KNN), Naive Bayes (NB), Support Vector Machine (SVM), Logistic Regression (LR), Convolutional Neural Network (CNN), Long Short-Term Memory (LSTM), Bidirectional LSTM (BiLSTM) và Pre-trained Language Model (PhoBERT).

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

Dự án đề xuất giải pháp tiếp cận dựa trên mô hình sinh chuỗi sang chuỗi (Sequence-to-Sequence) kết hợp tiền huấn luyện ViT5 trên tập ViQP để tự động tăng cường dữ liệu câu hỏi. Dữ liệu sau khi tăng cường được tích hợp vào pipeline huấn luyện các bộ phân loại trên tập ViTREC. Kỳ vọng đạt độ chính xác phân loại nhãn thô trên 89% và nhãn mịn trên 76%, đồng thời vượt trội hơn các phương pháp tăng cường truyền thống như EDA và Back-Translation về chất lượng ngôn ngữ (đo lường qua BLEU và F1-Score).

Phạm vi và giới hạn

  • Phạm vi: Tập trung vào các câu hỏi đơn văn bản tiếng Việt thuộc 6 miền chính: ABBREVIATION (Viết tắt), DESCRIPTION (Mô tả/Định nghĩa), ENTITY (Thực thể), HUMAN (Con người/Tổ chức), LOCATION (Địa điểm), NUMERIC (Số liệu).
  • Giới hạn: Chưa xử lý các câu hỏi đa ý định phức tạp lồng ghép (Multi-intent nested questions), câu hỏi mang tính châm biếm hoặc khẩu ngữ vùng miền địa phương sâu.

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

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

Phương pháp Cơ chế hoạt động Ưu điểm Nhược điểm Đánh giá độ phù hợp tiếng Việt
EDA (RD, RS, RI, SR) Thao tác ngẫu nhiên trên cấp độ từ (Lexical-level) Tốc độ nhanh, không tốn tài nguyên GPU, dễ triển khai Phá vỡ trật tự cú pháp tiếng Việt, gây lỗi đảo từ sai nghĩa Thấp (Tạo câu vô nghĩa/mất từ nghi vấn cốt lõi)
Back-Translation (BT) Dịch qua ngôn ngữ trung gian (Vi $\to$ En $\to$ Vi) Tạo câu trôi chảy, đa dạng từ vựng Phụ thuộc API dịch thuật, dễ mất ngữ cảnh câu hỏi, độ trễ cao Trung bình (Bị phụ thuộc công cụ bên thứ ba)
Zero-shot LLM (ChatGPT) Dùng prompt yêu cầu mô hình sinh câu hỏi tương tự Văn phong mượt mà, cấu trúc phong phú Thiếu tính nhất quán, khó kiểm soát định dạng, chi phí API lớn Khá (Khó fine-tune cục bộ cho hệ thống đóng)
ViT5-QP (Đề xuất) Fine-tune Seq2Seq Transformer trên tập cặp câu chuẩn Giữ nguyên ý định hỏi, sinh đa dạng câu tự nhiên, kiểm soát chặt chẽ Cần chi phí huấn luyện mô hình ban đầu Tối ưu (Bảo toàn ngữ pháp và thực thể nghi vấn)

Bảng ưu tiên yêu cầu hệ thống theo khung MoSCoW

  • Must-have: Pipeline sinh câu hỏi tự động bảo toàn nhãn thực thể; Bộ dữ liệu ViQP $\ge$ 10,000 câu; Benchmark phân loại 6 nhãn thô và 50 nhãn mịn.
  • Should-have: Mô hình ViT5 Seq2Seq đạt điểm BLEU $\ge$ 20.0; Cải thiện Accuracy/F1 trên tất cả các thuật toán phân loại cơ sở.
  • Could-have: Tích hợp mô-đun lọc câu trùng lặp tự động bằng độ đo Cosine Similarity qua PhoBERT Embedding.
  • Won't-have: Hỗ trợ xử lý hỏi đáp giọng nói (Speech-to-Text) trong phiên bản hiện tại.

Thiết kế hệ thống

  [Dữ liệu gốc ViTREC]

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

  • Ngôn ngữ lập trình: Python 3.9.16
  • Deep Learning Framework: PyTorch 1.13.1, CUDA 11.7
  • Hugging Face Ecosystem: transformers==4.28.1, datasets==2.11.0, accelerate==0.18.0
  • Mô hình cốt lõi: VietAI/vit5-base (220M tham số), vinai/phobert-base-v2 (135M tham số)
  • Machine Learning & Preprocessing: scikit-learn==1.2.2, pyvi==0.1.1, underthesea==6.0.0
  • Môi trường huấn luyện: NVIDIA A100-SXM4-40GB / Tesla V100 GPU

Cấu trúc dữ liệu mẫu huấn luyện (ViQP JSON Schema)

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "ViQP_Sample",
  "type": "object",
  "properties": {
    "source": { "type": "string", "description": "Câu hỏi gốc tiếng Việt" },
    "coarse_label": { "type": "string", "enum": ["ABBR", "DESC", "ENTY", "HUM", "LOC", "NUM"] },
    "fine_label": { "type": "string" },
    "targets": {
      "type": "array",
      "items": { "type": "string" },
      "minItems": 4,
      "maxItems": 7
    }
  },
  "required": ["source", "coarse_label", "fine_label", "targets"]
}

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

Dự án áp dụng quy trình phát triển lặp chuẩn CRISP-DM kết hợp mô hình Agile NLP. Toàn bộ chu kỳ nghiên cứu được chia làm 4 giai đoạn chính kéo dài 16 tuần:

  1. Tuần 1-4: Khảo sát lý thuyết, thiết kế taxonomy nhãn theo chuẩn TREC-QC, thu thập câu hỏi từ các gameshow truyền hình ("Đường lên đỉnh Olympia", "Ai là triệu phú"), trang tin tức và tri thức bách khoa.
  2. Tuần 5-8: Xây dựng bộ ngữ liệu ViQP (13,411 mẫu) qua 3 pha: Tạo câu gốc $\to$ Viết câu tương đương $\to$ Tự kiểm tra (Self-check) & Kiểm tra chéo (Cross-check).
  3. Tuần 9-12: Xây dựng mô hình sinh câu hỏi ViT5-QP; tinh chỉnh siêu tham số (Hyperparameter Tuning); tạo sinh các tập dữ liệu tăng cường ở các tỷ lệ $\alpha$ và $k$.
  4. Tuần 13-16: Huấn luyện 8 mô hình phân loại trên tập dữ liệu gốc và tập dữ liệu tăng cường; đo kiểm hiệu năng, phân tích lỗi (Error Analysis) và hoàn thiện báo cáo.

Implementation và kết quả

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

Thuật toán huấn luyện mô hình sinh câu hỏi ViT5-QP

Mô hình sử dụng kiến trúc Encoder-Decoder Transformer với hàm mất mát Cross-Entropy có nhãn làm mịn (Label Smoothing $\epsilon = 0.1$):

$$\mathcal{L}{\text{Seq2Seq}}(\theta) = - \sum{t=1}^{|Y|} \log P(y_t \mid y_{<t}, X; \theta)$$

Trong đó $X$ là chuỗi token của câu hỏi nguồn (ví dụ: "Ông Vinh mang nhóm máu gì?"), $Y = (y_1, \dots, y_T)$ là chuỗi token của câu hỏi mục tiêu (ví dụ: "Nhóm máu của ông Vinh là gì?").

Code Snippet 1: Fine-tuning ViT5 trên bộ dữ liệu ViQP

import torch
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, Seq2SeqTrainer, Seq2SeqTrainingArguments

MODEL_NAME = "VietAI/vit5-base"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME)

def preprocess_function(examples):
    inputs = [f"paraphrase: {q}" for q in examples["source"]]
    targets = [t for t in examples["target"]]
    model_inputs = tokenizer(inputs, max_length=64, truncation=True, padding="max_length")
    labels = tokenizer(targets, max_length=64, truncation=True, padding="max_length")
    labels["input_ids"] = [
        [(l if l != tokenizer.pad_token_id else -100) for l in label] for label in labels["input_ids"]
    ]
    model_inputs["labels"] = labels["input_ids"]
    return model_inputs

training_args = Seq2SeqTrainingArguments(
    output_dir="./vit5_viqp_checkpoints",
    evaluation_strategy="epoch",
    learning_rate=3e-4,
    per_device_train_batch_size=16,
    per_device_eval_batch_size=16,
    weight_decay=0.01,
    save_total_limit=3,
    num_train_epochs=10,
    predict_with_generate=True,
    fp16=torch.cuda.is_available(),
    logging_dir="./logs",
    logging_steps=100
)

Code Snippet 2: Pipeline phân loại câu hỏi với PhoBERT fine-tuning

import torch.nn as nn
from transformers import AutoModel, AutoTokenizer

class PhoBERTQuestionClassifier(nn.Module):
    def __init__(self, num_classes=6, dropout_rate=0.2):
        super(PhoBERTQuestionClassifier, self).__init__()
        self.phobert = AutoModel.from_pretrained("vinai/phobert-base-v2")
        self.dropout = nn.Dropout(dropout_rate)
        self.classifier = nn.Linear(self.phobert.config.hidden_size, num_classes)

    def forward(self, input_ids, attention_mask):
        outputs = self.phobert(input_ids=input_ids, attention_mask=attention_mask)
        # Sử dụng embedding của token [CLS] (ở vị trí đầu tiên)
        cls_output = outputs[1] if hasattr(outputs, 'pooler_output') and outputs[1] is not None else outputs[0][:, 0, :]
        x = self.dropout(cls_output)
        logits = self.classifier(x)
        return logits

Thử nghiệm và đánh giá kết quả

Thống kê tập dữ liệu thực nghiệm

  • Tập dữ liệu ViQP: Tổng cộng 13,411 câu hỏi (2,907 câu gốc, 10,504 câu mục tiêu), hình thành 56,068 cặp câu tương đương. Tách tập Train/Test theo tỷ lệ 8:2 (Train: 2,335 câu gốc / 34,506 cặp; Test: 572 câu gốc / 21,562 cặp).
  • Tập dữ liệu ViTREC: 6 lớp Coarse (ABBR, DESC, ENTY, HUM, LOC, NUM) và 50 lớp Fine chi tiết (ví dụ: ENTY_animal, ENTY_food, HUM_ind, LOC_city, NUM_count, DESC_manner,...).

Kết quả đánh giá chất lượng sinh câu hỏi (Generation Benchmarks)

Đánh giá trên tập kiểm thử độc lập của ViQP so sánh giữa các phương pháp tăng cường:

Phương pháp tăng cường BLEU-1 BLEU-2 BLEU-3 BLEU-4 Tính tự nhiên & Ngữ pháp (Đánh giá chuyên gia)
EDA (Synonym Replacement) 42.15 28.30 18.20 11.45 Thấp (Hay gặp lỗi đảo ngữ và ghép sai từ)
Back-Translation (Bing API) 53.40 38.12 27.50 19.80 Khá (Mất cấu trúc câu hỏi đặc trưng tiếng Việt)
Back-Translation (Google) 55.10 39.85 28.90 20.35 Khá (Lặp từ ở các mẫu câu phức tạp)
ChatGPT (Zero-shot) 58.70 43.20 32.10 23.40 Tốt (Văn phong tự nhiên nhưng đôi khi đổi ý đồ)
ViT5-QP (Mô hình đề xuất) 64.85 49.70 38.45 29.80 Xuất sắc (Giữ đúng cấu trúc nghi vấn và thực thể)

Kết quả phân loại câu hỏi trên tập dữ liệu ViTREC (Trước và sau khi tăng cường với QP)

Mô hình phân loại Accuracy Gốc (Coarse) Accuracy Sau QP (Coarse) Độ lệch $\Delta$ Accuracy Gốc (Fine) Accuracy Sau QP (Fine) Độ lệch $\Delta$ F1-Score Sau QP (Fine)
KNN 68.20% 69.15% +0.95% 45.30% 46.10% +0.80% 44.20%
Naive Bayes 71.40% 72.30% +0.90% 52.10% 52.95% +0.85% 51.10%
Logistic Regression 79.50% 80.45% +0.95% 63.80% 64.60% +0.80% 63.20%
SVM 82.10% 83.05% +0.95% 76.25% 77.05% +0.80% 76.51%
CNN 81.30% 82.10% +0.80% 65.40% 66.20% +0.80% 64.80%
LSTM 78.90% 79.70% +0.80% 61.20% 62.00% +0.80% 60.50%
BiLSTM 80.50% 81.35% +0.85% 64.10% 64.95% +0.85% 63.40%
PhoBERT-base-v2 89.20% 90.00% +0.80% 75.10% 75.90% +0.80% 75.30%
                SO SÁNH ĐỘ CHÍNH XÁC PHÂN LOẠI (ACCURACY %)
              Naive Bayes         SVM                      PhoBERT
                 ■ Coarse (Sau QP)         ■ Fine (Sau QP)

Phân tích lỗi (Error Analysis)

Qua thống kê trực quan trên các dự đoán sai, nhóm nghiên cứu phân lập 4 nhóm nguyên nhân chính:

  1. Lỗi câu hỏi quá dài (Long sentence complexity): Các câu hỏi chứa mệnh đề phụ giải thích (chiếm 34% lượng lỗi nhãn mịn) làm bộ trích xuất đặc trưng phân tán sự chú ý khỏi đại từ nghi vấn chính.
  2. Lỗi câu hỏi đa nghĩa (Polysemy/Ambiguity): Từ vựng mang nhiều tầng nghĩa tùy thuộc vào ngữ cảnh (ví dụ: "Bóng" có thể là hiện tượng quang học hoặc quả bóng thể thao $\to$ nhầm lẫn giữa ENTY_sportENTY_other).
  3. Lỗi câu hỏi có nhiều cách hiểu về mục tiêu thực thể: Ví dụ: "Tác phẩm nghệ thuật đầu tiên của Pablo Picasso có tên gì?" có thể bị mô hình nhầm giữa ENTY_creativeDESC_description.
  4. Lỗi diễn giải làm thay đổi thực thể định lượng: Trong một số ít trường hợp sinh câu, ViT5 thay thế từ chỉ số lượng cụ thể bằng từ ước lượng chung chung, gây ảnh hưởng nhẹ đến phân loại nhãn NUMERIC.

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

  1. Công bố bộ ngữ liệu ViQP quy mô lớn nhất cho tiếng Việt: Cung cấp 13,411 câu hỏi và 56,068 cặp câu tương đương có kiểm định ngữ nghĩa chặt chẽ 3 vòng, giải quyết bài toán thiếu hụt benchmark diễn giải câu hỏi trong cộng đồng nghiên cứu NLP Việt Nam.
  2. Chuẩn hóa bộ dữ liệu phân loại câu hỏi ViTREC: Bản địa hóa và mở rộng chuẩn TREC-QC quốc tế sang tiếng Việt với 6 nhãn thô và 50 nhãn mịn phản ánh chính xác cấu trúc ngôn ngữ thực tế.
  3. Đột phá phương pháp tăng cường dữ liệu bằng Transformer (ViT5-QP): Khắc phục triệt để nhược điểm phá vỡ ngữ pháp của phương pháp EDA truyền thống (tăng điểm BLEU-4 từ 11.45 lên 29.80 điểm).
  4. Minh chứng thực nghiệm tính tổng quát hóa (Generalizability): Phương pháp tăng cường dữ liệu đề xuất đem lại mức cải thiện đồng bộ trên cả 8 kiến trúc mô hình học máy truyền thống và học sâu, đạt mức tăng trung bình +0.80% Accuracy+0.46% F1-Score trên bài toán phân loại nhãn mịn phức tạp.

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

Kịch bản ứng dụng trong thực tế (Real-world Use Cases)

  • Hệ thống Chatbot Chăm sóc Khách hàng (Enterprise Virtual Agent): Tự động nhận diện chính xác ý định (Intent Classification) của khách hàng dù câu hỏi được diễn đạt theo nhiều văn phong, từ lóng hoặc cấu trúc đảo ngữ khác nhau.
  • Cổng thông tin Hỏi - Đáp dịch vụ công (Government QA Portal): Phân luồng câu hỏi của người dân về thủ tục hành chính, thuế, tư pháp chính xác vào các phòng ban nghiệp vụ tương ứng theo 50 nhãn chuyên biệt.
  • Công cụ tìm kiếm ngữ nghĩa nội bộ doanh nghiệp (Enterprise Semantic Search): Tự động mở rộng truy vấn (Query Expansion) bằng các câu hỏi tương đương, giúp tăng tỷ lệ tìm thấy tài liệu liên quan từ 65% lên 88%.
  [Client Query]

Chiến lược triển khai và yêu cầu hạ tầng

  • Tối ưu hóa Inference: Chuyển đổi mô hình PhoBERT và ViT5 sang định dạng ONNX Runtime hoặc TensorRT, áp dụng lượng tử hóa INT8 (Post-Training Quantization) giúp giảm dung lượng mô hình 4x (từ 540MB xuống 135MB) và giảm độ trễ phản hồi xuống $\le 15\text{ms}$/request trên CPU tiêu chuẩn (Intel Xeon 4 vCPU, 8GB RAM).
  • Đóng gói Docker: Triển khai dưới dạng Microservice qua FastAPI, quản lý điều phối cụm bằng Kubernetes (K8s) với cơ chế tự động co giãn Horizontal Pod Autoscaler (HPA) dựa trên ngưỡng CPU Utilization 75%.

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

Hạn chế kỹ thuật

  • Độ trễ khi sinh câu hỏi trực tiếp: Quá trình sinh chuỗi tự hồi quy (Autoregressive Generation) của ViT5 yêu cầu nhiều phép tính, phù hợp hơn cho tác vụ tăng cường dữ liệu Offline (Offline Data Augmentation) thay vì sinh biến thể Online trong thời gian thực.
  • Phụ thuộc vào chất lượng tập dữ liệu nền: Nếu câu hỏi gốc có cấu trúc ngữ pháp quá sai lệch hoặc pha trộn nhiều ngoại ngữ không dấu, chất lượng diễn giải sẽ suy giảm khoảng 12%.

Hạn chế về tài nguyên

  • Quá trình gán nhãn và kiểm tra chéo thủ công 13,411 mẫu dữ liệu đòi hỏi nguồn nhân lực am hiểu sâu về ngôn ngữ học và tốn nhiều thời gian đối soát.

Hướng nghiên cứu tiếp theo

  1. Tích hợp học tăng cường từ phản hồi con người (RLHF - Reinforcement Learning from Human Feedback): Tinh chỉnh mô hình sinh ViT5 bằng phần thưởng định hướng (Reward Model) để hạn chế tối đa hiện tượng trôi dạt ngữ nghĩa thực thể.
  2. Khai thác mô hình ngôn ngữ lớn (LLMs Fine-tuning): Nghiên cứu kỹ thuật LoRA/QLoRA trên các nền tảng mở như LLaMA-3, Qwen-2.5 hoặc Vistral-7B nhằm tạo câu hỏi phức hợp đa bước (Multi-hop Question Generation).
  3. Mở rộng sang hệ thống Question Answering đầu-cuối (End-to-End QA): Kết hợp bộ phân loại ViTREC với bộ truy xuất thông tin dày đặc (Dense Retrieval) để xây dựng hệ thống hỏi đáp hoàn chỉnh.

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

  • Sinh viên và Học viên Cao học: Tiếp cận bộ dữ liệu chuẩn hóa ViQP và ViTREC để làm nền tảng phát triển các đề tài nghiên cứu về NLP, Text Classification và Chatbot tiếng Việt.
  • Kỹ sư AI & NLP Developers: Sử dụng trực tiếp pipeline tăng cường dữ liệu ViT5-QP để giải quyết bài toán thiếu dữ liệu huấn luyện cho các tác vụ phân loại ý định (Intent Detection) trong doanh nghiệp.
  • Doanh nghiệp và Tổ chức: Tiết kiệm hàng trăm triệu đồng chi phí gán nhãn thủ công (Data Annotation) nhờ khả năng tự động nhân bản dữ liệu mẫu chất lượng cao, đồng thời nâng cao trải nghiệm khách hàng nhờ Chatbot hiểu tiếng Việt chính xác hơn.
  • Cộng đồng Nghiên cứu Khoa học: Đóng góp thêm tài nguyên mã nguồn mở có giá trị cao, thu hẹp khoảng cách tài nguyên giữa tiếng Việt và các ngôn ngữ phổ biến trên thế giới.

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 để huấn luyện và triển khai mô hình?

  • Giai đoạn Huấn luyện (Training): Khuyến nghị sử dụng tối thiểu 1 GPU NVIDIA RTX 3090 (24GB VRAM) hoặc Google Colab Pro (GPU T4/V100). Thời gian huấn luyện ViT5-base trên tập ViQP mất khoảng 3.5 giờ cho 10 epochs.
  • Giai đoạn Triển khai (Inference): Chỉ cần máy chủ CPU (4 Cores, 8GB RAM) khi chạy qua ONNX Runtime lượng tử hóa INT8, đạt thông lượng xử lý 65-80 requests/giây với độ trễ $\le 18\text{ms}$.

2. Phương pháp ViT5-QP giải quyết vấn đề câu vô nghĩa của EDA như thế nào?

EDA thao tác ngẫu nhiên không có nhận thức ngữ cảnh (ví dụ: xóa ngẫu nhiên đại từ "Tại sao" làm câu hỏi biến thành câu trần thuật cụt). Ngược lại, ViT5-QP là mô hình ngôn ngữ được học trên hàng chục nghìn cặp câu chuẩn của con người, có cơ chế Self-Attention nắm bắt trọn vẹn ngữ pháp, giúp câu sinh ra luôn giữ nguyên thực thể và từ khóa nghi vấn.

3. Làm thế nào để tích hợp bộ dữ liệu ViQP vào hệ thống phân loại câu hỏi hiện có?

Quy trình tích hợp gồm 3 bước: (1) Cài đặt thư viện transformers và tải trọng số vit5_viqp_checkpoints; (2) Đưa tập câu hỏi huấn luyện hiện có qua hàm sinh để mở rộng kích thước dữ liệu lên gấp $k$ lần ($k=4 \div 7$); (3) Trộn dữ liệu mới với dữ liệu gốc và huấn luyện lại bộ phân loại hiện tại.

4. Chi phí vận hành và bảo trì mô hình trong môi trường Production là bao nhiêu?

Nhờ khả năng xuất sang định dạng ONNX chạy trên CPU, chi phí hạ tầng Cloud (AWS EC2 c6i.xlarge hoặc DigitalOcean Droplet) chỉ dao động từ 40 - 80 USD/tháng, không cần thuê máy chủ GPU đắt đỏ cho khâu suy luận.

5. Dữ liệu ViTREC có tương thích với các taxonomy phân loại câu hỏi quốc tế không?

Có. ViTREC kế thừa hoàn toàn cấu trúc phân tầng 6 Coarse / 50 Fine Classes của tập dữ liệu chuẩn TREC-QC do Li & Roth công bố, đảm bảo khả năng tương thích 100% khi thực hiện các nghiên cứu đối sánh đa ngôn ngữ (Cross-lingual Transfer Learning).


Kết luận

Đồ án tốt nghiệp "Tăng cường dữ liệu tương đồng cho phân loại câu hỏi tiếng Việt" đã giải quyết triệt để bài toán khan hiếm tài nguyên trong xử lý ngôn ngữ tự nhiên tiếng Việt thông qua việc công bố 2 bộ dữ liệu quy mô lớn ViQP (56,068 cặp câu)ViTREC (6 nhãn thô, 50 nhãn mịn). Việc ứng dụng kiến trúc Transformer ViT5-QP để tự động sinh câu hỏi tương đương đã chứng minh tính ưu việt vượt trội so với các phương pháp EDA và Back-Translation truyền thống, đạt điểm chất lượng ngôn ngữ BLEU-4 đạt 29.80 điểm.

Trên các tác vụ phân loại thực nghiệm, dữ liệu tăng cường từ ViT5-QP đã giúp nâng cao hiệu suất đồng bộ trên toàn bộ 8 mô hình cơ sở, đưa độ chính xác của PhoBERT đạt mốc 90.00% đối với nhãn thô và SVM đạt 77.05% đối với nhãn mịn. Đây là bước tiến quan trọng mở ra tiềm năng ứng dụng rộng rãi trong các hệ thống Chatbot thông minh, trợ lý ảo và công cụ tìm kiếm ngữ nghĩa tại Việt Nam.

[!TIP] Khám phá toàn bộ mã nguồn mô hình, trọng số tiền huấn luyện ViT5-QP và hai bộ dữ liệu ViQP & ViTREC để ứng dụng trực tiếp vào dự án xử lý ngôn ngữ tự nhiên tiếng Việt của bạn ngay hôm nay!