崔 浩 劉豐源
(上海計算機軟件技術開發中心 上海 201112)
隨著互聯網技術的迅速發展和大數據時代的到來,電子醫療信息劇增,然而在醫療導診的工作中對電子醫療信息的利用率始終較低,傳統的人工醫療導診繁雜低效依然是大多數醫院的痛點。僅僅依靠醫護人員的導診輔助缺乏一定的高效性,導致病人滿意度下降。與此同時,近年來人們對健康關注度顯著提高,醫院人流高峰出現頻次越來越高,醫療導診人力資源明顯不足,利用機器人智能醫療導診能有效地對醫院患者進行合理分流,同時能讓患者享受到智慧醫療的全新體驗。
隨著醫療信息化的發展,導診工具也逐漸進步[1],機器人已經漸漸走進人們的視野,然而目前還沒有醫療行業大規模實際應用機器人智能導診方案,究其原因主要有以下幾點:
1) 傳統醫院導診工具操作繁瑣,可視化圖形界面理解較為麻煩,不夠友好。
2) 傳統醫院導診工具功能單一,僅僅集成了簡單的查詢功能,不能有效地提供患者所需信息。
3) 導診知識庫信息數據少,缺少人機交互的過程。
智能導診服務機器人是依據醫院導診服務要求而設計開發的專業領域服務應用機器人[2]。它由感知、分析、診斷和優化四部分組成,可通過與患者實時語交互,依據多維度疾病模型,引導患者了解病情,給出合理的導診建議。該機器人基本實現自助分診,提升醫院服務質量,大大減輕醫務員負擔。
基于醫療知識庫的系統架構設計如圖1所示。

圖1 導診機器人系統架構
導診機器人架構總體包含輔助預診、科室導航、疾病癥狀自查、就診流程導診、娛樂休閑、智能迎賓、專家推薦查詢和數據測量等主要模塊,其功能分別如下:
1) 輔助預診:實現機器人與患者的診前輔助,由機器人代替醫生進行患者診前基本信息的確認,后續轉接給醫生確診。
2) 科室導航:通過醫護人員對機器人進行路徑規劃錄入,機器人保存相關科室路徑,后續患者問詢,機器人可實現科室帶路指引功能。
3) 疾病癥狀檢索:系統擁有豐富的醫療知識數據庫,包含疾病、癥狀、藥品、檢查項目等多種百科知識,從多維度對患者所詢問題進行解答和圖形化展示。
4) 就診流程導診:機器人系統整合了醫院的預約、掛號及醫療卡使用等功能,可實現在機器人端進行掛號、預約等功能。
5) 娛樂休閑:機器人整合了多個第三方聊天接口,能在各個方面滿足患者的問詢,包含天氣、交通等通用功能模塊。
6) 智能迎賓:機器人基于人臉信息數據庫來識別范圍內捕捉到的人臉進行比較識別并自定義迎賓操作。
7) 專家推薦查詢:根據患者的問詢進行信息收集,結合患者的情況進行就診專家推薦以及專家信息查詢。
8) 醫院常規數據測量:通過機器人連接外部電子測量儀器,進行智能化測試體溫、心率等常規操作。
系統通過三種路徑進行數據的獲取,分別為語音識別、人臉識別以及傳感器感知,獲取的信息進入系統對話管理模塊,通過系統內部的多模匹配算法以及相關自然語言處理技術結合已有的醫療知識庫,識別患者意圖或者給出咨詢結果。系統依據醫療知識庫中的癥狀數據和病例掛號數據,構建癥狀倒序索引表和科室推薦表[3],患者與系統交互進行語音問診后,采集語音輸入信號進行語音識別,轉換成為文本并提取癥狀信息,依據癥狀信息與癥狀索引表比對,按照相關度對可能的疾病進行排序并得出診斷結果。允許用戶對診斷結果打分和反饋意見錄入,系統將反饋結果作為優化診斷結果的依據。結合疾病診斷結果和科室推薦表為患者推薦掛號科室,同時可以查看疾病更多相關信息。
系統構建了以特征詞庫、對話知識庫、特征向量庫為基礎的醫療知識庫,結合專家矯正后的語料學習,能智能化地解決患者問詢。系統訪問流程如圖2所示。

圖2 系統訪問流程
系統數據源通過語音識別、人臉識別以及傳感器感知獲取,轉換成文本數據,通過自然語言處理技術處理后與醫療知識信息進行多模式匹配[4],得出最優答案,優化后反饋給患者用戶。
句法分析的傳統方法是通過添加分析規則來實現的?;谝巹t的分析方法在大數據量的句法分析過程中存在弊端[5],因此本系統采用基于語料庫的句法分析方法來改良。首先基于系統試運行階段的初期語音采集信息作為基本語料庫,其次依靠人工實現基于依存句法的基本語料庫的詞性標注工作,然后將已經標注好的依存關系構建句法樹矩陣,并依據矩陣抽取每個詞匯的語法結構信息和搭配信息構建成為開放可拓展的知識庫。
在已有知識庫的情況下對句法進一步分析。首先對于采集的句子中的每個詞匯進行分詞,依照知識庫中每個詞所對應的依存關系,構建所有可能的句法樹,形成特殊矩陣。其次根據知識庫和句法公理,篩選合適的中心詞并剔除不合理的依存關系。然后依據句法公理,對剩余的句法樹進行剪枝操作,經過剪枝的句法樹會殘缺,在最后搜索環節中就可以去除所有殘缺的句法樹,大大提高檢索的效率。最后需要對句法分析的效果進行評價和優化,通過結構合理加權系數、詞間適應性系數、比鄰度系數和整體評價四個評價維度進行最終的評價[6]。
用戶在進行信息檢索時的需求已經不僅僅局限在基于關鍵詞模糊查詢的傳統搜索方法中,還需要系統能對用戶的意圖進行識別。意圖識別首先需要確定意圖分類及其特征詞,其大致可以區分為信息檢索型、事務型和導航型三大類,其中信息檢索型意圖又可以細分為其特征詞采用分類算法進行學習歸類[7],最終獲得意圖分類及特征詞劃分表如表1所示。

表1 意圖分類及特征詞劃分表
用戶輸入咨詢內容后,系統基于采集到的信息,分詞得到一系列的意圖特征詞,并根據意圖特征詞的分類嘗試明確用戶搜索意圖。若用戶給出的關鍵詞不在已有的意圖特征詞列表中,則系統會根據已有特征詞的同義詞表進行動態匹配,并提供用戶相應詞語替換建議,輔助用戶進行點選操作,實現有效問題的構建。若在同義詞庫中也無法匹配到對應的關鍵詞,則將該關鍵詞作為新的意圖特征詞插入意圖特征詞庫,并基于特征詞分類算法實現新的特征詞的類別劃分。
系統可以設置多種針對患者的多輪問答場景由機器人主動進行智能問詢及推薦,更加智能化地獲取收集患者的就診信息,為患者提供較好的就診體驗。
Aho-Corasick算法是多模式匹配算法中的經典算法,目前在實際應用中較多,該算法對應的數據機構是Aho-Corasick自動機,簡稱AC自動機[8]。
為了實現與已有醫療知識庫的數據匹配,系統實現了一套以Aho-Corasick為基礎的文本匹配算法。
根據獲取的患者的問詢信息,首先需要進行分詞處理,提取出來的癥狀信息需要被結構化存儲為索引表,基于索引可以大大加速癥狀檢索,提高系統的可用性。癥狀索引表需要至少包含三個屬性,分別是癥狀詞典編碼、國際疾病分類編碼和對應疾病類型數。后兩個屬性在進行診斷時使用。
其次通過多模式匹配獲取到對應的特征向量,基于索引表檢索其是否存在于已有的關鍵詞庫,若存在,則將得到的所有與癥狀相關的疾病都取出,存入到可能結果集合中,作為初始結果集。
然后進行文本相似度的匹配,通過設定閾值驗證,匹配出知識庫中最相近的問答[9]。相關度函數為:
(1)
式中:S為癥狀與疾病的相關度;t為癥狀類型數量,由于不同疾病的描述癥狀數量有所不同,描述癥狀較多的疾病被檢索的概率會高于描述癥狀少的疾病,因此為了消除此類差異,需要采用癥狀數量的平均數來平衡疾病被檢索概率差異問題;q為每個癥狀的特有權重,權重的確定以該癥狀被檢索頻率為依據,高頻癥狀被賦予較高的權重,稀有癥狀被賦予較低權重,并以此權重判定疾病診斷的主要癥狀和次要癥狀;d為每個癥狀在每種疾病的癥狀描述中出現頻率,用于表征某癥狀相對于某疾病的重要程度。對相關度S進行最大-最小值歸一化處理,并將相對相關度作為最終判斷依據按由大到小進行正向排序。
若沒有匹配成功,則對問題使用TF-IDF算法進行重新提取特征關鍵字[10],再次進行AC多模式匹配,若知識庫中沒有結果,則存儲收集到的新的特征值,后續補充特征值對應的答案。
系統給出初步診斷結果以后,用戶可根據自己的實際情況選擇結果列表里最符合病情的幾種疾病,系統需要回傳用戶的反饋給疾病自查系統,重新進行排序展示。
為實現診斷結果的優化,系統會按照如下兩個維度進行自我調整。首先將預診結果疾病癥狀與當前輸入癥狀進行比對,如果該疾病存在主流癥狀但并沒有被用戶作為癥狀輸入,則將該遺漏癥狀加入查詢項。其次結合反饋的疾病列表,對當前輸入的癥狀權重進行調整,次數多的癥狀相應提升權重[11]。
反饋的信息與原來的癥狀信息權重比為α:
α=0.5×((x/max)+1)
(2)
式中:x為某種疾病在反饋疾病列表里的位置,max為該疾病在診斷結果集合中的位置。當二者比值越接近1(即α越接近1)時,說明原診斷結果正確性越高,反之則說明用戶選擇了預診結果集中靠后的疾病,即原預診結果癥狀信息權重不夠合理,理應把用戶選擇的疾病的權重加大,以加強反饋的優化效果。
智能導診服務機器人系統主頁面如圖3所示。

圖3 智能導診服務機器人系統主頁面
這一模塊主要實現系統與用戶的互動,系統內置主動問答流程,可針對“有什么癥狀”、“癥狀持續時間”、“癥狀嚴重程度”等進行提問,同時可以設置多輪對話場景,由機器人更加智能化地問詢來收集用戶的就診信息,將收集到的信息傳送到遠程端統一處理,結合后天分析,及時有效地反饋給用戶準確的答案或者推薦。語音采集頁面如圖4所示。

圖4 語音采集頁面
診斷結果展示頁面分兩部分,第一部分是上方的搜索框,該框可以接收患者輸入的疾病,點擊立即搜索后下面的數據隨即發生變化。在患者無輸入即默認的情況下,該輸入框中提示:請輸入疾病關鍵字。當有輸入后,該框中顯示的是患者所輸入的疾病名稱。疾病搜索頁面如圖5所示。

圖5 疾病搜索頁面
第二部分為下方的數據顯示區域,包括疾病名稱、疾病介紹、疾病對應癥狀和四個鏈接,其中四個鏈接可以跳轉到疾病對應的疾病簡介、典型癥狀、臨床檢查和治療方法的位置。在患者無輸入即默認的情況下,疾病通過疾病表中的權重字段的內容進行排序,其中權重字段中的數據是疾病的熱度值。當患者輸入疾病關鍵字后,下面列表的顯示是從相似度最高到最低來排列。
當患者輸入疾病名稱時,按相似度顯示疾病的信息。從疾病表中獲取全部疾病的名稱,存到列表中,再從疾病別名表中獲取全部疾病的別名,存到列表中。再對列表進行去重處理。接下來,將從前端獲取到的參數和列表中全部的疾病進行相似度匹配,規定的界線為0.5,將所有滿足相似度大于0.5的疾病進行從高到低的排序,再將所有的疾病名稱存入列表中返回給前端。
當患者點擊搜索出來的疾病后,例如感冒,就會跳轉到疾病相關信息展示界面,包含疾病簡介、典型癥狀、發病原因、預防、臨床檢查、鑒別、治療方法、護理、飲食保健和并發癥等相關信息。疾病相關信息展示頁面如圖6所示。

圖6 疾病相關信息展示頁面
依據預診后給出的結果,與科室推薦表聯合查詢后給出推薦掛號就診的科室列表,系統依據科室列表中概率推薦最高的科室,高亮動態展示醫院地圖、患者所在位置、最佳通行途徑等導航信息。同時機器人可以根據已有規劃路徑進行路徑指引,實現智能導診功能。機器人路徑規劃頁面和智能導診頁面分別如圖7和圖8所示。

圖7 機器人路徑規劃頁面

圖8 智能導診展示頁面
本文介紹了一款基于醫療知識庫的智能化導診機器人,并詳細介紹了其系統架構、訪問流程、關鍵技術原理、數據庫設計,給出了關鍵功能的系統展示。智能機器人問診提升了傳統分診系統的交互性差的問題,可以有效解決醫院中人力成本浪費、高峰時段人力資源不足、患者就診體驗差等問題。
系統目前在患者咨詢問題收集訓練數據量上還有所不足,同時醫療知識庫目前只對接了少量醫院的在線電子病歷數據和部分互聯網數據資源,數據量仍有提高空間,因此未來工作可以在基于大量數據的深度學習和知識庫數據量提升方面進行改進。