NHIỆM VỤ VÀ NỘI DUNG: Nghiên cứu và hiện thực hệ thống rút trích quan hệ thời gian trên bệnh án điện tử tiếng Anh, và sau đó xây dựng hệ thống tương tự để rút trích quan hệ thời gian tr
GIỚI THIỆU
Tổng quan
Ngày nay, công nghệ thông tin được ứng dụng rộng rãi trong cuộc sống của con người Trong đó lĩnh vực y tế cũng đang sử dụng nhiều phần mềm để quản lý cũng như lưu trữ thông tin bệnh án Với lượng thông tin lớn và tốc độ tăng trưởng nhanh, bệnh án điện tử trở thành nguồn thông tin quan trọng để thực hiện các nghiên cứu y khoa Do đó, bệnh án điện tử là chủ đề đang được nhiều tổ chức quan tâm nghiên cứu
Hiện tại việc lưu trữ thông tin của bệnh nhân trên bệnh án điện tử được thực hiện tại hầu hết các bệnh viện trên thế giới Qua mỗi năm, dữ liệu của bệnh án có tốc độ tăng ngày càng nhanh Từ đây, trên thế giới đã có nhiều công trình nghiên cứu thực hiện dựa trên bệnh án điện tử Ví dụ hệ thống dự đoán bệnh của Wu J, et al [26], phát hiện bệnh của Liao KP, et al[13], và Xu H, et al[27], phát hiện tác dụng phụ của thuốc Zhang R, et al [30], hay biểu diễn các mối quan hệ giữa các căn bệnh với nhau Holmes AB, et al [7]…
Thông tin trong bệnh án gồm hai dạng lưu trữ: có cấu trúc và không có cấu trúc Dạng lưu trữ có cấu trúc biểu diễn thông tin có hệ thống tổ chức chặt chẽ hoặc được mã hóa nên rất dễ khai thác, có thể sử dụng trực tiếp hoặc thông qua bước xử lý đơn giản Dạng lưu trữ không có cấu trúc khó khai thác hơn vì nó là dạng văn bản viết theo kiểu tường thuật Nó có thể là các ghi chú của bác sĩ hay y tá, do đó nó chứa những thông tin mà dạng lưu trữ có cấu trúc không lưu trữ được
Các công trình nghiên cứu trên có thể sử dụng thông tin có hoặc không có cấu trúc, hay thậm chí sử dụng cả hai Ví dụ Wu J, et al [26] chỉ sử dụng thông tin có cấu trúc Đó là các chỉ số về thời gian như ngày nhập viện, hoặc thời gian thực hiện xét nghiệm Hoặc tên những căn bệnh mà bệnh nhân đã mắc phải nhưng được biểu diễn mã hóa theo chuẩn ICD-9
Công trình của Zhang R, et al [30] rút trích các thông tin về tác dụng phụ của thuốc Zhang R chủ yếu lấy thông tin trong các văn bản báo cáo quá trình sử dụng thuốc Mỗi thuốc sau khi sử dụng một thời gian sẽ được theo dõi những triệu chứng xuất hiện Tập hợp thông tin từ nhiều văn bản khác nhau sẽ giúp phát hiện những tác dụng phụ mới Kết quả này giúp bổ sung thêm thông tin của thuốc đã sử dụng hoặc gợi ý tưởng cho các công trình nghiên cứu mới về thuốc
Phức tạp hơn, Xu H, et al[27] sử dụng cả hai loại thông tin có cấu trúc và không có cấu trúc để làm nghiên cứu Để phát hiện bệnh ung thư đại trực tràng, Xu H sử dụng các thông tin mã hóa dạng ICD-9 Các mã này sẽ cung cấp thông tin về các dấu hiệu mà bệnh nhân có khả năng bị ung thư đại trực tràng Ngoài ra các báo cáo xét nghiệm cũng như các bệnh án trong quá khứ của bệnh nhân bổ sung thêm thông tin về tình trạng của bệnh nhân
Các thông tin từ văn bản luôn đa dạng hơn so với các thông tin đã mã hóa
Người viết sử dụng số lượng từ vựng phong phú hơn, cung cấp nhiều thông tin hơn Đó có thể là cách viết tắt tên triệu chứng, hay là những lời giải thích lý do dẫn đến việc nhập viện,… Những thông tin này sau đó sẽ được sử dụng bổ sung thêm vào tập dữ liệu của thông tin mã hóa
Hiện nay trong bệnh viện có nhiều loại văn bản khác nhau: kết quả xét nghiệm, phim chụp X-quang, hay báo cáo tổng hợp khi ra viện,… Tất nhiên các chỉ số xét nghiệm đã được mã hóa và lưu trữ theo cấu trúc Nhưng lời kết luận, chứa thông tin quan trọng nhất, vẫn chưa mã hóa được Hoặc trong báo cáo xuất viện, bệnh nhân được chuyển đến nơi khác sau khi điều trị cũng không thể mã hóa đầy đủ được
Như vậy, việc chuyển đổi để rút trích thông tin từ các văn bản, cụ thể là bệnh án là cần thiết Nó giúp tiếp cận một nguồn thông tin lớn, đa dạng và phong phú hơn cho các công trình nghiên cứu y khoa
Hiện tại đã có nhiều công trình thực hiện rút trích thông tin từ bệnh án Trong đó Informatics for Integrating Biology and the Bedside (i2b2) là tổ chức đã thực hiện nhiều cuộc thi về rút trích thông tin từ bệnh án Năm 2012 họ tổ chức cuộc thi về rút trích quan hệ giữa các cặp sự kiện – thời gian và sự kiện – sự kiện trong bệnh án có yếu tố thời gian Cuộc thi thu hút nhiều tổ chức tham gia và được Sun W, et al[23] tổng hợp kết quả trong bài đánh giá của họ
Những công trình trên đều thực hiện trên tiếng Anh, và kết quả rút ra có thể sử dụng cho người Việt nhưng sẽ có khác biệt Thể trạng và môi trường sống của người Việt khác với người nước ngoài Sống ở những vùng địa lý khác nhau, bệnh nhân có thể khỏi bệnh nhanh hoặc chậm hơn so với nơi khác Hay tại thời điểm này số lượng bệnh nhân tiểu đường thấp, nhưng chỉ sau vài năm số lượng bệnh nhân tiểu đường sẽ tăng nhanh hơn
Do đó chúng ta cần thực hiện rút trích thông tin trên bệnh án tiếng Việt
Những kết quả này sẽ là tiền đề cho những nghiên cứu sau đó, phù hợp hơn khi sử dụng cho người Việt.
Phạm vi
Do đây là chủ đề mới cho tiếng Việt nên chúng tôi sẽ thực hiện trước trên bệnh án tiếng Anh Việc này sẽ giúp xác định hướng đi của chúng tôi có đúng với các công trình đã thực hiện trước đó hay không Kết quả này sẽ được chúng tôi ứng dụng lại cho bệnh án tiếng Việt Đối với bệnh án, chúng tôi quan tâm đến hai đối tượng: các thực thể xuất hiện trong bệnh án và mối quan hệ giữa chúng nhưng có yếu tố thời gian (Tlink) Các thực thể sẽ gồm hai loại là sự kiện (Event) và thời gian (Timex3) Do đó rút trích hai thực thể trên sẽ được xem như hai bài toán độc lập a Rút trích sự kiện
Việc rút trích sự kiện sẽ được thực hiện trên 6 loại nhãn:
- Các dấu hiệu liên quan đến bệnh (Problems)
- Các thử nghiệm y khoa (Tests)
- Các phương pháp điều trị (Treatments)
- Các phòng ban trong bệnh viện (Clinical departments)
- Các chứng cứ dẫn đến một sự kiện khác (Evidentials)
- Các sự kiện khác xảy ra với bệnh nhân mà không thuộc những nhãn trên (Occurrences)
Chúng tôi chỉ thực hiện ở mức độ xác định nhãn và vị trí của sự kiện trong văn bản được cung cấp b.Rút trích thời gian
Việc rút trích thời gian sẽ được thực hiện trên 4 loại nhãn: ngày (Date), thời gian trong ngày (Time), khoảng thời gian (Duration) và tần suất của một sự kiện (Frequence) Chúng tôi chỉ thực hiện ở mức độ xác định nhãn và vị trí của sự kiện trong văn bản được cung cấp c Rút trích quan hệ thời gian
Việc rút trích quan hệ về thời gian sẽ được thực hiện trên 3 loại nhãn: xảy ra trước (Before), xảy ra cùng lúc (Overlap) và xảy ra sau (After) Theo vị trí xuất hiện của các cặp thực thể sự kiện – thời gian và sự kiện – sự kiện, chúng tôi phân ra làm 3 kiểu ghép cặp quan hệ:
- Quan hệ giữa các sự kiện với thời gian nhập viện và thời gian xuất viện (Section – Event)
- Quan hệ giữa sự kiện – sự kiện và sự kiện – thời gian trong cùng một câu với nhau (Consecutive)
- Quan hệ giữa sự kiện – sự kiện và sự kiện – thời gian giữa các câu với nhau nhưng trong cùng 1 đoạn văn (Across) Đối với tiếng Việt, chúng tôi cũng ứng dụng trong phạm vi tương tự.
Công trình nghiên cứu liên quan
Bài toán rút trích mối quan hệ về thời gian là một chủ đề nghiên cứu của hội nghị Informatics for Integrating Biology & the Bedside (i2b2) năm 2012 Việc rút trích mối quan hệ về thời gian gồm 3 bài toán con: rút trích sự kiện (Event), rút trích thời gian (Timex3), và rút trích quan hệ về thời gian giữa sự kiện – sự kiện và sự kiện – thời gian (Tlink) Theo nghiên cứu của Tang B, et al [24] có hai phương pháp sử dụng phổ biến trong rút trích quan hệ về thời gian: phương pháp dựa trên luật (rule-based) và máy học (machine learning) a Rút trích sự kiện
Rút trích sự kiện theo nghiên cứu của Tang B, et al [24] có hai bước: nhận dạng kiểu và nhận dạng thuộc tính của sự kiện
Bước thứ nhất Tang B, et al [24] sử dụng Conditional Random Fields (CRF) để nhận dạng kiểu của sự kiện Dựa vào CRF, có hai thành phần được xây dựng: (1) xác định bệnh hoặc triệu chứng (Problems), biện pháp điều trị (Treatments), đo đạc thử nghiệm (Tests); và (2) xác định phòng ban (Departments), chứng cứ (Evidentials), các sự kiện khác (Occurrences)
Bước thứ hai sử dụng SVM để xác định thuộc tính của sự kiện:
- Tính phân cực (Polarity): khẳng định hay phủ định
- Phương thức xuất hiện của sự kiện (Modality): xác thực, có điều kiện, có thể, dự kiến
Tang B, et al [24] đã tham khảo bài đánh giá của Pustejovsky J, et al [15] và nhận thấy phương pháp machine learning được sử dụng rộng rãi cho nhận dạng tên thực thể và đã chứng tỏ hiệu năng tốt Theo Pustejovsky J, et al [15], CRF được đánh giá cao khi sử dụng để nhận dạng các cụm từ của sự kiện và nhận dạng kiểu tương ứng cho sự kiện Trong khi đó SVM được đánh giá cao hơn khi sử dụng để nhận dạng thuộc tính của sự kiện Ngoài ra Tang B, et al [24] đã thành công xây dựng hệ thống rút trích quan hệ giữa các sự kiện y khoa trong cuộc thi 2010 của i2b2 Do đó, công trình nghiên cứu của Tang B, et al [24] đã sử dụng CRF và SVM cho việc rút trích sự kiện
Kế thừa hệ thống năm 2010, hệ thống hiện tại của Tang B, et al [24] đã có lợi thế khi rút trích sự kiện Với độ đo F là 0.9013 hệ thống hiện xếp hạng thứ hai trong các hệ thống rút trích sự kiện tại i2b2 2012
Cũng như Tang B et al [24], Sohn S, et al [19] đã thành công xây dựng hệ thống rút trích sự kiện y khoa trong cuộc thi 2010 của i2b2 Do đó họ kế thừa và phát triển hệ thống cho việc rút trích sự kiện trong cuộc thi 2012 của i2b2 Sohn S, et al kết hợp MedTagger và cTAKES thành hệ thống icTAKES để tiền xử lý dữ liệu cho việc huấn luyện của mô hình CRF Hệ thống này gồm nhiều module liên tiếp nhau để phát hiện kiểu của sự kiện Trong đó Problems, Treatments và Tests được thừa kế từ hệ thống trong cuộc thi 2010 của i2b2, sau đó bổ sung và phát triển thêm 3 kiểu sự kiện Departments, Evidentials và Occurrences
Rút trích sự kiện theo Sohn S, et al [19] có điểm Precision và Recall cách nhau khá xa, trong đó Recall có điểm thấp hơn Việc sử dụng duy nhất CRF cho rút trích không đạt được kết quả cao So sánh với Tang B, et al [24] có sử dụng thêm SVM đã cho kết quả khả quan hơn Tác giả cũng nhận ra hạn chế là không sử dụng thêm bộ phận hậu xử lý bằng luật để cải thiện kết quả
Giống với Tang B, et al [24], nghiên cứu của Kovacevic A, et al [9] cũng sử dụng CRF để nhận dạng kiểu của sự kiện, tuy nhiên việc nhận dạng phòng ban được kết hợp thêm phương pháp rule-based để bổ sung cho kết quả Ví dụ: “phim chụp X-quang không có dấu hiệu mòn xương”, trong câu này thì “chụp X-quang” là tên của một thử nghiệm chứ không phải tên phòng ban Việc sử dụng kết hợp với rule- based cho phép nhận dạng kiểu sự kiện chính xác hơn so với chỉ sử dụng CRF
Kovacevic A, et al [9] không sử dụng SVM để xác định thuộc tính sự kiện
Thay vào đó, họ sử dụng NegEx để xác định thuộc tính Polarity Đối với thuộc tính Modality, một tập luật dựa trên sự gắn kết từ vựng được sử dụng Tuy nhiên không cải thiện được đáng kể vì 95% dữ liệu huấn luyện được đánh dấu là xác thực (Factual)
Các công trình nghiên cứu trên được đánh giá trong công trình nghiên cứu của Sun W, et al [23] Sun W, et al [23] đã có đánh giá tổng quan về các vấn đề trong rút trích quan hệ giữa thời gian và sự kiện Trong 10 hệ thống hàng đầu phát hiện các cụm từ của sự kiện thì có 9 hệ thống sử dụng CRF, phương pháp mô hình thống kê để gán nhãn tuần tự CRF cũng đã được đánh giá cao trong việc nhận dạng tên thực thể trong các nghiên cứu y sinh Và nó cũng được đánh giá cao trong lĩnh vực y khoa, vốn có quan hệ lớn với y sinh Để phân loại thuộc tính của sự kiện hầu hết các hệ thống sử dụng SVM
Ngoài ra, có vài nhóm dự án đã tùy chỉnh và cải thiện hệ thống phát hiện sự kiện bằng cách sử dụng các hệ thống hỗ trợ như cTAKES hay MetaMap… b.Rút trích thời gian
Theo đánh giá của Pustejovsky J, et al [15], cả rule-based và machine learning đều được sử dụng để rút trích thời gian, trong đó rule-based được đánh giá có hiệu năng hơi cao hơn so với machine learning Trong công trình TempEval2 của Pustejovsky J, et al [15] có nhiều hệ thống rút trích thời gian được đánh giá Tất cả các hệ thống rút trích thời gian trong TempEval2 đều sử dụng rule-based Trong đó HeidelTime là một hệ thống mở sử dụng rule-based có hiệu năng tốt
Tham khảo đánh giá của Pustejovsky J, et al [15], Tang B, et al [24] xây dựng hệ thống rút trích thời gian dựa trên HeidelTime Tang B, et al [24] áp dụng nhiều tập luật từ HeidelTime để xây dựng hệ thống rút trích các cụm từ thời gian, chuẩn hóa giá trị và xác định thuộc tính bổ sung của thời gian Ví dụ: “bệnh nhân nhập viện vào sáng ngày 25 tháng 9 năm 2009”, hệ thống xác định “sáng ngày 25 tháng 9 năm 2009” là biểu thức thời gian với giá trị “2009-09-25TMO” và thuộc tính bổ sung là “Time” Được xếp hạng thứ 4 trong việc rút trích thời gian với độ đo F là 0.8659, hệ thống của Tang B, et al [24] vẫn còn lỗi khi chuẩn hóa thời gian Ví dụ: “hai ngày sau phẫu thuật” là biểu diễn một ngày, nếu không phát hiện được giá trị đúng của ngày phẫu thuật thì hệ thống sẽ xác nhận là khoảng thời gian “hai ngày”
Sohn S, et al [19] phát triển hệ thống MayoTime tương thích với framework của HeidelTime Trong đó sử dụng hệ thống icTAKES như rút trích sự kiện để hỗ trợ việc tìm các cụm từ thời gian Cùng với icTAKES, MayoTime được xây dựng và mở rộng từ các luật của HeidelTime cho phù hợp với yêu cầu của i2b2 Sau khi xác định biểu thức thời gian, các kết quả sẽ đi qua quá trình hậu xử lý để loại bỏ các lỗi sai
Hệ thống rút trích thời gian của Sohn S, et al được đánh giá hiệu năng cao nhất trong tất cả các hệ thống trong i2b2 2012 với độ đo F-measure là 0.900 Việc sử dụng icTAKES cho phép xác định quan hệ giữa thời gian và một cụm từ mô tả cho thời gian tương ứng Ví dụ “ngày 19 tháng 3 năm 2009” là ngày nhập viện sẽ có liên quan đến cụm từ “ngày nhập viện”
Nghiên cứu của Kovacevic A, et al [9] đối với rút trích thời gian có chút khác biệt Thay vì chỉ sử dụng rule-based, Kovacevic A, et al [9] sử dụng thêm module CRF để bổ sung các tính năng cho việc xác định thời gian Ví dụ: “bắt đầu co giật vào 9 giờ sáng ngày nhập viện”, theo rule-based sẽ xác định thời gian là “9 giờ sáng” còn CRF có thể xác định “9 giờ sáng ngày nhập viện”
Thời gian không chỉ là các con số mà con có thể là tên ngày đặc biệt, ví dụ
CƠ SỞ LÝ THUYẾT
Các đặc điểm cơ bản của tiếng Việt
Theo nghiên cứu của Dinh, et al [4], tiếng Việt là ngôn ngữ đơn lập (isolated language), nó không giống như các ngôn ngữ đơn lập khác như tiếng Trung, tiếng Thái Tiếng Việt được viết dưới dạng các ký tự Latin biểu thị cho từng tiếng riêng biệt Trong ngôn ngữ học, từ (word) là đơn vị cơ bản Mỗi từ tiếng Việt được cấu thành từ một đến nhiều tiếng khác nhau Do đó, để xử lý tiếng Việt, việc đầu tiên phải làm đó là xác định biên giới từ
Tiếng (syllable): hay còn gọi là hình vị (morpheme) là đơn vị nhỏ nhất mà chỉ có một cách để phát âm theo nghiên cứu của Dinh, et al [5] Trong văn viết, chúng thường được phân định bởi khoảng trắng Trong văn nói, mỗi tiếng gồm có 5 thành phần: phụ âm đầu (first consonant), nguyên âm hai (secondary vowel), nguyên âm chính (main vowel), phụ âm cuối (last consonant) và dấu (a tone mark)
Ví dụ “miệng” có phụ âm đầu là (m), nguyên âm hai là (i) nguyên âm chính là (ê) phụ âm cuối là (ng) và dấu (nặm) Tuy nhiên ngoại trừ nguyên âm chính bắt buộc phải có, những thành phần khác có thể vắng mặt Ví dụ “thở” không có nguyên âm hai và phụ âm cuối
Từ: có nhiều định nghĩa khác nhau, tuy nhiên theo Dinh, et al [4] thì tất cả các nhà ngôn ngữ học đều cho rằng từ có những đặc điểm sau:
- Từ có tính nguyên về mặt hình thức, ngữ nghĩa và về ngữ pháp
- Từ có cấu tạo từ tiếng
- Từ gồm các từ đơn(cảm, sốt,…) và các từ ghép (khò khè, kháng sinh,…)
So sánh, đối chiếu giữa tiếng Anh và tiếng Việt
Theo nghiên cứu của Dinh, et al [5] thì trong tiếng Anh “từ là một nhóm các ký tự mang nghĩa được phân tách bởi khoảng trắng trong câu” Trong khi đó, từ trong tiếng Việt được cấu tạo từ tiếng và không thể sử dụng khoảng trắng để định giới giữa các từ Hơn nữa, tiếng Anh có sử dụng tiền tố (prefixes) và phụ tố (affixes), còn tiếng Việt không sử dụng các thành phần này
Một khác biệt nữa giữa tiếng Anh và tiếng Việt, là trong tiếng Anh từ có thể biến đổi hình thái, nghĩa là từ có thể thay đổi hình thức nhưng mang cùng một nghĩa Ví dụ, từ “tôi” trong tiếng Anh có thể là “I” hoặc “Me” Mặt khác, trong tiếng Việt không chia thì như trong tiếng Anh Dựa vào các đặc điểm khác biệt đã nêu ở trên, kết hợp với nghiên cứu của Dinh, et al [5], chúng tôi tổng hợp một vài điểm khác biệt giữa tiếng Anh và tiếng Việt trong bảng 2.
Học máy
Học máy (machine learning) là một lĩnh vực của ngành Khoa học Máy tính, cụ thể hơn là của trí tuệ nhân tạo Học máy mà nghiên cứu những kỹ thuật, hay các giải thuật cần thiết, giúp máy tính có thể “học” được những kinh nghiệm cho trước
Từ đó áp dụng cho những tình huống tương tự của cùng một bài toán Nói cách khác là xây dựng những chương trình có thể tự động học và cải thiện hiệu quả thông qua kinh nghiệm giống với quá trình học của con người
Việc học bao gồm các yếu tố sau:
- Nhiệm vụ (task): cho biết học để làm gì
- Độ đo hiệu quả (performance measure): để đánh giá kết quả của việc học
- Tập kinh nghiệm (experience): là những bài huấn luyện cho quá trình học, còn gọi là tập huấn luyện (trainning data)
Tiếng Việt Tiếng Anh Đơn vị cơ bản là tiếng (syllable) Đơn vị cơ bản là từ (word)
Từ được xây dựng từ các tiếng Từ được xây dựng từ sự kết hợp các ký tự với nhau và có nghĩa
Biên giới từ được xác định dựa vào cách kết hợp các tiếng trong một ngữ cảnh cụ thể
Biên giới từ được xác định dựa vào khoảng trắng hoặc ký tự phân cách
Từ không biến đổi hình thái Từ biến đổi hình thái
Nghĩa của từ được biểu diễn bởi một từ riêng biệt và là duy nhất
Sử dụng tiền tố và phụ tố để biểu diễn nghĩa của từ Ví dụ: discharge, discharged,…
Thời gian xác định bằng trạng từ Thời gian xác định bằng thì của động từ
Bảng 2: So sánh đặc điểm tiếng Việt và tiếng Anh
- Tập kiểm tra (testing data): dữ liệu để kiểm tra việc học có hiệu quả hay không, tập này thường được gọi là tập chuẩn vàng (gold data)
- Các đặc trưng để học (learning features): những đặc trưng dùng cho việc học Tập hợp các đặc trưng của một nhiệm vụ được gọi là vector đặc trưng của nhiệm vụ đó
Có thể lấy một ví dụ như việc học máy cách phân biệt cụm từ có phải là sự kiện y khoa hay không như sau:
- Nhiệm vụ: phân loại sự kiện
- Độ đo hiệu quả: tỉ lệ số sự kiện được nhận diện đúng trên tổng số sự kiện đã nhận dạng được, ngoài ra còn có tỉ lệ số sự kiện nhận diện đúng trên tổng số sự kiện có sẵn của tập kiểm tra
- Tập kinh nghiệm: chứa những tập có dữ liệu đã phân loại sẵn là sự kiện hay không
- Tập kiểm tra: chứa những tập dữ liệu để kiểm tra việc nhận diện có hiệu quả hay không
Các đặc trưng để học: những tiếng thường xuất hiện trong các từ hoặc cụm từ được xác định là sự kiện như “sốt”, “nhập viện”, … Ứng dụng của học máy rất đa dạng, và được áp dụng rộng rãi như trong xử lý ảnh và thị giác máy tính, xử lý ngôn ngữ tự nhiên, khai phá dữ liệu, nhận dạng chữ viết, giọng nói hay dùng để dịch thuật… Một ví dụ khá điển hình là công cụ Google dịch (Google Translate), một công cụ dịch thuật khác với các công cụ dịch thông thường ở điểm nó có phân tích cú pháp của câu để từ đó cho biết ý nghĩa của câu hay đoạn văn Mặt khác nó cho phép người dùng sửa đổi kết quả dịch và học lại từ những kết quả mới
Có nhiều giải thuật học máy được đề xuất như: Decision tree, Neural Networks, Nạve Bayes, K Nearest Neighbors, Support Vector Machine… nhưng tổng quát ta có thể phân loại các giải thuật học máy thành từng nhóm như sau:
- Học máy có giám sát (supervised learning) Tập dữ liệu huấn luyện chứa đầy đủ vector mang giá trị của các đặc trưng và cho biết trước cả câu trả lời chính xác mong muốn Các giá trị của từng đặc trưng của vector có thể là giá trị liên tục (continuous) hoặc rời rạc (discrete) hay nhãn (chủ đề) của đối tượng đầu vào mà nó biểu diễn Nhiệm vụ chính là xây dựng mô hình học hợp lý của việc tổng quát hóa dữ liệu
- Học máy không giám sát (unsupervised learning) Tương tự như việc học máy giám sát nhưng tập huấn luyện chỉ có vector chứa giá trị cho các đặc trưng mà không có câu trả lời chính xác Thay vào đó, giải thuật học máy sẽ cố gắng gom nhóm (clustering) các đối tượng đầu vào dựa vào sự tương tự của chúng, hay nói cách khác chúng tự mình đưa ra câu trả lời
Thông thường thì độ chính xác của phương pháp học máy không giám sát sẽ thấp hơn học máy có giám sát
- Học máy bán giám sát (semi-supervised learning) Trong các bài toán thực tế, việc có kết quả chính xác mong muốn hay gán nhãn chính xác ngay cho tập huấn luyện không phải lúc nào cũng làm được hết, mà chỉ làm được một phần nào đó do chi phí hay hoàn cảnh khó khăn Và kết quả của phương pháp học máy không giám sát không đạt được yêu cầu nên phương pháp học máy bán giám sát ra đời để kết hợp hai ưu điểm của hai phương pháp trên Chỉ gán nhãn cho một số nhỏ tình huống mà thôi, điều này có ý nghĩa rất lớn trong thực tế
- Học máy tăng cường (reinforcement learning) Thuật toán sẽ có tương tác với tình huống thực tế (môi trường) Môi trường sẽ cung cấp những thông tin phản hồi ngay tại lúc đó để việc học máy thích ứng với môi trường thực tế hơn và đưa ra kết quả có thể chính xác hơn Việc học máy này có ý nghĩa rất lớn đối với những bài toán thời gian thực (real time) a Support Vector Machine
Hình 2.1:Mặt phân cách tốt nhất theo Aggarwal C, et al [1]
Theo Aggarwal C, et al [1], Joachims T [9] thì ý tưởng chính của Support Vector Machine (SVM) đó là xác định mặt phân cách tốt nhất trong không gian tìm kiếm mà phân chia riêng biệt giữa các nhãn khác nhau Ví dụ trong hình 2.1, trong hình này ta quy ước có 2 nhãn khác nhau được kí hiệu x và o A, B và C là các mặt phân cách Còn m và n được gọi là các mặt phân cách hỗ trợ Khoảng cách giữa A và m hoặc A và n được gọi là lề (margin) Rõ ràng ta thấy rằng, mặt phân cách A là mặt phân cách tốt nhất để phân chia nhãn x và o, vì khoảng cách của bất cứ phần tử x và o nào đến A cũng đều lớn nhất
Nếu x và o không khả tách tuyến tính, tức là không thể được phân tách riêng biệt như ví dụ ở hình 2.2 thì ta có thể xác định mặt phân cách theo hai cách Cách thứ nhất, ta có thể ánh xạ các điểm dữ liệu này sang một không gian mới có số chiều cao hơn Trong không gian này, các điểm dữ liệu có thể được phân tách riêng biệt, hoặc có thể phân tách với ít lỗi hơn so với trường hợp sử dụng không gian ban đầu như minh họa ở hình 2.3 Trong hình này các điểm dữ liệu được chuyển sang một không gian mới mà ở đó các nhãn được phân tách thành hai lớp riêng biệt Việc ánh xạ này có thể được hiện thực qua các hàm nhân như gaussian, polynomial, sigmoid
Hình 2.2: Một ví dụ không khả phân tách giữa hai lớp 1
Hình 2.3: Ánh xạ các điểm dữ liệu sang không gian mới 1
1 www.mi.parisdescartes.fr/~bouzy
Cách thứ hai, ta sử dụng một mặt phân cách lề mềm, nghĩa là cho phép một số điểm dữ liệu nằm về phía sai của mặt phân cách hoặc vẫn ở vị trí đúng nhưng rơi vào vùng giữa mặt phân cách và mặt phân cách hỗ trợ tương ứng Trong trường hợp này, người dùng phải lựa chọn tham số C, tham số này còn được gọi là tham số regularization (trong học máy, regularization được dùng để ngăn chặn vấn đề overfitting) Tham số C cho SVM biết là ta muốn tối ưu hóa như thế nào để tránh phân loại sai mỗi mẫu trong dữ liệu huấn luyện, tham số này được chọn dựa trên sự phân bố của tập dữ liệu huấn luyện theo quy tắc sau:
- Giá trị của C nhỏ thì lề lớn hơn và nhiều lỗi phân loại hơn
- Giá trị của C lớn thì lề nhỏ hơn và ít lỗi phân loại hơn
Giá trị C nhỏ thường được coi trọng hơn giá trị C lớn vì mục tiêu của sự tối ưu hóa là để giảm tổi thiểu tham số và cho phép một ít lỗi phân loại sai
Kỹ thuật SVM có thể xử lý không gian đặc trưng lớn (bài toán có số chiều cao như phân loại văn bản) với độ chính xác phân loại cao Nó cho kết quả tốt nhất cho cả tập huấn luyện và tập kiểm tra, phù hợp hơn với những đặc trưng số, thời gian huấn luyện và phân loại rất nhanh Tuy nhiên, việc hiện thực của kỹ thuật này rất phức tạp Đối với SVM, chúng tôi sử dụng thư viện LIBLINEAR được cung cấp từ công trình của Rong-En F, et al [16] do Tang B, et al [24] đề xuất b Conditional Random Fields
Bài toán rút trích quan hệ
Setzer A, et al [18] là người tiên phong trong bài toán rút trích quan hệ về thời gian Ông định nghĩa bài toán gồm 3 thành phần:
- Events: là những gì xảy ra mà có thể đặt vào trong một sơ đồ về thời gian
Sự kiện phải liên quan đến thời gian và được nêu ra bởi các động từ giới hạn và những từ định danh Các thuộc tính của sự kiện gồm: ID, class, verb tense, những sự kiện hoặc thời gian có quan hệ với nó
- Times: cũng giống như sự kiện, nó được xem như một đối tượng chỉ thời gian và nằm trong chuỗi thời gian đang xét Ví dụ “last Tuesday, April 4, 1998” và “March 1997” hoặc phức tạp hơn là “17 seconds after the crash”
- Temporal relations: là những sự kiện cùng nằm trong một mối quan hệ về thời gian với những sự kiện và thời gian khác Quan hệ giữa chúng gồm: before, after, includes, included và simultaneous
Ba thành phần trên được xem xét đánh giá trên tập dữ liệu cho trước với các tham số cần đánh giá là Precision và Recall Trong đó Precision là độ chính xác được tính toán trên tỉ lệ số lượng nhãn do hệ thống phát hiện đúng với tổng số lượng nhãn hệ thống xuất ra ( 23 56 76 Và Recall là độ đầy đủ tính toán trên tỉ lệ số lượng nhãn do hệ thống phát hiện đúng với tổng số lượng nhãn trên tập dữ liệu mẫu (8956:; 96 ℎ
Công trình trên rút trích quan hệ từ văn bản chung Sau này nó được mở rộng và phát triển, trong đó có Pustejovsky J, et al [15] Và đến nay, nó được ứng dụng cho bệnh án điện tử Các thuộc tính của sự kiện và thời gian được mở rộng hơn nhằm hỗ trợ tốt hơn cho rút trích quan hệ thời gian Với i2b2, sự kiện gồm 6 loại:
Problems, Tests, Treatments, Evidentials, Clinical Departments và Occurrences
Mỗi sự kiện có thêm 2 thuộc tính là: tính phân cực (Polarity) và khả năng xuất hiện (Modality) Thời gian cần rút trích có 4 loại: ngày (Date), giờ (Time), khoảng thời gian (Duration) và tần suất (Frequence) Các thuộc tính của thời gian còn bao gồm: giá trị và mức độ thay đổi của giá trị
Ngoài hai độ đo Precision và Recall, các công trình hiện nay còn sử dụng độ đo F-measure chỉ mức độ hài hòa giữa hai độ đo Precision và Recall Đây là độ đo sử dụng phổ biến khi so sánh hiệu năng giữa các hệ thống khác nhau
PHƯƠNG PHÁP ĐỀ XUẤT
Rút trích sự kiện
Đầu tiên chúng tôi xử lý những ký tự đặc biệt mà có thể tách ra thành nhiều từ (word) khi qua bộ phân tích Part-of-speech (POS) Ngoài ra những trường hợp bộ phân tích nhận sai vị trí kết thúc câu cũng được chúng tôi biến đổi để không làm thay đổi cấu trúc văn bản
Tiếp theo, văn bản sau khi xử lý được thông qua bộ tách từ để phân định rõ giới hạn giữa các câu với nhau, và cả các từ (nếu có) Văn bản sau khi tách từ sẽ được sử dụng làm chuẩn, tất cả các kết quả về xác định vị trí của sự kiện sẽ dựa vào văn bản này
Sau bước tách từ, chúng tôi sẽ xác định nhãn Part-of-speech cho từng từ trong văn bản Nhãn Part-of-speech sẽ được sử dụng chung cho rút trích sự kiện và rút trích quan hệ b Rút trích sự kiện
Chúng tôi sử dụng phương pháp CRF để rút trích sự kiện Trong những công trình tại i2b2 2012 thì công trình được đánh giá cao nhất sử dụng hoàn toàn CRF để rút trích sự kiện
Mỗi dòng trong định dạng đầu vào của CRF chỉ biểu diễn một từ, do đó chúng tôi dùng nhãn B-I-O(Begin–In–Out) cho mỗi kiểu sự kiện kết quả là chúng tôi có 13 nhãn: B-Problem, I-Problem, B-Test, I- Test, B-Treatment, I- Treatment, B-Evidential, I- Evidential, B-Clinical_Dept, I- Clinical_Dept, B-Occurrence, I- Occurrence và O
Sau khi nhận được kết quả từ CRF, chúng tôi chuyển đổi kết quả sang định dạng về sự kiện của i2b2 2012.
Rút trích thời gian
Trong những hệ thống rút trích thời gian tại i2b2 2012 thì hệ thống được đánh giá cao nhất là Sohn S, et al [19] Hệ thống này dựa trên HeidelTime [21] và chỉnh sửa cho phù hợp với bệnh án Phương pháp Rule-based của HeidelTime tỏ ra vượt trội hơn so với các phương pháp khác do các biểu thức thời gian tuân theo những cấu trúc nhất định
HeidelTime là hệ thống mở, cho phép chỉnh sửa các rule để tùy biến phù hợp với những kiểu văn bản mới Do đó, chúng tôi chọn HeidelTime để rút trích thời gian cho bệnh ỏn tiếng Anh Mặt khỏc, trong cụng trỡnh của Strửtgen J, et al [22] đó thực hiện cải tiến HeidelTime, cho phép rút trích thời gian cho tiếng Việt Vì thế chúng tôi cũng sử dụng HeidelTime để rút trích thời gian cho tiếng Việt.
Rút trích quan hệ thời gian
Việc rút trích mối quan hệ về thời gian có nhiều phương pháp như rule-based, machine learning hoặc phương pháp lai Tuy nhiên CRF++ và LIBLINEAR sử dụng trong nghiên cứu của Tang B, et al [24] đã được đánh giá cao nhất Do đó đề tài này cũng sử dụng CRF++ và LIBLINEAR cho việc rút trích quan hệ về thời gian Việc kết hợp hai phương pháp vẫn có thể xảy ra việc trùng lấp các quan hệ, do đó chúng tôi sử dụng thêm rule-based để xử lý kết quả Việc này sẽ giúp cải thiện hiệu năng cho việc rút trích của hệ thống
Quan hệ về thời gian tính theo cách ghép cặp quan hệ có 3 dạng:
- Quan hệ giữa sự kiện và thời gian nhập, xuất viện
- Quan hệ giữa sự kiện – sự kiện và sự kiện – thời gian trong cùng một câu
- Quan hệ giữa sự kiện – sự kiện và sự kiện – thời gian ở những câu khác nhau.
Do thời gian nhập và xuất viện chỉ thuộc kiểu “ngày” do đó giữa sự kiện và thời gian nhập xuất viện, chúng tôi chỉ xem xét quan hệ trên đơn vị thời gian là ngày(Date) Đối với quan hệ trong cùng một câu và quan hệ nằm trên các câu khác nhau, chúng tôi xem xét trên đơn vị thời gian là ngày(Date) và giờ(Time)
Ví dụ: “bệnh nhân ho nhiều vào buổi sáng, đến chiều sốt cao nên nhập viện” Ở ví dụ này ta có sự kiện “ho nhiều” và “sốt cao” xảy ra cùng lúc với ngày nhập viện nên sẽ có quan hệ OVERLAP Nhưng khi xét quan hệ trong một câu ta sẽ có sự kiện “ho nhiều” xảy ra trước sự kiện “sốt cao” và mang nhãn BEFORE
Chúng tôi xây dựng 3 phần rút trích quan hệ thời gian tương ứng Trong đó quan hệ sự kiện và thời gian với thời gian nhập, xuất viện sẽ sử dụng LIBLINEAR (SVM) để rút trích quan hệ Hai phần còn lại sẽ sử dụng phương pháp CRF++
Quan hệ về thời gian gồm có 3 loại:
- OVERLAP: cặp quan hệ Event1-Event2 xảy ra đồng thời
- BEFORE: cặp quan hệ Event1-Event2 có sự kiện Event1 xảy ra trước
- AFTER: cặp quan hệ Event1-Event2 có sự kiện Event1 xảy ra sau
Hình 3: Sơ đồ rút trích quan hệ thời gian cho bệnh án
Tiền xử lý Bệnh án
Tách từ vnTokenizer cho tiếng Việt và Stanford parser cho tiếng Anh
Xác định Part-of-speech JvnTextPro cho tiếng Việt và Stanford parser cho tiếng Anh
Xác định cụm từ và kiểu sự kiện bằng CRF
Chuyển đổi kết quả sang định dạng sự kiện
Xác định biểu thức thời gian bằng HeidelTime (Rule-based)
Chuyển đổi kết quả sang định dạng thời gian của i2b2
Rút trích quan hệ sự kiện và thời gian nhập, xuất viện (SVM)
Rút trích quan hệ thời gian cùng một câu
Rút trích quan hệ thời gian giữa các câu khác nhau (CRF)
Tập hợp các cặp quan hệ thời gian đã gán nhãn
Sơ đồ hình 3 mô tả quá trình rút trích quan hệ trong bệnh án Dữ liệu đầu vào sẽ đi qua bước tiền xử lý để tách từ và đảm bảo cấu trúc bệnh án được giữ nguyên
Tiếp theo hệ thống sẽ rút trích sự kiện bằng CRF, nhãn Part-of-Speech(POS) sẽ được xác định để làm feature cho hệ thống Đối với tiếng Việt, chúng tôi sử dụng vnTokenizer[12] để tách các từ tiếng Việt đồng thời sử dụng JvnTextPro để xác định nhãn POS Đối với tiếng Anh, chúng tôi sử dụng Stanford Parser[20] để xác định các nhãn POS
Sau đó hệ thống sẽ rút trích các cụm từ thời gian dựa trên hệ thống HeidelTime Để hỗ trợ cho rút trích thời gian, HeidelTime sử dụng TreeTagger[25] để hỗ trợ rút trích trên tiếng Anh và JvnTextPro[6] cho tiếng Việt Kết quả của hệ thống rút trích sự kiện và thời gian sẽ được đưa vào rút trích quan hệ bằng CRF và SVM Kết quả thu được sẽ là tập hợp các cặp quan hệ cùng với nhãn quan hệ tương ứng.
HIỆN THỰC HỆ THỐNG
Rút trích trên bệnh án tiếng Anh
Dữ liệu đầu vào là file text lưu nội dung của bệnh án có cấu trúc như hình 4.1
Hình 4.1: Mẫu bệnh án tiếng Anh
Chúng tôi xác định nhãn POS để sử dụng như một feature cho huấn luyện cũng như kiểm tra kết quả Tuy nhiên, cuối mỗi dòng không có dấu “.” Nên kết quả output của bộ phân tích Stanford parser nối liền tất cả các dòng không có dấu “.” lại với nhau Điều này gây khó khăn cho việc xác định vị trí của các từ theo dạng “vị trí dòng: vị trí từ trong dòng” Do đó chúng tôi chèn vào sau mỗi dòng dấu “.” để ngăn cách các dòng với nhau Sau khi tiền xử lý chúng tôi chuyển nội dung vào file
Ngoài ra, một số trường hợp cũng làm lệch kết quả cũng được chúng tôi xử lý Ví dụ: ".'", các dấu “.” trong các tên riêng hoặc các danh xưng “Mr.” hay
“Mrs.” cũng được thay thế để ngăn chặn việc tách dòng hoặc tách một từ thành hai từ
Sau khi xử lý chúng tôi dùng chương trình Stanford parser[20] để gán nhãn POS cho file vừa tạo kết quả chúng tôi thu được là file output có nội dung được đính kèm nhãn POS có cấu trúc như hình 4.2:
Admission Date : 09/29/1993 Discharge Date : 10/04/1993 HISTORY OF PRESENT ILLNESS : Content
Hình 4.2: Kết quả lấy nhãn Part-of-speech trên bệnh án tiếng Anh
Sau khi có được nhãn POS, chúng tôi ghép các cặp word – POS lại với nhau từ file text và file output của Stanford Parser Trong file output của Stanford Parser có trường hợp ngày “09/29/1993/CD” hoặc các chỉ số xét nghiệm “mg/ml” có nhiều dấu “/” có thể làm lệch kết quả Chúng cũng được xử lý để lấy đúng nhãn cho mỗi từ Các dấu “.” ở cuối câu sẽ không ảnh hưởng đến kết quả do nội dung được kết hợp từ file văn bản đầu vào Đến đây chúng tôi đã thu được những nội dung cần thiết Để huấn luyện, chúng tôi kết hợp các nhãn sự kiện từ file “.event” Phương pháp được sử dụng là CRF++ do đó chúng tôi chuyển các cặp sang định dạng của CRF++ Chúng tôi tạo ra hai mô hình sử dụng nhãn POS và không sử dụng nhãn POS để tăng số lượng nhãn được phát hiện Theo như bài báo, chúng tôi chia ra hai nhóm nhãn để huấn luyện: Problems – Tests – Treatments và Evidentials – Clinical departments – Occurrences
Chúng tôi phát hiện một vài sự kiện dài ví dụ “a 1 cm cyst in the right lobe of the liver” Do đó chúng tôi kiểm tra các từ, các nhãn POS trong khoảng [-5,5] đối với từ đang xét để xác định nhãn sự kiện Kết quả thu được sẽ được kết hợp với file text ban đầu để xác định vị trí trong bệnh án Kết quả cuối cùng được xuất ra file
EVENT="H2 blockers" 16:7 16:8||type="TREATMENT"||modality="FACTUAL"
Giữa các mô hình này cho ra kết quả có thể trùng nhau hoặc có vị trí xen lẫn nhau Chúng tôi sẽ xác định sự kiện ưu tiên theo quy tắc: cùng vị trí và cùng loại nhãn sẽ lấy sự kiện có nội dung dài hơn, các cụm từ được đánh nhiều nhãn sẽ ưu tiên lấy kết quả theo thứ tự Problems Tests Treatments Evidentials Clinical departments Occurrences
HISTORY/NNP OF/IN PRESENT/NNP ILLNESS/VBZ :/: /
HOSPITAL/NNP COURSE/NNPS :/: / b.Rút trích thời gian
Việc rút trích thời gian sẽ được thực hiện trên hệ thống của HeidelTime Đầu vào là file văn bản bệnh án được cung cấp Hệ thống này sử dụng bộ phân tích TreeTagger làm trung gian để tách từ, xác định các nhãn POS cần thiết Chúng tôi cũng sửa đổi các rule của HeidelTime để đạt kết quả chính xác hơn cho bệnh án
Kết quả sau đó sẽ được xuất ra theo chuẩn TimeML
10/20/95
Chúng tôi chuyển đổi kết quả theo cấu trúc Timex3 cho phù hợp với bài toán:
TIMEX3="10/20/95" 4:0 4:0||type="DATE"||val="1995-10-20"||mod=""
Kết quả này sau đó sẽ cùng kết hợp với kết quả rút trích sự kiện và xuất ra file
“.extent” c Rút trích quan hệ thời gian
Dữ liệu đầu vào cho rút trích quan hệ gồm file văn bản chứa bệnh án và file
“.extent” chứa các sự kiện và thời gian Quan hệ về thời gian xét về vị trí giữa các cặp phần tử của một quan hệ được chia thành ba loại:
- Quan hệ giữa sự kiện và thời gian nhập viện, xuất viện
- Quan hệ giữa sự kiện – sự kiện và sự kiện – thời gian trong cùng một câu
- Quan hệ giữa sự kiện – sự kiện và sự kiện – thời gian giữa các câu khác nhau Đối với quan hệ giữa sự kiện và thời gian nhập và xuất viện (Sectime-Event), chúng tôi xác định các feature để rút trích như bảng 4.1
Việc xác định Location dựa vào vị trí của các sự kiện trong bệnh án Bệnh án gồm có 2 đoạn văn chính là “tiền sử bệnh” và “điều trị trong bệnh viện” Chúng tôi kết hợp danh sách sự kiện với nội dung bệnh án để xác định chính xác đoạn văn chứa sự kiện Với mỗi đoạn văn, chúng tôi sẽ đánh dấu riêng danh sách sự kiện nằm trong nó Danh sách này giúp xác định chi tiết những feature của Location
Part-of-speech đã được xác định trong phần rút trích sự kiện, chúng tôi sẽ sử dụng output đã có để xác định nhãn POS cho từng từ trong bệnh án Việc xác định feature Bag-of-words và Part-of-speech sẽ được kết hợp với nhau do mỗi từ sẽ ứng với một nhãn POS
Tense được xác định dựa vào nhãn POS của các động từ trong câu chứa sự kiện Chúng tôi sẽ tìm động từ gần với sự kiện nhất để biểu diễn feature Tense
Nằm trong 5 câu đầu tiên của đoạn văn Nằm trong 5 câu cuối cùng của đoạn văn Nằm trong 3 sự kiện đầu tiên của đoạn văn Nằm trong 3 sự kiện cuối cùng của đoạn văn Nằm trong 5 sự kiện đầu tiên của bệnh án Nằm trong 5 sự kiện cuối cùng của bệnh án
Bag-of-words Xác định các từ nằm trong khoảng [-2,2] xung quanh sự kiện đang xét
Xác định các nhãn Part-of-speech cho các từ nằm trong khoảng [-2,2] xung quanh sự kiện đang xét
Tense Xác định trạng thái thời gian của câu chứa sự kiện
Xác định giá trị ngày hoặc giờ gần nhất của sự kiện (nếu có)
Xác định thứ tự giữa giá trị thời gian trên với thời gian nhập viện hoặc xuất viện
Xác định nhãn Type của sự kiện Xác định nhãn thuộc tính Polarity và Modality của sự kiện
Xác định sự kiện có chứa động từ hay không
Bảng 4.1: Feature cho rút trích quan hệ Sectime-Event
Dependency: chúng tôi kết hợp danh sách sự kiện và danh sách thời gian với nhau để xác định feature Dependency Đối với mỗi sự kiện, chúng tôi kiểm tra danh sách thời gian nằm trong cùng một câu với sự kiện với thời gian xác định được, chúng tôi xem xét thuộc tính Type có phải Date hay Time hay không Nếu đúng, chúng tôi sẽ lấy giá trị của thời gian Việc xác định thứ tự của thời gian với Sectime sẽ dựa vào giá trị ngày trong thời gian Ví dụ giá trị “2014-12-26TAF” của thời gian kiểu Time sẽ chỉ lấy giá trị số nguyên so sánh là “20141226” Nguyên nhân là do
Sectime mặc định là kiểu “Date” nên thời gian phải được chuyển về cùng kiểu để so sánh
Event: các feature về nhãn Type, Polarity và Modality của sự kiện có sẵn khi đọc file “.extent” Để xác định sự kiện có chứa động từ hay không, chúng tôi sẽ kiểm tra từng nhãn POS của mỗi từ trong nội dung của sự kiện Nếu xuất hiện nhãn dạng “VB%” thì sự kiện có chứa động từ
Rút trích trên bệnh án tiếng Việt
Dữ liệu đầu vào là file văn bản lưu nội dung của bệnh án tiếng Việt
Hình 4.3: Mẫu bệnh án tiếng Việt
Bố cục bệnh án tiếng Việt khác với tiếng Anh “Lý do vào viện”, “Bệnh sử”,
“Tiền sử” và “Tóm tắt bệnh án” chứa nội dung gần giống với tiền sử bệnh trong bệnh án tiếng Anh Các mục còn lại nêu diễn biến xảy ra sau khi nhập viện
Trong tiếng Việt, các từ là sự kết hợp của một hay nhiều tiếng với nhau, do đó chúng tôi sẽ dùng vnTokenizer[12] để tách từ cho tiếng Việt Cũng như tiếng Anh, cuối mỗi dòng có thể thiếu dấu “.” nên chúng tôi xử lý bằng cách thêm dấu “.” sau mỗi dòng Việc này sẽ tránh làm sai lệch cấu trúc bệnh án tiếng Việt Kết quả thu
Ngày nhập viện : 05/06/2014 Ngày xuất viện : 07/06/2014 Lý do vào viện : Bệnh sử : Tiền sử : Khám bệnh : 1 : Khám toàn thân : 2 : Khám bộ phận : a ) Tuần hoàn : b ) Hô hấp : c ) Tiêu hóa : d ) Thận : e ) Cơ quan khác : Thần kinh : Cơ :
Nội tiết : Tóm tắt bệnh án : Chẩn đoán : Điều trị : được là bệnh án với những từ được cấu thành từ các tiếng thành phần với nhau Ví dụ “ngày_nay” được cấu thành từ “ngày” và “nay” Chúng tôi sử dụng kết quả này thay thế bệnh án cũ cho tất cả các bước tiếp theo
Cũng như với tiếng Anh, chúng tôi xác định nhãn POS để sử dụng như một feature cho huấn luyện cũng như kiểm tra kết quả Và chúng tôi sử dụng JvnTextPro để xác định nhãn POS cho mỗi từ được xác định từ vnTokenizer[12] Trong nội dung bệnh án tiếng Việt không có những từ như “Mr.” nên chúng tôi không xử lý những lỗi này kết quả chúng tôi thu được là file output có nội dung được đính kèm nhãn POS như hình 4.4:
Hình 4.4: Kết quả sau khi xác định Part-of-speech trên bệnh án tiếng Việt
Sau khi có được nhãn POS, chúng tôi ghép các cặp word – POS lại với nhau từ file văn bản và file output của JVnTextPro Trong file output của POS có trường hợp ngày “05/06/2014/M” hoặc các chỉ số xét nghiệm “mg/ml” có nhiều dấu “/” có thể làm lệch kết quả Chúng cũng được xử lý để lấy đúng nhãn cho mỗi từ Đến đây chúng tôi đã thu được những nội dung cần thiết Để huấn luyện, chúng tôi kết hợp các nhãn sự kiện từ file “.event” Phương pháp được sử dụng là CRF++ do đó chúng tôi chuyển các cặp sang định dạng của CRF++ Chúng tôi tạo
2/M :/: Khám/Np bộ_phận/N :/: / a/M )/) Tuần_hoàn/V :/: / b/M )/) Hô_hấp/V :/: / c/N )/) Tiêu_hóa/V :/: / d/M )/) Thận/V :/: / e/M )/) Cơ_quan/N khác/A :/: /
Chẩn_đoán/N :/: / Điều_trị/N :/: / ra hai mô hình sử dụng nhãn POS và không sử dụng nhãn POS để tăng số lượng nhãn được phát hiện Áp dụng từ tiếng Anh, chúng tôi chia ra hai nhóm nhãn để huấn luyện: Problems – Tests – Treatments và Evidentials – Clinical departments – Occurrences
Chúng tôi phát hiện một vài sự kiện dài ví dụ “"uống thuốc theo toa bs nhưng không đỡ"” Do đó chúng tôi kiểm tra các từ, các nhãn POS trong khoảng [-3,3] đối với từ đang xét để xác định nhãn sự kiện Kết quả thu được sẽ được kết hợp với file text ban đầu để xác định vị trí trong bệnh án Kết quả cuối cùng được xuất ra file
EVENT="da niêm hồng" 9:12 9:14|| type="PROBLEM"|| modality="ACTUAL"|| polarity="POS"
Giữa các mô hình này cho ra kết quả có thể trùng nhau hoặc có vị trí xen lẫn nhau Chúng tôi sẽ xác định sự kiện ưu tiên theo quy tắc: cùng vị trí và cùng loại nhãn sẽ lấy sự kiện có nội dung dài hơn, khác nhãn sẽ ưu tiên lấy kết quả theo thứ tự Problems Tests Treatments Evidentials Clinical departments Occurrence b.Rút trích thời gian
Việc rút trích thời gian sẽ được thực hiện trên hệ thống của HeidelTime Đầu vào là file text được cung cấp Nhưng trước tiên chúng tôi tiến hành loại bỏ các dấu
“_” nối các từ tiếng Việt với nhau và ghi vào file “tên file gốc B.txt” HeidelTime sẽ xử lý độc lập và cho kết quả dựa trên nội dung file “tên file gốc B.txt” Đối với tiếng Việt, hệ thống này sử dụng bộ phân tích JVnTextPro làm trung gian để tách từ và xác định các nhãn POS cần thiết Kết quả sẽ được xuất ra theo chuẩn TimeML
05/03/2014
Sau đó, chúng tôi chuyển đổi kết quả theo cấu trúc Timex3 cho phù hợp với bài toán:
TIMEX3="05/03/2014" 2:0 2:0||type="DATE"||val="2014-03-05"||mod=""
Dựa vào file “tên file gốc B.txt” để rút trích thời gian nên số lượng từ có thể xảy ra sai lệch với nội dung ban đầu Chúng tôi tiến hành xử lý để vị trí của thời gian đúng với nội dung ban đầu Kết quả này sẽ cùng kết hợp với kết quả rút trích sự kiện và xuất ra file “.extent” c Rút trích quan hệ thời gian
Dữ liệu đầu vào cho rút trích quan hệ gồm file văn bản chứa bệnh án và file
“.extent” chứa các sự kiện và thời gian Quan hệ về thời gian xét về vị trí giữa các cặp phần tử của một quan hệ được chia thành ba dạng:
- Quan hệ giữa sự kiện và thời gian nhập viện, xuất viện
- Quan hệ giữa sự kiện – sự kiện và sự kiện – thời gian trong cùng một câu
- Quan hệ giữa sự kiện – sự kiện và sự kiện – thời gian giữa các câu khác nhau Đối với quan hệ giữa sự kiện và thời gian nhập và xuất viện (Sectime-Event), chúng tôi xác định các feature để rút trích như trong bảng 4.5:
Location xác định sự kiện nói về các tiền sử bệnh hay quá trình điều trị trong bệnh viện xác định kiểu nội dung của sự kiện (tiền sử bệnh, bệnh sử,…) loại thời gian đang xét là nhập viện hay xuất viện
Bag-of-words xác định các từ nằm trong khoảng [-2,2] xung quanh sự kiện đang xét
Part-of- speech xác định các nhãn Part-of-speech cho các từ nằm trong khoảng [-2,2] xung quanh sự kiện đang xét
ĐÁNH GIÁ HỆ THỐNG
Tập dữ liệu
Chúng tôi sử dụng tập dữ liệu được cung cấp từ cuộc thi năm 2012 của tổ chức Informatics for Integrating Biology and the Bedside (i2b2)[23] Dữ liệu được thu thập từ Trung tâm y tế Beth Israel Deaconess và các đối tác về chăm sóc sức khỏe của họ Tập dữ liệu bao gồm 310 bệnh án với nội dung chính là tiền sử bệnh và diễn biến sau khi nhập viện Trong đó xuất hiện nhiều các mối quan hệ giữa các sự kiện và thời gian
Tập dữ liệu được chia ra 190 bệnh án để huấn luyện (training set) và 120 bệnh án để kiểm tra (testing set) Trong đó thống kê số lượng sự kiện cho training là 16424 và testing là 13589 Thống kê số lượng thời gian cho training là 2366 và testing là 1820 Tương tự thống kê quan hệ cho training là 33543 và testing là 27736
Bảng 5.1: Thống kê sự kiện trong bệnh án tiếng Anh theo nhãn
Bảng 5.2: Thống kê thời gian trong bệnh án tiếng Anh theo nhãn
Bảng 5.3: Thống kê quan hệ về thời gian trong bệnh án tiếng Anh theo nhãn b.Dữ liệu bệnh án tiếng Việt
Tập dữ liệu tiếng Việt được cung cấp từ Bệnh viện Đa khoa Quốc tế Vũ Anh
Dữ liệu nhận được ở dạng file XML xuất ra từ cơ sở dữ liệu lưu trữ bệnh án của Bệnh viện Sau khi có dữ liệu trên, chúng tôi chuyển đổi về dạng văn bản bệnh án như hình 4.3 Khi loại trừ những bệnh án chưa hoàn chỉnh, chúng tôi thu được 262 văn bản bệnh án Chúng tôi sử dụng 162 bệnh án cho training và 100 bệnh án cho testing
Bảng 5.4: Thống kê sự kiện trong bệnh án tiếng Việt theo nhãn
Bảng 5.5: Thống kê thời gian trong bệnh án tiếng Việt theo nhãn
Bảng 5.6: Thống kê quan hệ về thời gian trong bệnh án tiếng Việt theo nhãn
Đánh giá hệ thống rút trích trên tiếng Anh
Như đã trình bày trong phần hiện thực hệ thống, việc rút trích sự kiện được thực hiện bằng phương pháp CRF Các feature được chọn gồm Bag-of-word và Part-of-speech Chúng tôi sử dụng unigram và bigram trong template cho CRF chỉ trong giới hạn [-5,5] đối với mỗi từ được xét
Bag-of-word giúp hệ thống rút trích những sự kiện có nội dung giống với những gì đã được huấn luyện và cho điểm Precision cao Tuy nhiên khi gặp phải những từ chưa được huấn luyện trước, hệ thống sẽ không nhận đúng nhãn cho sự kiện Điều này sẽ làm giảm điểm Recall, dẫn tới điểm F-measure cũng giảm theo
Part-of-speech giúp hệ thống rút trích những sự kiện có cấu trúc ngữ pháp giống với những sự kiện đã huấn luyện Tuy nhiên, việc trùng cấu trúc ngữ pháp nhưng khác nhãn sự kiện vẫn xảy ra Do đó điểm Precision sẽ thấp hơn nhưng bù lại điểm Recall sẽ được nâng cao
Chúng tôi đã tiến hành kiểm tra kết quả của việc chạy riêng feature Bag-of- word và Part-of-speech Kết quả cho thấy có một số cụm từ được feature Bag-of- word đánh nhãn sự kiện nhưng feature Part-of-speech không cho đó là sự kiện Và khi so sánh ngược lại vẫn có sự kiện mà feature Part-of-speech nhận ra nhưng feature Bag-of-word thì không
Kết hợp kết quả của cả hai feature Bag-of-word và Part-of-speech chúng tôi xác định được nhiều sự kiện đúng hơn Các sự kiện trùng nhau sẽ được loại bỏ để tránh trường hợp sự kiện xuất hiện nhiều lần Các số đo trong cột System trong bảng 5.7 chính là kết quả khi kết hợp hai feature Độ đo System Paper
Bảng 5.7: So sánh độ đo khi rút trích sự kiện trên bệnh án tiếng Anh
Có thể nhận thấy kết quả của chúng tôi thấp hơn so với công trình của Xu Y, et al [28] Nguyên nhân là do số lượng feature chúng tôi sử dụng thấp hơn so với công trình của họ Các feature Xu Y, et al sử dụng thêm gồm pattern matching, word normalization, N-character-prefix-and-suffix và word clustering Chúng tôi chưa thực hiện được những feature này trong quá trình xây dựng hệ thống
Ngoài ra khi tham khảo công trình của Tang B, et al [24], mà trước đó là Jiang M, et al [8] chúng tôi cũng nhận thấy họ sử dụng 3 hệ thống NLP hỗ trợ là:
MedLEE, KnowledgeMap và Dictionary based Semantic Tagger (DST) Do không sử dụng được những hệ thống này nên công trình của chúng tôi chỉ đạt những độ đo thấp hơn b.Rút trích thời gian
Hệ thống rút trích thời gian mà chúng tôi sử dụng là HeidelTime Trong các hệ thống rút trích thời gian tham gia vào i2b2 2012, hệ thống dựa trên HeidelTime là Mayo clinic được đánh giá cao nhất Tuy nhiên chúng tôi không tiếp cận được hệ thống này, do đó chúng tôi dựa vào công trình của Tang B, et al [24] Công trình của Tang B, et al [24] cũng dựa trên HeidelTime và đứng vị trí thứ 4 trong bảng xếp hạng về Timex3 của i2b2 2012 [23]
Chúng tôi sử dụng nguyên gốc hệ thống của HeidelTime rút trích thời gian cho tiếng Anh và đạt kết quả như bảng 5.8 Chúng tôi cố gắng cải thiện hệ thống bằng cách viết thêm các rule mới để áp dụng cho những trường hợp mà HeidelTime không rút trích được Tuy nhiên hệ thống không sử dụng được các rule mới do xung đột với các rule sẵn có về thứ tự ưu tiên Tìm hiểu sâu hơn về hệ thống này chúng tôi nhận thấy hệ thống dùng chung các rule cho 4 kiểu văn bản: News, Narratives, Colloquial và Scientific Chúng tôi chưa tối ưu hệ thống để áp dụng riêng cho bệnh án
Lựa chọn khi rút trích thời gian trong bệnh án là sử dụng Narratives, đây là dạng văn bản tường thuật gần giống nhất với nội dung của bệnh án Tuy vậy, hệ thống chỉ cho kết quả thấp vì Narratives dùng chung cho nhiều kiểu nội dung chứ không riêng gì bệnh án điện tử Chúng tôi sẽ cố gắng khắc phục trong những công trình sau Độ đo System Paper
Bảng 5.8: So sánh độ đo khi rút trích thời gian trên bệnh án tiếng Anh c Rút trích quan hệ thời gian
Baseline là rút trích quan hệ giữa sự kiện với thời gian nhập, xuất viện
(Sectime-Event) Chúng tôi ghép các cặp theo thứ tự Sectime – Event để đưa vào phân loại Trong dự liệu dùng để huấn luyện cũng như kiểm tra của i2b2 không bắt buộc theo thứ tự như chúng tôi làm Việc này chỉ nhầm đơn giản hóa việc so sánh các cặp quan hệ khi đánh giá Việc lựa chọn các feature cho rút trích quan hệ gần giống với công trình của Tang B, et al [24] Đối với feature về vị trí của sự kiện (Location), đây là feature đóng vai trò quan trọng nhất cho rút trích quan hệ Sectime-Event Đối với một sự kiện trong đoạn văn bản, người ta thường tường thuật theo thời gian tăng dần Do đó việc xác định thứ tự cũng ảnh hưởng lớn đến quá trình rút trích quan hệ
Feature Tense xác định sự kiện xuất hiện trong quá khứ hay hiện tại Theo công trình của Tang B, et al [24] feature này được xác định bằng thì của động từ của câu chứa sự kiện Một câu có thể chứa nhiều hơn một động từ nên chúng tôi chọn động từ đầu tiên xuất hiện trong câu
Về feature xác định sự phụ thuộc (Dependency-Time) của một thời gian vào sự kiện đang xét, chúng tôi bỏ qua feature này Nguyên nhân là do đã có một feature khác xác định thời gian gần sự kiện nhất cũng khá tương đồng với feature phụ thuộc thời gian Với 2 khác biệt về feature Tense và Dependency-Time, chúng tôi có kết quả Baseline cao hơn so với Tang B, et al [24] với Precision là 0.8143, Recall là 0.3926 và F-measure là 0.5298
Sau khi thực hiện rút trích ở mức Baseline, chúng tôi xem xét các cặp quan hệ trong cùng một câu Có hai kiểu ghép cặp là cặp sự kiện gần nhau (Consecutive) và cặp sự kiện có sự phụ thuộc (Dependency) Chúng tôi sử dụng Stanford parser giống như Tang B, et al [24] để tìm sự phụ thuộc, với model “englishPCFG.ser.gz” được dùng cho cây phụ thuộc Trong Stanford parser còn có những model khác, tuy nhiên so sánh kết quả thì model englishPCFG.ser.gz cho kết quả giống với mô tả của Tang B, et al Chúng tôi xử lý cây phụ thuộc do Stanford xuất ra theo quy tắc sau:
- Trong cùng một vế câu, chỉ xem xét hai sự kiện nằm trong hai cụm từ có chung gốc và độ cao không quá 3 node con
- Với những sự kiện nằm ở 2 vế câu khác nhau, chúng tôi chỉ xét những cụm từ danh từ có sự phụ thuộc với nhau
Đánh giá hệ thống rút trích trên tiếng tiếng Việt
Việc rút trích sự kiện cho tiếng Việt được thực hiện bằng phương pháp CRF
Các feature được chọn gồm Bag-of-word và Part-of-speech Chúng tôi sử dụng unigram và bigram trong template cho CRF trong giới hạn [-3,3] đối với mỗi từ được xét
Cũng giống như tiếng Anh, Bag-of-word giúp hệ thống rút trích những sự kiện có nội dung giống với những gì đã được huấn luyện Độ đo Precision là 0.9819 và Recall là 0.9659 Những từ chưa được huấn luyện trước không xuất hiện nhiều do đó số lượng sự kiện được nhận sai chiếm tỉ lệ thấp Do đó điểm Recall đạt được có giá trị cao, dẫn tới điểm F-measure cũng khá cao là 0.9738
Part-of-speech giúp hệ thống rút trích những sự kiện có cấu trúc ngữ pháp giống với những sự kiện đã huấn luyện Độ đo Precision là 0.9819 và Recall là 0.9655 Những cấu trúc ngữ pháp chưa được huấn luyện trước không xuất hiện nhiều do đó số lượng sự kiện được nhận sai chiếm tỉ lệ thấp Do đó điểm Recall đạt được có giá trị cao, dẫn tới điểm F-measure cũng khá cao là 0.9736
So sánh hai bộ rút trích sử dụng Bag-of-word và Part-of-speech là feature chúng tôi nhận thấy chênh lệch các số đo không nhiều Tuy nhiên, khi xem xét kết quả rút trích, chúng tôi nhận thấy một số sự kiện xuất hiện trong bộ Bag-of-word nhưng không xuất hiện trong Part-of-speech và ngược lại Do đó chúng tôi kết hợp
Bag-of-word và Part-of-speech cho rút trích sự kiện tiếng Việt Chúng tôi nhận được kết quả cao hơn so với sử dụng riêng lẻ từng feature với độ đo Precision là 0.9823, Recall là 0.9663 và F-measure là 0.9742
Nguyên nhân đầu tiên là do số lượng sự kiện trong bệnh án thấp hơn so với tiếng Anh (2638/13589 đối với dữ liệu kiểm tra) Điều này cũng làm cho số lượng từ vựng biểu diễn sự kiện có sự lặp lại Các bệnh thông thường như nôn, sốt, ho xuất hiện nhiều do đây là các biểu hiện bệnh phổ biến Điều này cũng làm cho số lượng cấu trúc ngữ pháp lặp lại nhiều
Phương pháp Precision Recall F-measure
Bảng 5.10: Các độ đo khi rút trích quan hệ thời gian trên bệnh án tiếng Việt b.Rút trích thời gian Đối với rút trích thời gian, việc rút trích dựa vào phương pháp rule-based Số lượng thời gian được rút trích khá thấp với độ đo Precision là 0.7308, Recall là 0.6569 và F-measure là 0.6918 Dựa vào kết quả đầu ra của rút trích thời gian, chúng tôi nhận thấy hệ thống chỉ tìm thấy các giá trị đầy đủ cấu trúc của kiểu Date,
Time và Duration Ví dụ: "2 ngày", "13/04/2014", "ngày nay",… các giá trị còn lại hệ thống không xác định được chính xác Ví dụ: “40 lần/phút”, đơn vị của
Frequence rất đa dạng và khó nắm bắt Hiện tại chúng tôi vẫn chưa xử lý được các trường hợp ngoại lệ này Đối với Date, chúng tôi đánh dấu “ngày 10.3.2014” là một giá trị cần xác định kiểu Date Tuy nhiên, hệ thống không nhận ra các cụm từ có cấu trúc trên là kiểu Date Do đó số lượng cụm từ đúng cho Date giảm Chúng tôi đã kiểm tra tập rule xác định kiểu Date và nhận thấy các rule cho cấu trúc trên đã được ẩn đi Khi khôi phục lại thì hệ thống cũng không nhận được cụm từ đúng Đây là hạn chế của HeidelTime vì tất cả các rule của HeidelTime không chấp nhận dấu “.” phân cách giữa các giá trị thời gian Mặc khác, giá trị ngày đơn giản như “17/4” có thể nhầm với phân số nên cần có từ “ngày” đứng trước Những giá trị ngày như “17/4” sẽ bị loại bỏ nếu không có từ “ngày” đứng trước Đối với Time, cụm từ “15h chiều t5” không được nhận là Time mà chỉ có cụm từ “15 h chiều” mới được nhận là Time Nguyên nhân là do các rule không nhận được giá trị số trong “15h” Do đó tất cả các giá trị dính liền sẽ bị bỏ qua, các cụm từ đúng cũng giảm đi đáng kể Đối với Duration, vẫn còn trường hợp nhận sai cụm từ Ví dụ “khoảng 1 tháng nay” có thể xác định là Date với cụm từ “tháng nay” hoặc Duration với cụm từ “khoảng 1 tháng” hay “1 tháng” Thực tế trong dữ liệu kiểm tra, chúng tôi chọn cụm từ “1 tháng” thuộc kiểu Duration tuy nhiên HeidelTime đã xác định “tháng nay” là kiểu “Date” Nguyên nhân là do độ ưu tiên của Date cao hơn Duration
Trong đa số trường hợp, các cụm từ chỉ thời gian được xác định với vị trí chính xác do đó các số đo đạt được cũng khả quan Phần lớn thời gian được gán nhãn thuộc kiểu Date, đây là kiểu thời gian được quan tâm nhiều nhất với các rule được viết chi tiết hơn hẳn 3 kiểu còn lại Đó cũng là lý do làm tăng các số đo cho rút trích thời gian c Rút trích quan hệ thời gian
Sau khi thực hiện hệ thống rút trích cho bệnh án tiếng Anh, chúng tôi chuyển đổi từng phần của bộ rút trích sang sử dụng cho bệnh án tiếng Việt Trong tiếng Anh, chỉ có 2 đoạn văn mô tả nội dung bệnh án nhưng tiếng Việt thì nhiều hơn
Tiền sử bệnh của tiếng Việt sẽ gồm 4 phần: lý do nhập viện, bệnh sử, tiền sử, và tóm tắt bệnh án Diễn biến điều trị trong bệnh viện gồm: khám bệnh toàn thân, tuần hoàn, hô hấp, tiêu hóa, thận, thần kinh, cơ, nội tiết và điều trị Cấu trúc bệnh án tiếng Việt không giống với tiếng Anh nên chúng tôi thay đổi các feature cho phù hợp với cấu trúc bệnh án tiếng Việt Đối với Baseline, chúng tôi sử dụng phương pháp SVM mà cụ thể là Liblinear Mục tiêu của baseline là rút trích quan hệ giữa sự kiện với thời gian nhập xuất viện Kết quả chúng tôi thu được độ đo với Precision là 0.9199, Recall là 0.7761 và F-measure là 0.8419
Chúng tôi tập trung vào thông tin vị trí của sự kiện, vị trí sẽ biểu thị sự kiện thuộc nhóm tiền sử bệnh hay nhóm diễn biến điều trị Feature này giúp sự kiện được gán nhãn hơn chính xác hơn Thông số về vị trí cần quan tâm gồm: Nhóm thông tin (sự kiện mô tả tiền sử bệnh hay điều trị trong bệnh viện) và vị trí cụ thể (bệnh sử, khám toàn thân,…) Sự kiện nằm trong nhóm tiền sử bệnh khi ghép với thời gian nhập viện thường cho ra kết quả là sự kiện xảy ra trước Vị trí cụ thể cung cấp thông tin chi tiết hơn: trong nhóm tiền sử bệnh nếu sự kiện có vị trí là “tiền sử” thì xảy ra trước thời gian nhập viện, nếu vị trí là bệnh sử hoặc lý do nhập viện thì sự kiện có thêm khả năng xảy ra trùng với thời gian nhập viện
Một feature khác cho baseline là kiểu của thời gian(Sectime-Type) đang ghép cặp với sự kiện Đây là feature bổ sung có giá trị, thông thường chúng tôi tính toán so sánh thời gian gần sự kiện nhất rồi so sánh với Sectime để đạt được giá trị cho feature Dependency-related Khi không tính được Dependency-related do trong câu chỉ liệt kê sự kiện mà không có thời gian, dựa vào feature Sectime-Type hệ thống có thể dự đoán được nhãn quan hệ.
Trong bệnh án tiếng Anh, số lượng Timex3 xuất hiện nhiều nhưng số lượng quan hệ thời gian giữa sự kiện và thời gian nhập xuất viện không chiếm đa số Do các câu nằm gần nhau luôn phát sinh quan hệ giữa các sự kiện nên số lượng quan hệ giữa các câu và trong cùng một câu sẽ nhiều hơn Trong khi đó, bệnh án tiếng Việt có số lượng Timex3 thấp hơn nhưng quan hệ giữa sự kiện và thời gian nhập xuất viện chiếm số lượng nhiều hơn Giữa các câu với nhau ít phát sinh quan hệ bởi 2 nguyên nhân:
- Các câu gần nhau chủ yếu nêu các triệu chứng cùng xảy ra nên quan hệ khi đánh nhãn chỉ có một kiểu phổ biến là OVERLAP
- Các câu gần nhau có thể chưa có nội dung quan trọng Ví dụ nội dung của khám thận là “chưa phát_hiện bất_thường” hay “bình_thường” các giá trị này thường không được gán nhãn sự kiện nên sẽ không phát sinh quan hệ
TỔNG KẾT
Các đóng góp
Trong luận văn này chúng tôi đã hiện thực lại hệ thống rút trích quan hệ thời gian trong bệnh án điện tử tiếng Anh Đối với từng phần nhỏ trong hệ thống, chúng tôi xây dựng sát với những gì các tác giả trước đã nêu Mục đích là tìm hệ thống phù hợp nhất cho rút trích các quan hệ từ bệnh án điện tử
Chúng tôi cũng so sánh các số đo hiệu quả giữa hệ thống của chúng tôi với các hệ thống đã được đánh giá tốt nhất từ i2b2 2012 Kết quả chúng tôi thu được độ đo F-measure là 0.664 với rút trích sự kiện, F-measure là 0.5404 cho rút trích thời gian và F-measure là 0.5490 cho rút trích quan hệ về thời gian Kết quả này tạm ổn để chúng tôi tiếp tục thực hiện trên tiếng Việt
Sau cùng chúng tôi chuyển đổi hệ thống để phù hợp với bệnh án tiếng Việt
Chúng tôi nhận thấy sử dụng CRF++ rút trích sự kiện đem lại kết quả tốt trong tập dữ liệu của chúng tôi với độ đo F-measure là 0.9742 Đối với Rút trích thời gian, độ đo F-measure chỉ đạt 0.6918 nhưng kết quả tạm ổn HeidelTime vẫn còn khả năng cải tiến trong tương lai giống như Tang B, et al đã thực hiện cải tiến trên tiếng Anh
Kết quả quan tâm nhất vẫn là rút trích quan hệ về thời gian cho tiếng Việt
Chúng tôi thu được độ đo Precision là 0.8261, Recall là 0.7883 và F-measure là 0.8068 Như vậy, việc kết hợp SVM và CRF để rút trích quan hệ về thời gian là một phương án có thể áp dụng cho bệnh án tiếng Việt.
Hạn chế
Số lượng feature chúng tôi áp dụng trong quá trình xây dựng hệ thống tiếng Anh chưa nhiều như các công trình đi trước Điều này làm hạn chế trong việc so sánh kết quả khi sử dụng lượng feature khác nhau Dữ liệu chúng tôi sử dụng chưa thật sự phong phú do số lượng bệnh án thu được chỉ giới hạn trong 262 file
Trong tiếng Việt chưa có các công cụ hỗ trợ rút trích cho các từ chuyên ngành y khoa nên chúng tôi chưa áp dụng được cho tiếng Việt Mặt khác, chúng tôi chưa cải tiến được phần rút trích thời gian cho tiếng Anh cũng như tiếng Việt.
Hướng phát triển đề tài
Chúng tôi nhận thấy rút trích thời gian cho tiếng Anh cũng như tiếng Việt vẫn còn hạn chế Do đó trong tương lai gần chúng tôi sẽ cải thiện phần rút trích thời gian Ngoài ra chúng tôi cũng tiếp tục cải thiện cho phần rút trích quan hệ thời gian để có thể nâng cao kết quả đã đạt được.