Quay lại Nghiên cứu
May 18, 2026Bộ dữ liệu11 phút đọc

Meddies PII: mô hình mở cho khử định danh y tế đa ngôn ngữ

Meddies PII là mô hình nghiên cứu mở cho khử định danh y tế đa ngôn ngữ. Mục tiêu là tách thông tin định danh khỏi dữ liệu lâm sàng trước khi dữ liệu đi qua các bước xử lý bằng AI.

Meddies Research

Clinical AI research at Meddies

Meddies PII: mô hình mở cho khử định danh y tế đa ngôn ngữ

Trong y tế, AI không cần biết bệnh nhân là ai để suy luận lâm sàng. AI cần triệu chứng, thuốc, kết quả xét nghiệm và diễn tiến điều trị.

Vấn đề là trong bệnh án, những dữ kiện đó thường nằm cạnh tên người bệnh, mã hồ sơ, số bảo hiểm, địa chỉ hay số điện thoại người nhà. Với bác sĩ, tất cả gộp lại thành một hồ sơ chăm sóc hoàn chỉnh. Với một hệ thống AI, phần định danh cần được tách ra trước khi dữ liệu đi tiếp. Bước này gọi là khử định danh.

Nếu bước này làm sai, thông tin định danh cá nhân (PII - Personally Identifiable Information) có thể lọt vào nhật ký hệ thống, tập đánh giá, tập huấn luyện, hoặc hạ tầng của một nhà cung cấp bên ngoài. Trong y tế, đó không còn là một lỗi kỹ thuật nhỏ. Đó là rủi ro pháp lý và vận hành.

Luật Bảo vệ dữ liệu cá nhân 2025 xem dữ liệu cá nhân là thông tin có thể xác định một người, và yêu cầu thay đổi hoặc xóa thông tin đó để dữ liệu không còn truy ngược về người bệnh. Một hệ thống AI y tế có thể suy luận lâm sàng rất tốt nhưng vẫn không thể đưa vào bệnh viện nếu chưa bảo vệ được thông tin định danh.

Meddies PII ra đời từ bài toán đó. Đây là một mô hình nghiên cứu mở cho khử định danh y tế đa ngôn ngữ. Chúng tôi công bố cả mô hình, dữ liệu huấn luyện và quy trình huấn luyện, để bất kỳ ai cũng kiểm tra được cách chúng tôi xử lý dữ liệu y tế.

Vì sao dữ liệu PII mở chưa đủ cho y tế

Bệnh án trong bệnh viện hiếm khi chỉ là một đoạn văn gọn gàng. Dữ liệu của cùng một người bệnh có thể nằm trong ghi chú điều dưỡng, phiếu xét nghiệm, biểu mẫu hành chính, hoặc trong các file JSON/XML do hệ thống xuất ra. Vì chứa thông tin sức khỏe được bảo vệ (PHI - Protected Health Information), những tài liệu thật như vậy gần như không thể công bố rộng rãi để cộng đồng cùng kiểm tra và đóng góp.

Các bộ dữ liệu nhận diện thực thể mở như NVIDIA Nemotron-PII hay ai4privacy/pii-masking-300k thì dễ chia sẻ hơn, nhưng thường được tạo từ văn bản Internet, đoạn chat hoặc tài liệu chung. Mô hình có thể học cách tìm tên, ngày tháng, số điện thoại hay địa chỉ trong văn bản phổ thông, nhưng ít khi phải phân biệt phần định danh với dữ kiện lâm sàng cần giữ lại. Vì vậy, khả năng nhận diện PII ở mức chung chưa đủ cho khử định danh y tế.

Ví dụ dưới đây cho thấy khác biệt đó. Bên trái là mẫu từ bộ PII tổng quát, nơi nhiệm vụ chính là tìm định danh trong văn bản hành chính. Bên phải là mẫu từ Meddies PII: một phiếu chăm sóc điều dưỡng dạng JSON, nơi định danh nằm cạnh thuốc, sinh hiệu và ghi chú theo dõi cần giữ lại sau khử định danh.

So sánh một mẫu PII tổng quát với một mẫu phiếu chăm sóc điều dưỡng được lưu ở dạng JSON từ Meddies PII. Mẫu Meddies đặt thông tin định danh cạnh thuốc, chỉ số sinh hiệu và triệu chứng cần giữ lại sau khử định danh.

Trong bệnh viện thật, dữ liệu còn rắc rối hơn: tên tiếng Việt và tên nước ngoài, địa chỉ viết tắt, số bảo hiểm y tế, mã hồ sơ bệnh án, tên khoa phòng, số điện thoại người thân, ngày sinh, ngày vào viện, chỉ số xét nghiệm và liều thuốc có thể nằm trong vài dòng viết vội giữa lúc chẩn đoán. Một mô hình khử định danh chỉ học từ dữ liệu chung chung sẽ gặp khó khăn khi phải tách đúng phần định danh khỏi phần lâm sàng cần giữ lại.

Những nghiên cứu về chuyển giao khử định danh lâm sàng đa ngôn ngữ cũng gặp cùng một vấn đề. Hệ thống học chủ yếu từ kho ngữ liệu tiếng Anh lớn thường khó giữ chất lượng khi chuyển sang bối cảnh lâm sàng trộn ngôn ngữ hoặc ít dữ liệu hơn. Với Meddies, câu hỏi thực tế hơn là làm sao tạo một nền dữ liệu đủ mở để người khác kiểm tra, nhưng vẫn tránh chạm vào hồ sơ người bệnh?

Cách chúng tôi tạo ra dữ liệu Meddies PII

Dữ liệu bệnh viện thật không thể chia sẻ rộng rãi, nên dữ liệu tổng hợp là một lựa chọn hợp lý. Nhưng trong khử định danh y tế, nhiều mẫu hơn không tự động tạo ra một tập huấn luyện tốt. Mỗi mẫu phải buộc mô hình học đúng hành vi: tìm đoạn định danh, giữ dữ kiện lâm sàng, và trả về nhãn ổn định.

Karpathy từng chỉ ra một rủi ro của dữ liệu tổng hợp sinh bằng LLM: từng mẫu riêng lẻ có thể trông hợp lý, nhưng cả tập dữ liệu lại co cụm quanh vài kiểu câu và vài kiểu bài quen thuộc. Với bài toán này, điều đó có nghĩa là mô hình thấy rất nhiều văn bản, nhưng vẫn chỉ gặp một lát cắt hẹp của bệnh án.

Nếu chỉ dùng một prompt cố định, kể cả khi tăng temperature, dữ liệu sinh ra vẫn dễ quay về cùng những khuôn quen thuộc: cùng kiểu bệnh án, cùng độ dài, cùng vài cách đặt tên, cùng vài loại mã hồ sơ. Tập dữ liệu nhìn lớn hơn, nhưng độ đa dạng thật không tăng nhiều; khi huấn luyện trên đó, mô hình dễ học theo vài khuôn mẫu lặp lại thay vì học được độ rộng của dữ liệu y tế.

Vì vậy, khi tạo Meddies PII, chúng tôi dùng phương pháp prompt linh hoạt: mỗi lượt tạo sinh dùng một đầu vào khác nhau, thay đổi ngôn ngữ, loại tài liệu, nhãn tài liệu, độ dài, định dạng, ca khó, và các quy ước như cách viết ngày tháng, địa chỉ, số điện thoại hoặc mã hồ sơ.

Mục tiêu của bộ dữ liệu cũng chính là tôn chỉ của Meddies Research.

Không để ai bị bỏ lại phía sau

Không chỉ tạo thêm dữ liệu, mà phải phủ thật rộng: nhiều ngôn ngữ, nhiều bối cảnh và nhiều dạng tài liệu, để không ngữ cảnh hay nhóm người bệnh nào bị bỏ lại phía sau.

Mẫu prompt
tạo sinh
Dữ liệu thô
lọc theo quy tắc
LLM rà soát
Dữ liệu đã lọc
đạt
Meddies PII

Các thành phần thay đổi mỗi lượt tạo sinh:

Thành phầnPhạm viMục đích
language17 ngôn ngữĐể mô hình phục vụ được nhiều ngôn ngữ và nhiều người bệnh hơn.
document_type16 nhóm khác nhauĐể mô hình quen với nhiều bối cảnh tài liệu, không bó vào một kiểu.
document_label48 giá trị khác nhauĐể nhãn sát với cách gọi của từng ngôn ngữ, không ép vào một khuôn chung.
document_length3 mức độ: SHORT, MEDIUM, LONGĐể mô hình không phụ thuộc vào một độ dài ghi chú cố định.
text_format10 kiểu định dạngĐể mô hình đọc được mọi dạng dữ liệu bệnh viện, từ văn xuôi tới ghi chú lộn xộn.
edge_case30 giá trịĐể mô hình vẫn vững khi gặp những ca hiếm và khó.
label7 nhóm thực thể: human_name, date, id_number, phone_number, email_address, address, company_nameĐể mục tiêu trích xuất ổn định dù ngôn ngữ và định dạng thay đổi.

Bảy nhãn này được chọn theo các nhóm thực thể PII/PHI trong những tài liệu tham khảo về khử định danh như hướng dẫn của Microsoft AzureHHS. Mục tiêu là bao phủ phần định danh quan trọng nhất, nhưng vẫn giữ hệ nhãn đủ gọn để ổn định khi đi qua nhiều ngôn ngữ và nhiều dạng tài liệu.

Vì đây là dữ liệu y tế, không phải dữ kiện nhạy cảm nào cũng cần loại bỏ. Những thông tin như tuổi, huyết áp, kết quả xét nghiệm hay liều thuốc đều mang ý nghĩa lâm sàng và phải được giữ lại. Nếu một mô hình khử định danh sẽ xóa creatinine 86 µmol/L hay metformin 500 mg, bản ghi sau khi xử lý mất giá trị cho hệ thống phía sau.

Bỏ sót một ngày sinh, thông tin người bệnh lọt ra ngoài. Xóa nhầm một liều thuốc, dữ kiện lâm sàng biến mất. Khử định danh không phải là xóa càng nhiều càng tốt, mà là tách đúng phần định danh và giữ nguyên phần lâm sàng.

Cách chúng tôi kiểm soát lỗi dữ liệu

Để xử lý dữ liệu, chúng tôi đặt một bước kiểm định sau khi sinh mẫu. Bước này kết hợp kiểm tra bằng quy tắc và LLM rà soát.

BướcKiểm tra gìLỗi muốn chặn
Kiểm tra bằng quy tắcKiểm tra cấu trúc mẫu, độ dài văn bản, số lượng thực thể, nhãn được phép và nội dung lặp.Mẫu sai định dạng, thiếu thực thể, nhãn lạ, văn bản quá ngắn, văn bản quá dài hoặc nội dung bị lặp bất thường.
Kiểm tra ngôn ngữKiểm tra xem văn bản có lẫn chữ viết hoặc dấu hiệu ngôn ngữ không phù hợp với cấu hình đang sinh hay không.Một mẫu được gắn là ngôn ngữ này nhưng lại chứa nhiều dấu hiệu của ngôn ngữ khác.
Kiểm tra giá trị trích xuấtMỗi giá trị được gắn nhãn phải thật sự có trong văn bản gốc, không được nằm ngoài văn bản gốc hoặc bị viết lại.Giá trị ngoài nguồn, giá trị bị sửa lại, giá trị rỗng hoặc giá trị quá dài.
Kiểm tra theo từng nhãnÁp dụng quy tắc riêng cho tên người, ngày tháng, mã định danh, số điện thoại, email, địa chỉ và tên tổ chức.Thuốc, liều dùng, xét nghiệm, sinh hiệu, tuổi, chức danh hoặc thời gian đứng một mình bị gắn nhầm thành thông tin định danh.
LLM rà soátLLM đọc văn bản gốc cùng bản nhãn nháp để giữ giá trị đúng, thêm phần bị bỏ sót và bỏ phần gắn sai.Bỏ sót thực thể, gắn sai nhãn, lặp giá trị hoặc lấy nhầm dữ kiện lâm sàng làm thông tin định danh.

Trong quy trình này, kiểm tra bằng quy tắc và LLM rà soát được dùng cho hai nhóm lỗi khác nhau. Các quy tắc xử lý những lỗi có dấu hiệu rõ ràng hơn, như sai định dạng, nhãn lạ hoặc giá trị không có trong văn bản gốc. LLM được dùng để xem lại những trường hợp cần đọc ngữ cảnh, như thiếu thực thể, gắn nhãn quá rộng hoặc bỏ sót tên tổ chức.

Vì không thể kiểm soát hết mọi ngôn ngữ, chúng tôi tin rằng dữ liệu vẫn còn có thể có nhiều lỗi. Vì vậy chúng tôi công bố toàn bộ, để mọi người có thể cùng kiểm tra.

Nếu bạn dùng và tìm thấy những ca lỗi còn sót, chúng tôi rất mong nhận được phản hồi.

Mô hình đủ nhỏ để chạy ngay trong bệnh viện

Bên cạnh dữ liệu, chúng tôi huấn luyện một mô hình trích xuất nhỏ cùng tên, dựa trên LiquidAI/LFM2-350M.

Chúng tôi chọn mô hình này vì nó chỉ có 350 triệu tham số và dùng các lớp tích chập ngắn, đủ nhẹ để chạy trên CPU và để bệnh viện tự vận hành trên phần cứng sẵn có mà không cần GPU đắt tiền.

Với kích thước đó, chúng tôi còn chạy thử được mô hình ngay trên trình duyệt. Bạn có thể dùng thử bản thử nghiệm tại đây.

Cách chúng tôi huấn luyện mô hình

Việc huấn luyện đi qua hai bước. Trước hết là tinh chỉnh có giám sát (SFT): mô hình học từ các cặp văn bản và nhãn trong bộ dữ liệu, để quen với việc đọc một tài liệu y tế và trả về đúng các đoạn định danh dưới dạng JSON.

Sau đó là một bước học tăng cường bằng GRPO (Group Relative Policy Optimization). Mô hình được thưởng khi trích xuất đúng, và bị phạt khi tạo giá trị không có trong văn bản gốc, gắn sai nhãn hay bỏ sót định danh.

Bước GRPO tập trung vào các ca khó: lời nhắc kiểu hội thoại, văn bản nhiều ngôn ngữ, và những định dạng dễ làm mô hình trượt. Mục tiêu không phải là điểm số đẹp, mà là một hành vi trích xuất ổn định hơn khi đầu vào thay đổi.

F1 thực thể

0.8380

Độ bao phủ

0.8663

Tỷ lệ giá trị ngoài nguồn

1.35%

F1 theo nhóm thực thể

0.948
phone
0.925
email
0.861
date
0.813
ID
0.795
address
0.759
name
0.328
company

F1 theo ngôn ngữ (17 ngôn ngữ)

0.859
Malay
0.854
Korean
0.850
Japanese
0.846
Chinese
0.825
Vietnamese
0.813
Filipino
0.808
Indonesian
0.785
Burmese
0.780
Portuguese
0.777
Spanish
0.774
Tamil
0.762
French
0.753
English
0.738
German
0.730
Thai
0.712
Russian
0.708
Lao

Những lỗi cần kiểm tra trước

Một điểm F1 không cho thấy mô hình sai theo kiểu nào. Trong khử định danh y tế, chính kiểu sai mới quyết định hậu quả, nên chúng tôi nhìn vào từng kiểu lỗi thay vì một con số tổng. Dưới đây là những kiểu lỗi chúng tôi theo dõi kỹ nhất.

Kiểu lỗiVí dụ hình tháiHậu quả
Bỏ sót định danhTên bệnh viện hoặc khoa phòng không được bắt thành company_name.Định danh tổ chức còn lại trong văn bản và có thể ảnh hưởng tới nhật ký kiểm tra.
Gắn nhầm dữ kiện lâm sàngBP 120/80, creatinine 86 µmol/L, hoặc 500 mg bị xem như id_number hay date.Văn bản sau khử định danh mất dữ kiện cần cho suy luận.
Ngày thángNgày vào viện hoặc ngày đo xét nghiệm bị xử lý như ngày sinh.Dòng thời gian chăm sóc bị phá hỏng.
Đầu vào không thường quyEmail viết kiểu nguyen dot an at... hoặc số điện thoại bị tách ký hiệu.Cần một tập thử riêng trước khi nói về độ bao phủ.
Rò ngôn ngữMẫu tổng hợp của một ngôn ngữ lẫn chữ hoặc cụm từ của ngôn ngữ khác.Phần dữ liệu nhìn lớn hơn chất lượng thật.
Thực thể lồng nhauTên khoa nằm trong tên bệnh viện dài hơn.Lược đồ hiện tại chưa xử lý đoạn trích chồng lấp.

Cùng một điểm F1 có thể che giấu những kiểu lỗi rất khác nhau. Trong khử định danh y tế, khác biệt giữa các kiểu lỗi mới là phần quyết định rủi ro: lỗi có làm lộ định danh hay làm mất dữ kiện lâm sàng hay không.

Phạm vi của bản phát hành

Meddies PII không phải sản phẩm xóa định danh hoàn chỉnh. Mô hình chỉ trích xuất các đoạn định danh có cấu trúc để đưa vào một quy trình khử định danh. Khi đưa vào vận hành thật, bệnh viện vẫn cần chính sách, nhật ký kiểm tra, kiểm định tại chỗ, cơ chế chuyển cho người phụ trách khi rủi ro cao, và kiểm soát triển khai.

Bản phát hành này cũng không chứng minh dữ liệu tổng hợp giống dữ liệu trong bệnh viện thực tế. Dữ liệu tổng hợp cho chúng ta tín hiệu huấn luyện có thể chia sẻ, nhưng vẫn có thể bóp méo tần suất, văn phong và các mẫu hiếm. Nếu bệnh viện của bạn dùng cách viết tắt riêng, mã bảo hiểm riêng, hoặc tên khoa phòng rất khác, hãy kiểm định trên dữ liệu của bạn trước khi tin mô hình.

Bộ bảy nhãn này là phạm vi khởi đầu, chưa phải một hệ nhãn hoàn chỉnh cho mọi yêu cầu bảo vệ thông tin riêng tư. Chúng tôi chủ động giữ hệ nhãn ở quy mô nhỏ để dễ kiểm tra và duy trì tính ổn định qua nhiều ngôn ngữ; phạm vi nhãn sẽ được mở rộng dần khi mô hình được thử nghiệm trong môi trường bệnh viện thực tế. Chúng tôi mong đây sẽ là một điểm bắt đầu tốt để các nhóm nghiên cứu có thể phát triển thêm.