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