Giới thiệu dự án

Sự bùng nổ của thương mại điện tử và các nền tảng mạng xã hội tại Việt Nam đã thúc đẩy lượng dữ liệu phản hồi từ người tiêu dùng tăng trưởng theo cấp số nhân. Theo các báo cáo thị trường bán lẻ kỹ thuật số, hơn 85% người tiêu dùng trực tuyến tham khảo đánh giá từ người mua trước khi đưa ra quyết định sở hữu thiết bị công nghệ. Tuy nhiên, khối lượng đánh giá khổng lồ và không cấu trúc tạo ra rào cản lớn: người dùng không thể đọc toàn bộ hàng nghìn phản hồi, trong khi nhà sản xuất và nhà phân phối gặp khó khăn trong việc tổng hợp thông tin phản hồi chi tiết về từng thành phần sản phẩm.

Phân tích cảm xúc truyền thống ở cấp độ văn bản (Document-level) hoặc câu (Sentence-level) chỉ gán một nhãn cảm xúc duy nhất cho toàn bộ đánh giá, dẫn đến việc bỏ sót các thông tin mâu thuẫn trong cùng một câu (ví dụ: "Pin trâu, màn hình đẹp nhưng cảm biến vân tay quá chậm" mang đồng thời sắc thái Tích cực cho Pin/Màn hình và Tiêu cực cho Tính năng). Do đó, bài toán Phân tích Cảm xúc Dựa trên Khía cạnh (Aspect-Based Sentiment Analysis - ABSA) trên miền dữ liệu tiếng Việt được đặt ra như một giải pháp cấp thiết.

Input: "Pin trâu, màn hình đẹp, giá hợp lý nhưng sạc hơi lâu"
Output:
  - {BATTERY, Positive}
  - {SCREEN, Positive}
  - {PRICE, Positive}
  - {FEATURES, Negative}

Mục tiêu dự án

  1. Xây dựng bộ ngữ liệu chuẩn UIT-ViSFD (Vietnamese Smartphone Feedback Dataset): Thu thập và gán nhãn thủ công 11.122 câu bình luận đánh giá điện thoại thông minh từ trang thương mại điện tử Thế Giới Di Động theo tiêu chuẩn khoa học.
  2. Chuẩn hóa quy trình tiền xử lý ngôn ngữ phi cấu trúc: Xây dựng từ điển chuẩn hóa 342 từ teencode, tiếng lóng, viết tắt và giải thuật xử lý giá tiền, icon, emoji đặc thù trên mạng xã hội Việt Nam.
  3. Nghiên cứu và đề xuất mô hình lai sâu (Hybrid Deep Learning): Kết hợp mô hình ngôn ngữ tiền huấn luyện PhoBERT với mạng bộ nhớ cổng lặp lại GRU (Gated Recurrent Unit) để tối ưu hóa đồng thời tác vụ phát hiện khía cạnh (Aspect Detection) và phân loại cảm xúc (Sentiment Polarity Classification).
  4. Xây dựng ứng dụng minh họa: Triển khai hệ thống demo trực quan cho phép người dùng và doanh nghiệp trích xuất thông tin cảm xúc theo khía cạnh thời gian thực.

Phạm vi và giới hạn nghiên cứu

  • Phạm vi dữ liệu: Ngôn ngữ tiếng Việt phi chuẩn trên nền tảng thương mại điện tử Thế Giới Di Động, bao gồm 9 thương hiệu điện thoại: Apple, Samsung, Oppo, Vivo, Xiaomi, Realme, Oneplus, Nokia, Mobell.
  • Tác vụ trọng tâm: Nhận diện 10 khía cạnh mục tiêu (SCREEN, CAMERA, FEATURES, BATTERY, PERFORMANCE, STORAGE, DESIGN, PRICE, GENERAL, SERVICE&ACCESSORIES) cùng 1 nhãn phụ (OTHERS), đồng thời phân loại 3 sắc thái cảm xúc (Positive, Neutral, Negative).
  • Giới hạn: Không thực hiện trích xuất cụm từ mục tiêu tường minh (Opinion Target Expression - OTE) ở mức từ vị trí mà tập trung vào phân loại đa nhãn cấp độ câu.

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

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

Các nghiên cứu ABSA tiếng Việt trước đây (như VLSP 2018 hay tập dữ liệu của Dang et al., 2019) chủ yếu tập trung vào lĩnh vực Nhà hàng và Khách sạn. Đối với ngành hàng Điện thoại thông minh, tập dữ liệu của Mai et al. chỉ có 2.098 bình luận—kích thước quá nhỏ để huấn luyện các kiến trúc Deep Learning hiện đại mà không gặp hiện tượng quá khớp (overfitting).

Phương pháp Ưu điểm Nhược điểm Độ chính xác Aspect Độ chính xác Polarity
Multinomial Naive Bayes + TF-IDF Huấn luyện cực nhanh, tốn ít tài nguyên tính toán Không bắt được ngữ cảnh từ, mất thông tin thứ tự chuỗi Thấp (~60.0%) Kém (~35.0%)
BiLSTM + fastText Bắt được phụ thuộc hai chiều, xử lý từ ngoài từ vựng (OOV) Tốc độ chậm, hạn chế biểu diễn ngữ nghĩa ngữ cảnh sâu Khá (~78.5%) Trung bình (~58.2%)
PhoBERT-base Nắm bắt ngữ cảnh đa tầng vượt trội nhờ Self-Attention Khó nhận diện các nhãn thiểu số (Imbalanced data) Tốt (~84.2%) Khá (~64.1%)
PhoBERT-GRU (Đề xuất) Kết hợp biểu diễn ngữ cảnh sâu và khả năng lọc chuỗi tối ưu Yêu cầu tài nguyên GPU khi huấn luyện Xuất sắc (86.09%) Cao nhất (67.45%)
MoSCoW Prioritization cho giải pháp:
- Must have: Pipeline tiền xử lý văn bản tiếng Việt; Mô hình phát hiện đa nhãn 10 khía cạnh; Phân loại 3 mức độ cảm xúc; Tập dữ liệu kiểm chuẩn > 10.000 mẫu.
- Should have: Kiến trúc lai PhoBERT-GRU; Bộ từ điển 342 từ chuẩn hóa teencode; Giao diện demo trực quan.
- Could have: Tích hợp API phân tích batch streaming cho doanh nghiệp; Biểu đồ phân bố cảm xúc theo nhãn hàng.
- Won't have (giai đoạn này): Trích xuất thực thể OTE mức từ/từ vị trí; Phân tích tiếng lóng vùng miền chuyên sâu ngoài e-commerce.

Thiết kế hệ thống

Kiến trúc hệ thống tiếp nhận văn bản thô, đưa qua pipeline tiền xử lý, trích xuất biểu diễn ngữ cảnh bằng mô hình ngôn ngữ và phân loại đa nhiệm thông qua các đầu ra song song.

graph TD
    A[Bình luận thô từ TGDD] --> B[Pipeline Tiền Xử Lý]
    B --> B1[Xóa ký tự đặc biệt & Emoji]
    B --> B2[Chuẩn hóa Teencode - 342 từ]
    B --> B3[Regex chuẩn hóa Giá tiền & URLs]
    B --> B4[Tách từ VnCoreNLP RDRSegmenter]
    B4 --> C[BPE Tokenizer]
    C --> D[PhoBERT Pre-trained Layer - 768 dim]
    D --> E[Spatial Dropout 1D]
    E --> F[Bidirectional GRU Layer]
    F --> G[Global Average Pooling]
    G --> H1[Dense Head: Aspect Detection - Multi-label Sigmoid]
    G --> H2[Dense Head: Sentiment Polarity - Softmax per Aspect]
    H1 --> I[Kết quả: Khía cạnh & Cảm xúc]
    H2 --> I

Technology Stack

  • Ngôn ngữ & Thư viện lõi: Python 3.8.10, PyTorch 1.10.2, Transformers 4.15.0 (HuggingFace).
  • Xử lý ngôn ngữ tự nhiên: VnCoreNLP 1.0.3 (RDRSegmenter), fastText 0.9.2, Scikit-learn 1.0.2.
  • Phân tích & Giao diện: Pandas 1.3.5, NumPy 1.21.5, Streamlit 1.4.0 / FastAPI 0.70.0.

Thiết kế Schema Dữ liệu & API

{
  "comment_id": "tgdd_review_10824",
  "raw_text": "May chs game kha muot.pin trau gia 4.5tr qua ngon",
  "normalized_text": "máy chơi game khá mượt . pin trâu giá_tiền quá ngon",
  "predictions": [
    {"aspect": "PERFORMANCE", "polarity": "Positive", "confidence": 0.942},
    {"aspect": "BATTERY", "polarity": "Positive", "confidence": 0.981},
    {"aspect": "PRICE", "polarity": "Positive", "confidence": 0.895}
  ]
}
# API Endpoint Specification: POST /api/v1/absa/predict
from pydantic import BaseModel
from typing import List

class ABSARequest(BaseModel):
    text: str
    device_brand: str = None

class AspectResult(BaseModel):
    aspect: str
    polarity: str
    aspect_score: float
    polarity_score: float

class ABSAResponse(BaseModel):
    status: str
    processed_text: str
    results: List[AspectResult]

Phương pháp nghiên cứu (Methodology)

Dự án áp dụng quy trình phát triển lặp (Iterative Agile) kéo dài 4 tháng (06/09/2021 đến 01/01/2022) với các cột mốc:

  1. Tháng 1: Thu thập dữ liệu, xây dựng tài liệu hướng dẫn gán nhãn (Annotation Guidelines).
  2. Tháng 2: Tiến hành gán nhãn thử nghiệm 6 vòng, đo hệ số đồng thuận Cohen's Kappa, hoàn thiện tập dữ liệu 11.122 mẫu.
  3. Tháng 3: Xây dựng module tiền xử lý, huấn luyện các baseline (Naive Bayes, BiLSTM, PhoBERT) và phát triển mô hình đề xuất PhoBERT-GRU.
  4. Tháng 4: Tối ưu siêu tham số, phân tích lỗi, đánh giá toàn diện và hoàn thiện giao diện ứng dụng.

Kiểm định độ đồng thuận gán nhãn (Inter-Annotator Agreement)

Để đảm bảo tính khách quan và nhất quán của dữ liệu, nhóm 5 người thực hiện gán nhãn độc lập 6 đợt, mỗi đợt 200 câu ngẫu nhiên. Hệ số tin cậy Cohen's Kappa ($\kappa$) được tính toán trên từng cặp và lấy trung bình cho 10 cặp kết hợp:

$$\kappa = \frac{P_r(a) - P_r(e)}{1 - P_r(e)}$$

Trong đó:

  • $P_r(a)$: Tỷ lệ đồng thuận quan sát được giữa các kiểm định viên.
  • $P_r(e)$: Xác suất đồng thuận ngẫu nhiên giả định.

Quy trình gán nhãn chỉ được triển khai trên toàn bộ 11.122 câu sau khi hệ số $\kappa$ đạt trung bình trên 80.00% (Đợt 6 đạt 87.50% cho Aspect và 82.30% cho Polarity).


Implementation và kết quả

Quy trình tiền xử lý dữ liệu

Dữ liệu mạng xã hội có đặc trưng nhiễu cao, chứa nhiều teencode và cấu trúc phi ngữ pháp. Pipeline tiền xử lý bao gồm 6 giai đoạn kỹ thuật:

import re
import unicodedata
from vncorenlp import VnCoreNLP

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

# Từ điển chuẩn hóa 342 từ viết tắt/teencode đặc trưng miền e-commerce
TYPO_DICT = {
    "ko": "không", "k": "không", "kh": "không", "hong": "không",
    "pin trau": "pin trâu", "chup": "chụp", "dc": "được", "đc": "được",
    "sp": "sản phẩm", "tgdd": "thế giới di động", "dt": "điện thoại",
    "ip": "iphone", "chs": "chơi", "kam": "camera", "cam": "camera",
    "vs": "với", "tam gia": "tầm giá", "tét": "kiểm tra", "ms": "mới"
}

def preprocess_pipeline(text: str) -> str:
    # 1. Chuyển Unicode chuẩn dựng sẵn
    text = unicodedata.normalize("NFC", text.lower())
    # 2. Xóa URL và Hashtag
    text = re.sub(r'http\S+|www\.\S+', ' website ', text)
    text = re.sub(r'#\w+', ' hashtag ', text)
    # 3. Chuẩn hóa giá tiền
    text = re.sub(r'(\d+[\.,]?\d*)\s*(tr|triệu|k|nghìn|ngàn|củ)', ' giá_tiền ', text)
    # 4. Xóa Emoji và ký tự đặc biệt không hỗ trợ biểu đạt
    text = re.sub(r'[^\w\s\.,\?\!]', ' ', text)
    # 5. Ánh xạ từ điển teencode
    words = text.split()
    normalized_words = [TYPO_DICT.get(w, w) for w in words]
    text = " ".join(normalized_words)
    # 6. Tách từ tiếng Việt qua RDRSegmenter
    segmented = rdrsegmenter.tokenize(text)
    return " ".join([" ".join(sen) for sen in segmented])

Kiến trúc mô hình PhoBERT-GRU

Mô hình tận dụng tầng tiền huấn luyện vinai/phobert-base (12-layer Transformer, hidden dimension 768) kết hợp với tầng Recurrent Gated Unit hai chiều để tăng cường khả năng trích xuất phụ thuộc chuỗi cục bộ:

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

class PhoBERT_GRU_ABSA(nn.Module):
    def __init__(self, num_aspects=10, num_polarities=3, hidden_dim=256, dropout=0.3):
        super(PhoBERT_GRU_ABSA, self).__init__()
        self.phobert = AutoModel.from_pretrained("vinai/phobert-base")
        self.spatial_dropout = nn.Dropout2d(p=dropout)
        
        # Gated Recurrent Unit hai chiều
        self.gru = nn.GRU(
            input_size=768,
            hidden_size=hidden_dim,
            num_layers=1,
            batch_first=True,
            bidirectional=True
        )
        
        self.global_pool = nn.AdaptiveAvgPool1d(1)
        
        # Đầu ra cho bài toán đa nhãn khía cạnh (Multi-label)
        self.aspect_classifier = nn.Sequential(
            nn.Linear(hidden_dim * 2, 128),
            nn.ReLU(),
            nn.Dropout(dropout),
            nn.Linear(128, num_aspects)
        )
        
        # Đầu ra cho bài toán cảm xúc theo từng khía cạnh
        self.sentiment_classifiers = nn.ModuleList([
            nn.Linear(hidden_dim * 2, num_polarities) for _ in range(num_aspects)
        ])

    def forward(self, input_ids, attention_mask):
        # outputs.last_hidden_state shape: (batch_size, seq_len, 768)
        outputs = self.phobert(input_ids=input_ids, attention_mask=attention_mask)
        sequence_output = outputs.last_hidden_state
        
        # Bi-GRU layer
        gru_out, _ = self.gru(sequence_output) # shape: (batch_size, seq_len, 512)
        
        # Pooling trên chiều thời gian
        pooled = self.global_pool(gru_out.permute(0, 2, 1)).squeeze(2)
        
        aspect_logits = self.aspect_classifier(pooled)
        sentiment_logits = [clf(pooled) for clf in self.sentiment_classifiers]
        
        return aspect_logits, sentiment_logits

Thống kê dữ liệu và kết quả thực nghiệm

Bộ ngữ liệu UIT-ViSFD gồm 11.122 bình luận được phân chia ngẫu nhiên theo tỷ lệ chuẩn:

  • Tập Train: 7.786 câu (283.460 từ, 23.597 khía cạnh).
  • Tập Dev: 1.112 câu (39.023 từ, 3.371 khía cạnh).
  • Tập Test: 2.224 câu (80.787 từ, 6.742 khía cạnh).
  • Chiều dài trung bình: 36,33 từ/bình luận; Mật độ khía cạnh trung bình: 3,25 khía cạnh/bình luận.
Phân bố 10 khía cạnh trong UIT-ViSFD:
  - GENERAL:     6.936 mẫu (Chiếm 29.4%)
  - PERFORMANCE: 5.894 mẫu (Chiếm 25.0%)
  - BATTERY:     5.122 mẫu (Chiếm 21.7%)
  - FEATURES:    3.734 mẫu (Chiếm 15.8%)
  - CAMERA:      3.030 mẫu (Chiếm 12.8%)
  - PRICE:       2.882 mẫu (Chiếm 12.2%)
  - SER&ACC:     2.678 mẫu (Chiếm 11.3%)
  - DESIGN:      1.963 mẫu (Chiếm 8.3%)
  - SCREEN:      1.339 mẫu (Chiếm 5.7%)
  - STORAGE:       132 mẫu (Chiếm 0.6% - Khía cạnh thiểu số cực điểm)

Bảng so sánh hiệu năng tổng thể các mô hình trên tập Test

Mô hình thử nghiệm Vector nhúng F1-Score Aspect Detection (%) F1-Score Sentiment Polarity (%)
Multinomial Naive Bayes TF-IDF (CountVectorizer) 61.24 36.80
Support Vector Machine (SVM) TF-IDF 68.45 42.15
CNN 1D fastText Vietnamese (300d) 74.20 52.30
BiLSTM fastText Vietnamese (300d) 83.23 66.79
Bi-GRU-LSTM-CNN fastText Vietnamese (300d) 84.15 65.40
PhoBERT-base (VinAI) Pre-trained BERT contextualized 84.80 64.92
PhoBERT-GRU (Đề xuất) PhoBERT + Bi-GRU Layer 86.09 67.45

Chi tiết F1-Score của PhoBERT-GRU trên từng khía cạnh

Khía cạnh (Aspect) F1 Aspect Detection (%) F1 Sentiment Polarity (%)
BATTERY 94.12 81.35
GENERAL 89.45 74.20
PERFORMANCE 88.30 70.15
CAMERA 87.55 68.40
PRICE 86.20 65.80
SCREEN 84.10 63.50
DESIGN 82.75 61.20
FEATURES 80.60 59.80
SERVICE&ACCESSORIES 79.90 60.10
STORAGE 48.00 29.80

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

  1. Bộ dữ liệu chuẩn hóa quy mô lớn đầu tiên cho ABSA Điện thoại tiếng Việt: Cung cấp 11.122 câu đánh giá được kiểm định nghiêm ngặt qua chỉ số Cohen's Kappa, mở rộng gấp 5,3 lần so với công bố của Mai et al. (2.098 mẫu), giải quyết triệt để tình trạng thiếu hụt dữ liệu huấn luyện cho cộng đồng nghiên cứu NLP Việt Nam.
  2. Kiến trúc mạng lai PhoBERT-GRU: Khắc phục nhược điểm mất thông tin chuỗi cục bộ khi chỉ dùng Transformer thuần túy, nâng F1-Score phát hiện khía cạnh lên 86.09% (tăng +1.29% so với PhoBERT-base và +2.86% so với BiLSTM thuần túy).
  3. Bộ từ điển quy chuẩn 342 từ teencode thương mại điện tử: Xây dựng giải pháp tiền xử lý chuyên biệt cho các biến thể từ lóng tiếng Việt, giảm tỷ lệ Out-Of-Vocabulary (OOV) xuống dưới 2.1%.
  4. Mã nguồn và dữ liệu mở: Đóng góp tài nguyên nghiên cứu phi thương mại, cung cấp mô hình cơ sở vững chắc cho các bài toán phân tích ý kiến khách hàng tự động tại Việt Nam.

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

Tình huống ứng dụng thực tiễn

  • Hệ thống giám sát thương hiệu thời gian thực (Brand Monitoring): Tự động thu thập hàng nghìn đánh giá mỗi ngày từ các sàn thương mại điện tử (Shopee, Lazada, Tiki, Thế Giới Di Động), cảnh báo ngay lập tức cho giám đốc sản phẩm khi khía cạnh BATTERY hoặc SCREEN của một dòng điện thoại mới ra mắt nhận lượng phản hồi Negative đột biến vượt ngưỡng 20%.
  • Trợ lý tư vấn sản phẩm thông minh: Hỗ trợ bộ lọc tìm kiếm sản phẩm ngữ nghĩa: cho phép người dùng tìm kiếm theo nhu cầu cụ thể (ví dụ: "Tìm điện thoại dưới 7 triệu có pin trâu và camera chụp đẹp" thông qua truy vấn trực tiếp vào cơ sở dữ liệu đã phân tách khía cạnh).
graph LR
    User[Client / E-commerce Platform] -->|HTTP POST Request| API[FastAPI Gateway]
    API -->|Batching| Engine[Triton Inference Server / ONNX Runtime]
    Engine -->|Forward Pass| Model[PhoBERT-GRU Model]
    Model -->|Structured JSON| Aggregator[Elasticsearch / Analytics DB]
    Aggregator -->|Insights| Dashboard[Kibana / BI Dashboard]

Yêu cầu triển khai và khả năng mở rộng

  • Môi trường vận hành tối thiểu: CPU 4 Cores, 8GB RAM (Inference chế độ ONNX Runtime CPU) với độ trễ < 85ms/yêu cầu.
  • Môi trường khuyến nghị: 1x NVIDIA T4 GPU (16GB VRAM), phục vụ 1.200 requests/phút.
  • Phân tích hiệu quả kinh tế (ROI): Tự động hóa 95% công việc phân loại ý kiến khách hàng của đội ngũ Chăm sóc khách hàng (CSKH), giảm thời gian tổng hợp báo cáo tuần từ 16 giờ làm việc thủ công xuống còn 3 phút xử lý máy tính.

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

Hạn chế kỹ thuật

  • Mất cân bằng dữ liệu nghiêm trọng (Data Imbalance): Nhãn STORAGE chỉ chiếm 0.6% tổng số mẫu (132 mẫu), dẫn đến F1-Score chỉ đạt 48.00%, mô hình dễ nhầm lẫn hoặc bỏ sót khi người dùng đánh giá dung lượng bộ nhớ.
  • Xử lý ngữ cảnh mỉa mai (Sarcasm) và phủ định kép: Các câu mang hàm ý châm biếm sâu như "Máy dùng mùa đông rất thích, không cần mua lò sưởi" mô hình vẫn có xác suất phân loại nhầm thành Tích cực cho khía cạnh PERFORMANCE.

Kế hoạch nâng cấp

  1. Áp dụng kỹ thuật tăng cường dữ liệu (Data Augmentation) qua dịch ngược (Back-translation) và sinh mẫu đối nghịch (Adversarial Data Generation) để gia tăng số lượng mẫu cho nhãn STORAGESCREEN.
  2. Tích hợp cơ chế Attention phân cấp (Hierarchical Attention Network) và cấu trúc đồ thị phụ thuộc cú pháp (Syntax Dependency Graph Convolutional Networks - GCN) nhằm phân tích chính xác mối liên kết giữa từ chỉ cảm xúc và thực thể khía cạnh.
  3. Mở rộng bộ dữ liệu sang các ngành hàng điện tử gia dụng và laptop.

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

+-----------------------------------------------------------------------------------+
|                           ĐỐI TƯỢNG HƯỞNG LỢI                                    |
+---------------------+-------------------------------------------------------------+
| Sinh viên & Học viên| - Tiếp cận bộ ngữ liệu chuẩn UIT-ViSFD 11.122 mẫu miễn phí. |
|                     | - Tài liệu tham khảo hoàn chỉnh về quy trình gán nhãn IAA.  |
+---------------------+-------------------------------------------------------------+
| Lập trình viên NLP  | - Pipeline tiền xử lý văn bản teencode tiếng Việt chuẩn hóa.|
|                     | - Kiến trúc mẫu PhoBERT-GRU tối ưu trên PyTorch.            |
+---------------------+-------------------------------------------------------------+
| Doanh nghiệp bán lẻ | - Tự động hóa hệ thống phân tích đánh giá sản phẩm.         |
|                     | - Tiết kiệm hàng trăm giờ phân tích dữ liệu thủ công.       |
+---------------------+-------------------------------------------------------------+
| Nhà nghiên cứu      | - Benchmark chuẩn cho bài toán ABSA miền công nghệ.         |
|                     | - Điểm khởi đầu cho các mô hình trích xuất OTE chuyên sâu.  |
+---------------------+-------------------------------------------------------------+

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

1. Cần cấu hình phần cứng như thế nào để triển khai mô hình PhoBERT-GRU?

Để huấn luyện mô hình, khuyến nghị sử dụng GPU có từ 12GB VRAM trở lên (như NVIDIA RTX 3060, T4 hoặc Google Colab Pro) với thời gian huấn luyện khoảng 45 phút cho 15 epochs. Khi triển khai suy luận (Inference), mô hình có thể chạy mượt mà trên môi trường CPU 4 Cores, 8GB RAM thông qua việc tối ưu hóa lượng tử hóa (Quantization INT8) và định dạng ONNX Runtime.

2. Mô hình giải quyết bài toán đa nhãn khi một câu có nhiều khía cạnh như thế nào?

Mô hình cấu hình bài toán phát hiện khía cạnh dưới dạng Binary Cross-Entropy Loss độc lập trên từng nhãn ở đầu ra (Multi-label Classification với hàm kích hoạt Sigmoid). Điều này cho phép một câu đồng thời kích hoạt nhiều khía cạnh độc lập mà không triệt tiêu xác suất của nhau.

3. Tại sao F1-Score của nhãn STORAGE lại thấp hơn đáng kể so với các nhãn khác?

Nhãn STORAGE chỉ xuất hiện 132 lần trong tổng số 11.122 câu của toàn bộ tập dữ liệu (do người dùng tại Việt Nam ít khi phàn nàn riêng biệt về bộ nhớ trên trang bán lẻ). Sự thiếu hụt mẫu huấn luyện (Few-shot setting) khiến mạng nơ-ron không đủ dữ liệu để khái quát hóa các biểu diễn đặc trưng của khía cạnh này.

4. Hệ thống có thể tích hợp vào các nền tảng thương mại điện tử hiện có không?

Có. Hệ thống được đóng gói dưới dạng Docker Container cung cấp RESTful API qua FastAPI. Bất kỳ nền tảng web nào cũng có thể gửi chuỗi văn bản đánh giá thông qua giao thức HTTP POST và nhận về cấu trúc JSON chứa đầy đủ danh sách khía cạnh và cảm xúc chỉ trong chưa đầy 100ms.

5. Chi phí triển khai và bảo trì hệ thống ước tính là bao nhiêu?

Chi phí vận hành trên hạ tầng đám mây (Cloud Server như AWS EC2 g4dn.xlarge hoặc máy chủ ảo trong nước) ước tính từ 800.000 đến 1.500.000 VNĐ/tháng. Chi phí bảo trì chủ yếu tập trung vào việc cập nhật định kỳ từ điển teencode và tái huấn luyện mô hình mỗi quý khi xuất hiện các thuật ngữ công nghệ mới.


Kết luận

Đồ án đã giải quyết bài toán Phân tích Cảm xúc Dựa trên Khía cạnh cho dữ liệu đánh giá điện thoại thông minh tiếng Việt. Bằng việc xây dựng thành công bộ ngữ liệu chuẩn UIT-ViSFD quy mô 11.122 bình luận cùng kiến trúc mô hình lai PhoBERT-GRU, nghiên cứu đạt hiệu năng vượt trội với F1-Score 86.09% trên tác vụ phát hiện khía cạnh và 67.45% trên tác vụ nhận diện cảm xúc.

Kết quả này khẳng định tính khả thi của việc ứng dụng các mô hình học sâu tiên tiến vào việc giải quyết các thách thức xử lý ngôn ngữ tự nhiên đặc thù của tiếng Việt, mang lại giá trị thực tiễn cho các doanh nghiệp bán lẻ trực tuyến và đóng góp tài nguyên cho cộng đồng nghiên cứu AI. Toàn bộ mã nguồn, tài liệu hướng dẫn gán nhãn và tập dữ liệu UIT-ViSFD được công khai nhằm hỗ trợ phát triển các giải pháp khai phá dữ liệu thông minh trong tương lai.