# 醫學命名實體識別(Medical NER)任務介紹 <!-- ## Hackmd Link --> <!-- ## https://hackmd.io/@normal/mi2sMER --> <!-- ![](https://hackmd.io/_uploads/Hk86Rs2f6.png) --> ## 什麼是 MER ? 醫學命名實體識別(Medical Named Entity Recognition)是一項自然語言處理(NLP)任務,旨在==辨識和抽取醫學文本中的有用資訊==。這些資訊可能包括**疾病、藥物、症狀、治療方法、醫學專有名詞**等。醫學 NER 的目標是從大量醫學文本中自動標識這些實體,以幫助醫學研究、臨床記錄和文獻檢索等應用。 ## 任務範例 - 疾病: - 文本:**患者被診斷出患有乳腺癌** - NER 結果:==乳腺癌==。 - 藥物名稱: - 文本:**醫生建議開始服用阿司匹林作為心臟保護** - NER 結果:==阿司匹林==。 - 症狀: - 文本:**患者報告有嚴重的頭痛和噁心** - NER 結果:==頭痛==、==噁心== - 治療方法: - 文本:**患者正在接受放射線治療** - NER 結果:==放射線治療== ## 綜合任務 - 文本:**病患呼吸不適持續一個多禮拜,心臟抽痛多天,SPO2,99%** - NER 結果: - 時間:==一個多禮拜== - 症狀:==呼吸不適==、==心臟抽痛== - 縮寫:==SPO2== ## ~~[資料集連結](https://drive.google.com/drive/folders/1nX0Nt2sxKUtZ65yYMZJkxav1ftuurY7g?usp=sharing) $\Leftarrow$ 點這裡看資料~~ 已移至 NAS shared 資料夾 ## CoNLL 2003 IOB 標記法 在 NER 任務中,通常使用 CoNLL 2003 IOB(Inside, Outside, Beginning)標記法來標記實體,它具有以下標記方式: - B : Begin - I : Inside - E : End - S : Single - O : Outside `B-XXX` $\Rightarrow$ 這是實體 `XXX` 的開頭 `I-XXX` $\Rightarrow$ 這是實體 `XXX` 的中間 `E-XXX` $\Rightarrow$ 這是實體 `XXX` 的結尾 `S-XXX` $\Rightarrow$ 這是單一個字的實體 `XXX` `O` $\Rightarrow$ 這是這不是一個實體 ## [Colab](https://colab.research.google.com/?hl=zh-tw) $\Leftarrow$ 點這裡看 colab 官方簡介 Colab(Colaboratory)是 Google 開發的一個免費的雲端環境。它結合了 Jupyter 筆記本和 Google 雲端計算資源,可讓你在瀏覽器中編寫及執行 Python 程式碼,並具有以下優點: - 省略開發前的任何設定 - 免付費使用 GPU (有用量限制) - 與別人共同開發 - 使用 HTML、LaTeX 寫程式碼註解 ## 作業說明 ### 1. Tags and their meaning ``` O: outer of entity B: begin of entity I: inner of entity E: end of entity S: single word Tim: Time (相對時間/絕對時間) Org: Organs (身體部位/器官) Sym: Symptoms (症狀) Abb: Abbreviation (縮寫) Exa: Examination (檢查) Dis: Diseases (疾病名稱) Dep: Department (部門/科別) Tre: Treatment (治療方式/用具) Med: Medicine (藥名) Hea: Protected Health Information (病人資訊) ``` ### 2. Files + 訓練集: `train.txt` + 測試集: `test.txt` + 字符集: `vocabs.txt` + 標籤集: `tags.txt` ### 3. 評分 實作三個 NER models,並且在測試集上進行測試,計算 ==precision==, ==recall==, ==f1-score==,==及各個類別的分類結果==,可以附上文件,說明有什麼發現、遇到什麼困難及怎麼解決、錯誤分析。 - CRF - BiLSTM-CRF - BERT 有提供另一個資料集 `Dataset2` 也可以試試看 #### 3-1 繳交 1. ~~建立自己的資料夾,以學號命名,如: `P12345678`~~ 2. ~~在資料夾中放入自己的程式碼 (`.py` or `.ipynb`) 以及分數截圖~~ 3. ==繳交到 moodle 上,程式碼、執行結果截圖== ## 錯誤分析 ![](https://hackmd.io/_uploads/Sy_Ez3hMT.png) ### 錯誤一 : 身體部位 (I) - 資料集中的標記規則不一致 - 某些「身體部位」有前綴修飾詞,某些則無,如 - 雙、右、左、下、上 - 雙手 $\Rightarrow$ 手 - 雙腳 $\Rightarrow$ 腳 - 上腹部 $\Rightarrow$ 腹部 - 左胸口 $\Rightarrow$ 胸口 - 右臉 $\Rightarrow$ 臉 :::spoiler ![](https://hackmd.io/_uploads/S10kth2zp.png) ::: ### 錯誤二 : 縮寫 (S) - 標點符號被誤標成 `S-Abb` - 可以在訓練前,去除標點符號,但可能會犧牲一點上下文資訊 ![](https://hackmd.io/_uploads/r1wC33hGa.png) :::spoiler ![](https://hackmd.io/_uploads/H1eRs22GT.png) :::