星期日, 7月 07, 2024

第一次學 Tampermonkey 腳本成功上手

這次學新東西的動機是為了手上的研究題目。上次成功挑戰一人標 6000 份資料的 NLP 研究題目。這次新題目,研究過 related work 後保險起見,決定用多一點的樣本,以確保可發表性,然後就腦子一抽收了 10000 份了(這還不是同類 study 中第一多的 OwO 當然我們有另外的賣點)。這次資料至少標三個 feature,其中一個 feature 是原始醫囑與放射科報告的分段,是否為 one-to-one 的關係,例如原醫囑是 L spine AP + Lat. 以及 L spine Flex.+Ext. 共兩筆,放射科醫師整合成一份 L spine 報告,就變成 many-to-one。

因為樣本量大的關係,一開始先用 regular expression 以及一些簡單邏輯去做 prelabeling ,再根據 prelabeling 先自動排序一輪方便後續檢視,這些自動化標注是一定有的,但標完還是得檢查自動標的對不對,然後痛苦就開始了。

原本使用的 doccano 標注軟體,就只是個標注軟體,沒辦法自動 highlight 報告中的 subsection 讓人一眼看出報告分成幾段,也不能將醫囑中同一部位有多個 view 的醫囑(例如 Chest PA 及 Chest Rt Lat,這種醫囑容易在報告中被「合併報告」)自動標出,人工 check label 真是十分痛苦。

剛看了兩三千份就決的有點難做了,覺的要嘛少收點(但又怕未來投稿失敗)要嘛得整一套更方便檢視的工具才有辦法做。第一時間想到用惠我良多的 Bootstrap Datatable 做個簡易編輯器,但研究後發現,要加入 CRUD edit 功能就得付費,還得自己鎚後端出來。在不知道怎麼辦的時候,注意到在 Firefox console 下可以很方便的去修改、Highlight doccano DOM 中的文字和排版,就想到也許可以用 patch UI 的方式來做。

於是在 console 弄懂幾個操作 doccano DOM 的關鍵點後,在 ChatGPT 的輔助下,成功在一兩小時內鎚出「真.強化版.doccano」。原始 UI 被我加了幾個 control,可以用 regular expression 去自動 highlight 報告疑似 subsection head 的部份,另外加個 panel,把同一個部位有好幾個不同 view 的部位特別提醒。做完這些後標資料的速度就爆增,至少在這個 feature 努力點可以一天 review 一千份 label。

未來第二、第三個 feature 預期可以用 AI 標再人為抓錯,但一樣需要輔助工具,預期拿這套腳本改一下再弄個不同的「強化 UI」出來。腳本基本沒有通用性,一個任務要改 N 次。不過樣本量大,也值得特事特辦了。


如圖,畫面左下角紅字 Skull 表示照 Skull 的醫囑有兩筆或以上(本例為 Mandible 以及 Nasal bone),多了個 form 可以打 regular expression,作到把「分段」標出來(圖中綠色文字)


 

 

全文連結

0 意見: