基于NLG算法的智慧醫療:應用場景和構建經驗
在未來一段時間內,業務定制NLP系統將仍是真正能幫助大型智慧醫療行業達成業務目標的重要系統之一,也是AI落地的主戰場之一。
人工智能正處于非?;馃岬臅r期,自然語言處理(NLP)領域也令人興奮了十年。
在閱讀理解、語言翻譯和創意寫作等復雜的任務上,計算機的表現將會和人類一樣出色。語言理解能力受益于免費的深度學習庫(如Pytext和BERT這樣的語言模型),大數據(Hadoop,Spark,Spark NLP),以及云計算(提供GPU和與服務商的NLP服務功能)。
目前市面上做自然語言處理領域的公司有:騰訊、科大訊飛、微軟、思必馳、華為等。
在醫療領域,一些應用已經從科幻小說變為現實。
人工智能系統通過了中國和英國的醫學執照考試 ,而且它們比普通醫生考得更好。最新的系統比初級醫生能更好地診斷出55種兒科疾病。
但是,這些系統比第一批計算機視覺深度學習應用(例如研究一個圖像)中的一些更難構建,因為它們需要具有更廣泛常見的醫學知識,要處理更多種類的輸入,并且必須理解上下文。
我很幸運能夠參與構建醫療領域的NLP系統。
本文旨在分享我學到的一些知識,從而希望能幫助你更快更好地構建類似的系統。
一、什么是NLG,它是如何工作的?
自然語言處理由自然語言理解(NLU)和自然語言生成(NLG)構成。
NLG是計算機的“編寫語言”,它將結構化數據轉換為文本,以人類語言表達。即能夠根據一些關鍵信息及其在機器內部的表達形式,經過一個規劃過程,來自動生成一段高質量的自然語言文本。
如今的數據量巨大,人們根本處理不過來;NLG把數據人性化,幫助人們處理。
NLG系統使用數據分析和人工智能技術來分析復雜的數據集,并采用計算語言學技術在高品質的文字說明來交流分析結果。
NLG的工作原理:輸入抽象的命題,然后對你輸入的自然語言進行語義分析、語法分析進行語言組織然后生成無限接近你想要的文本。
例子:輸入麥當娜,接下來通過NLG自然語言生成:麥當娜 “歌星”
二、NLG算法在智慧醫療領域應用有哪些?
三、NLG算法對患者影響有哪些?
NLG可以用來幫助患者,讓他們了解自己的健康狀況,并對自身的醫療保健作出更好的選擇;NLG還可以幫助患者更好地照顧自己:包括改變生活方式、自我管理慢性疾病、并配合治療方案。
例如,許多糖尿病患者都有測量血糖水平的傳感器,但他們很難利用這些信息來管理他們的糖尿病,因為他們通??床欢疁y量結果,所以當他們看到血糖變化時,往往過度反應。NLG系統可以解釋和情境化血糖的任何變化,并幫助糖尿病患者作出適當的反應。
四、NLG算法對醫護人員影響有哪些?
臨床醫生最熱衷于報告自動化工具,因為他們認為其有兩個好處:自動化節省了他們的時間;自動化還意味著更少的錯誤和遺漏,以及數據的一致性。
我已經在該領域上的幾個系統工作過,主要是產生交接報告(護理交接班,第一急救者移交醫務人員),并且知道在這個領域許多其他NLG項目。
我覺得使用NLG為臨床提供決策支持有很大的潛力,確實有大量的證據表明,臨床醫生目前來看數據的方式(通過可視化或表格)有時不是很有效。而文本概括可以通過突出顯示可視化看不到的重要信息來幫助決策。事實上,自動撰寫報告比臨床決策支持的賣點更突出。
最重要的是用NLG來加強病人對病情的了解和支持病人,更好的作出治療方案。
五、NLG構建的一些經驗
1. 現成可用的NLP模型不起作用
在系統構建的實踐中,為中文構建的現成的NLP庫和算法在醫療行業的這種“不同的語言”上會遇到各種挫敗。
不僅是因為命名實體識別或實體解析模型會失敗,甚至像符號化、詞性標注和句子分割這樣的基本任務,現成的模型對大多數醫療行業的句子都沒用。
再者醫療行業有數百種語言,千萬不要去建立通用的醫療NLP系統?,F實是,每個子專業和它的溝通形式都和別專業根本不同,你根本無法做到統一通用。
而且,每個醫學專業都有很多變化。例如,對于決定是否批準針對MRI的預授權請求,針對植入式脊髓刺激器,需要從預授權表格中查看的項目內容就和別的請求完全不同。另一個例子是在病理學中使用不同的術語來討論不同類型的癌癥。
這些對實際問題會帶來影響:我所工作的公司正在進行一個項目,該項目需要訓練不同的NLP模型,以從病理報告中提取有關肺癌、乳腺癌和結腸癌的事實。
到目前為止,亞馬遜的Comprehend Medical僅關注藥物價值的正規化(參見上面最后一個“阿司匹林”的例子)。該服務還具有標準的醫療命名實體識別功能,但不能滿足任何特定應用的需求。
我從以下流行的NLP云服務自測,通過幾個平臺的測試。
- IBM Watson NLU
- Google Cloud Natural Language
- SpaCy Named Entity Visualizer
- Azure Text Analytics
- Amazon Comprehend(offline)
- 斯坦福大學Core NLP
進行的一項測試中,上述六個引擎唯一識別出的醫學術語(其中只有兩個引擎識別了出來)是Tylenol(泰諾)是個產品。
2. 如何自建NLP?
了解到“醫療行業的語言”與人類語言是多么的不同。
以下是我們構建的一些項目內容:
1)基于深度學習的句子分割
雖然分割維基百科文章的句子通常只需要使用正則表達式就可以完成,但處理很多頁的臨床文檔是一個更大的挑戰。特別是,算法必須應對頁眉和頁腳、列表、枚舉、標注、兩欄格式和其他的格式問題。
2)醫療行業特定的詞性標注
不僅需要不同的模型,而且額外的詞性標注也被用于醫療行業的模型。之所以這樣做是因為它確實提高了醫學命名實體識別的準確性。
3)醫療行業特定正規化算法
在實際項目里,命名實體識別自己一般是無用的。從“雙眼似乎被感染”里識別“眼睛”和“感染”是醫學術語并沒有多大用處。
相反,根據標準SNOMED-CT臨床術語將整個文本塊標記為代碼312132001,同時針對用不同方式對描述相同發現進行正規化則更加有用。這使你的應用能基于此代碼來構建業務邏輯,而不管它是如何正規化的,或者更確切地說,不管它是如何在原來的文本中被表達的。
3. 從數據標注開始構建項目
構建一個AI系統有一種方法是從構建標注驗證數據集。例如,如果你對自動化門診病例成ICD-10編碼感興趣,請讓臨床醫生定義一些代表性樣本,對樣本進行脫敏,并讓專業的臨床編碼人員對其進行標注(分配正確的代碼)。
如果你有興趣從放射學報告中提取關鍵事件或從患者病例中找出被忽視的安全事件,請首先讓臨床醫生定義一些樣本,并正確標注。
題外話:你們就會看到各種AI大公司的JD有數據標注師這么一說,標注師的薪資范圍比較大,要看行業領域的門檻,比如:醫療行業的會薪資會比較高,也有大部分是兼職的。
這樣做通常會在讓數據科學團隊加入(并浪費很多時間)前提前發現一些“坑”。如果你無法獲得足夠的數據,或者無法大規模地進行脫敏,那就無法構建可靠的模型。
如果在某些情況下臨床醫生不能一致同意正確的標注,那么要解決的第一個問題是就臨床指南達成一致,而不是讓數據科學家參與嘗試去自動化這種不一致。
最后,如果你發現自己面臨非常不平衡的類別(比如你尋找的是每年只有少數人患病的情況),那么在引入數據科學家之前修改問題的定義可能是明智之舉。
標注的驗證集以及數據集其目標是使用標準庫或云服務來發現它們能達到的滿足用戶特定需求的最高準確度。
這樣做就可以評估下面每項服務的難易程度,包括:訓練自定義的模型、定義領域專有的特征、解決方案所需的pipeline步驟和把結果解釋給客戶。
一旦有了一個有代表性的和已商定并正確標注的驗證集,你就可以開始用它來測試現有的庫和云服務提供商的服務了。很可能的是,這個測試將立即發現每個產品與你的需求之間的差距。
六、總結
我在本文中,是從對醫療業務框架的拆解出發,對NLP定制型醫療服務各方面的產品設計要點做了簡要介紹。
在未來一段時間內,業務定制NLP系統將仍是真正能幫助大型智慧醫療行業達成業務目標的重要系統之一,也是AI落地的主戰場之一。
本文由 @pms-rolia 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協議
可以說一說AI醫療這個領域的產品經理學習路徑嗎? ??