1. Đề thi & Phân tích

Bài 2 — Ontological Reasoning in Medical Knowledge Retrieval
Lĩnh vực: Xử lý ngôn ngữ tự nhiên (NLP)


📝 Tổng quan

Xây dựng hệ thống AI xử lý văn bản y khoa phi cấu trúc (ghi chú bác sĩ, giấy xuất viện, kết quả xét nghiệm, hồ sơ EHR) để phát hiện và chuẩn hóa các khái niệm y tế, kết hợp NLP/LLM/Agents.

Nhiệm vụ chính

  1. Xác định & chuẩn hóa khái niệm y tế
  2. Suy luận ontology (Ontological Reasoning)

Hệ thống được cung cấp

  • ICD-10 — chuẩn mã bệnh
  • RxNorm — chuẩn mã thuốc

📥 Input

  • Free-form clinical text (đoạn văn bản y khoa tự do)
  • Có thể là: kết quả khám lâm sàng, giấy xuất viện, ghi chú bác sĩ, chẩn đoán hình ảnh, xét nghiệm, EHR

Ví dụ:

Bệnh nhân nam 70 tuổi bị bệnh 1 tuần nay, ho đờm xanh, tức ngực, 
đau thượng vị, ợ hơi, được chẩn đoán mắc bệnh trào ngược dạ dày - 
thực quản. Bệnh nhân có tiền sử sử dụng Chlorpheniramine 0.4 MG/ML, 
Capsaicin 0.38 MG/ML, đã tiến hành tổng phân tích tế bào máu bằng 
máy lazer (tbm): WBC:14,43; NEUT%:76,4; LYPH%:12,8;

📤 Output

Danh sách các khái niệm y tế — JSON format:

{
  "text": "tên khái niệm",
  "position": [start, end],
  "type": "CHẨN_ĐOÁN",
  "candidates": ["K21.0", "K21.9"],
  "assertions": []
}

Types (loại khái niệm)

TypeÝ nghĩaMapping
TRIỆU_CHỨNGTên triệu chứng
TÊN_XÉT_NGHIỆMTên xét nghiệm
KẾT_QUẢ_XÉT_NGHIỆMKết quả + giá trị + đơn vị
CHẨN_ĐOÁNTên chẩn đoán/bệnhICD-10
THUỐCTên thuốc điều trịRxNorm

Assertions

Giá trịÝ nghĩaVí dụ
isNegatedBị phủ định”không ho”
isFamilyNgười nhà”bố bệnh nhân xuất hiện đau bụng”
isHistoricalTiền sử”có tiền sử hen suyễn”

Lưu ý: Assertions chỉ áp dụng cho CHẨN_ĐOÁN, THUỐC, TRIỆU_CHỨNG

Candidates

Chỉ áp dụng cho CHẨN_ĐOÁN (ICD-10) và THUỐC (RxNorm)


📦 Dataset

  • Test set: 100 bản ghi
  • Format:
    test/
    └── input/
        ├── 1.txt
        ├── 2.txt
        └── ... 100.txt
    
  • Output: 100 file .json tương ứng
  • Không có train set! Phải tự sinh dữ liệu
  • Dữ liệu đã được khử nhận dạng (synthetic patient info)

⚠️ Constraints & Lưu ý quan trọng

  • Phase 1 không có GPU — model phải chạy CPU
  • LLM phải ≤ 9B tham số (model có tên “9B” nhưng 9.7B thực tế → không hợp lệ!)
  • 🚫 KHÔNG được dùng API ngoài (GPT/Claude/DeepSeek/Gemini…) — chỉ self-host model
  • Cần tự sinh thêm dữ liệu huấn luyện (không có train set từ BTC)

📏 Metric đánh giá (chính thức từ BTC)

1. Word Error Rate (WER) — trên trường text

WER(i) = (S + D + I) / (len(ground_truth) + 1)
  • Tính cho từng sample i
  • So sánh text dự đoán vs ground truth

2. Jaccard Similarity — trên trường assertions

J_assertion(i) = |ground_truth ∩ prediction| / |ground_truth ∪ prediction|
  • Với assertion: isNegated, isFamily, isHistorical
  • Chỉ áp dụng cho CHẨN_ĐOÁN, THUỐC, TRIỆU_CHỨNG

3. Jaccard Similarity — trên trường candidates

J_candidates(i,k) = |gt_k ∩ pred_k| / |gt_k ∪ pred_k|
  • Tính cho từng candidate k trong sample i
  • Chỉ áp dụng cho CHẨN_ĐOÁN (ICD-10) và THUỐC (RxNorm)

Final score

score = WER * α + J_assertion * β + J_candidates * γ

⚠️ Chờ BTC công bố trọng số α, β, γ chính thức

⚡ Lưu ý khi submit

  • Đoán đúng text nhưng sai type → bị tính 2 lần (cả 0 điểm cho cả 3 metric)
  • Giới hạn nộp: 5 lần/ngày
  • Timeout: 600 giây/lần nộp
  • Top ~15 đội cuối Phase 1 phải gửi source code + model weights + data + README
  • Nếu BTC không cài được code → đội bị loại sau 1 khoảng thời gian hỗ trợ