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
- Xác định & chuẩn hóa khái niệm y tế
- 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ĩa | Mapping |
|---|---|---|
TRIỆU_CHỨNG | Tên triệu chứng | — |
TÊN_XÉT_NGHIỆM | Tên xét nghiệm | — |
KẾT_QUẢ_XÉT_NGHIỆM | Kết quả + giá trị + đơn vị | — |
CHẨN_ĐOÁN | Tên chẩn đoán/bệnh | ICD-10 |
THUỐC | Tên thuốc điều trị | RxNorm |
Assertions
| Giá trị | Ý nghĩa | Ví dụ |
|---|---|---|
isNegated | Bị phủ định | ”không ho” |
isFamily | Người nhà | ”bố bệnh nhân xuất hiện đau bụng” |
isHistorical | Tiề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
.jsontươ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
ktrong samplei - 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ợ