文章編號: 2095-2163(2018)03-0102-06中圖分類號: 文獻標志碼: A
摘要: [HT6SS〗隨著人們生活水平的提高,甲狀腺結節類疾病日漸成為當代人的一種常見疾病,而中國國內醫療資源分布不均,造成了大醫院人滿為患,醫生名下病人多,病人看病時間長等問題,許多病人想要看病在花費大量金錢的同時還要耗費大量時間。隨著互聯網技術以及計算機技術的發展,越來越多的病人為了節省時間,在趕往醫院前,往往會在網絡上對自己的病癥進行相關查詢,所以市面上出現了醫生網上答診和病人在線問診的醫療咨詢系統,一對一為病人回答問題。此舉將醫生提供給不能定時提問的網上咨詢的患者的同時、會造成醫院內醫生資源更加緊缺的狀況,且網上在線系統大多僅包括導診流程,即幫助病人在前往醫院確診前對自己的病癥有初步了解,并未涉及到病種診斷治療,無法達到節約病人的時間的目的。 因此,針對上述狀況,本文選取甲狀腺結節類病種數據為研究對象,對甲狀腺真實數據進行重點的分析,創建甲狀腺知識圖譜,基于該知識圖譜,設計并實現一個面向甲狀腺診療的自動問答系統,本系統可以有效地回答病人在甲狀腺類疾病方面的用藥以及檢查等方面的問題,節約病人問診時間的同時,醫生可以使用該系統對患者以及處方等信息進行相關查詢,更加快速便捷,節約了醫生的時間。
關鍵詞: automatic question answering system based on thyroid knowledge map
(School of Computer Science and Technology, Donghua University, Shanghai 201620, China)
Abstract: With the improvement of people's living standards, thyroid nodule disease has become a common disease of the contemporary people. While China's domestic medical resources are unevenly distributed, the top-three hospitals are mainly concentrated in Beijing、 Shanghai and Guangzhou, resulting in overcrowding in large hospitals. It is required that many patients spend long time and a lot of money for seeing a doctor. With the development of Internet technology and computer technology, more and more patients often search for their own conditions on the Internet before going to the hospital to save time. So there is a medical consultation system on the market where doctors give online consultations and patients online consultations. One-on-one answers questions for the patient, which provides doctors with patients who do not regularly ask online consultation. At the same time, the situation of doctors in hospitals will become more scarce, and most of the online online systems only include the consultation process, which means that they can help patients to get a preliminary understanding of their own conditions before going to the hospital for diagnosis. The diagnosis and treatment of the diseases could not be involved and the purpose of saving the patient's time could not be achieved. Therefore, in view of the above situation, this study selects thyroid nodule disease data as the research object, analyzes the characteristics of the thyroid true data, creates a thyroid knowledge map, further designs and implements an automated question and answer system for thyroid diagnosis and treatment based on this knowledge map. The system can effectively answer questions about the patient's thyroid diseases such as medications and examinations, save doctors' time, and doctors can use this system to make relevant queries on patients and prescriptions, which is more rapid and convenient.
Key words:
作者簡介:
收稿日期: 引言
為了解決病人掛號難,看病難的問題,各家醫院均紛紛出臺利民舉措。專門地,針對甲狀腺結節類疾病,許多醫院及網站就推行了該類疾病的病情問答版塊,如:好大夫在線網[1]、尋醫問藥網。病人可以通過互聯網與醫生開展在線的語音或文字的交流,但此舉卻將消耗大量人力物力,更多的醫生在線診療就意味著更少的醫生會在一線的醫院對病人施以治療,由于病人在線問診時間的不確定,醫生的在線等待就避免不了時間的浪費。為了緩解醫療壓力,提高醫療資源的利用率,降低醫療支出,本文研究建立有關甲狀腺類疾病信息的知識圖譜,并基于該知識圖譜設計實現自動問答系統,患者、醫生、醫院通過使用系統可以迅速獲取自己需要了解的信息,從而達到高效化、自動化、信息化服務于社會的目的。
英國數學家圖靈[2]在1950年首次提出了 “機器智能”和“圖靈測試”[3],這可視作為自動問答系統的前身。圖靈測試是使測試者—輸入問題的用戶,對計算機進行自然語言問題的輸入,通過輸出結果判斷計算機是否具備人的智能。如果有超過30%的測試者不能確定出被測試者是人還是機器,那么這臺機器就通過了測試,可以用作問答系統。
國內外在自動問答系統方面的研究已歷經了較長的發展時期。上世紀60到70年代的問答系統主要依賴搜索技術,對查詢相關的文檔進行檢索,例如Yahoo早期的answer and quora。上世紀70年代開始,自動問答系統大多以結構化知識庫為基礎,將用戶輸入的自然語言轉換為機器可識別的結構化查詢語言,通過搜索知識庫最終得到結果。該階段的研究實例主要包括SQL[4]、SPARQL[5]等。80年代以來,人工智能即進入了蓬勃發展期,而且其研究成果層出不窮,在很多項目均有重大斬獲。而如今,基于知識圖譜的自動問答系統已經成為問答系統的主流,眾所周知的SIRI就是以知識圖譜為基礎設計并研發成型的,IBM的Watson系統[6]也是國外認知計算[7]系統的成功范本,基于知識圖譜的問答系統包含信息分析、自然語言處理和機器學習領域的大量技術創新,能夠幫助使用者從大量非結構化數據中得到所需的具體信息。
目前,隨著人們生活水平的提高,人們對于醫療健康的需求也逐年增長。但患者基數大,健康資源供給遠遠滯后于需求的增長,并呈現分布不均衡的狀態[8]。全國三甲醫院主要集中分布在中、東部地區,西部地區健康資源稀缺。龐大的健康需求將推動尋找研發更加有效的方式為人們提供健康服務。近幾年,國內居民醫療支出呈現遞增態勢,也給在線醫療產業帶來了發展契機,同時這也給自動問答系統的技術研究創造了實踐機遇與應用空間。目前國內并沒有甲狀腺結節類疾病專用的自動問答系統,本文研究的即是甲狀腺類疾病領域的自動問答系統,在將大量有關甲狀腺類疾病信息做出有效匯總整合后,創建生成了甲狀腺知識圖譜,基于該知識圖譜設計給出了有關甲狀腺類疾病的自動問答系統。用戶輸入問題,在系統中對輸入的自然語言進行命名實體識別、依存句法分析等處理,轉換為Sparql查詢語言,通過識別語義,匹配不同語義的不同模板在知識圖譜內進行查詢,由此獲取到答案。最后,在Java平臺上實現了基于甲狀腺知識圖譜的自動問答系統,通過多次實驗初步證明了系統的可用性。
1系統架構
系統以用戶在醫院的問診流程為基礎,根據用戶關心問題構建知識圖譜,并遵循自動問答系統的問答流程,本系統設計有良好的人機交互界面,用戶通過輸入有關甲狀腺相關的自然語言問題,經過系統處理后得到簡單準確的自然語言答案。
整個系統分為3部分,可對其闡釋如下:
(1)是用戶在瀏覽器所看到的人機交互界面,用戶在系統外部界面輸入自然語言問題。
(2)是存儲甲狀腺類疾病相關信息的知識圖譜,根據存儲甲狀腺相關信息Sql Server數據庫設計知識圖譜。
(3)系統內部的功能處理模塊,以(2)中涉及的知識圖譜為基礎,系統內部接受(1)中用戶輸入的問題后,將該問題進行命名實體識別與詞性標注,根據識別后的實體,將用戶輸入的自然語言問題劃定分類,再根據不同類別,匹配不同的查詢模板,使用模板研發得到用戶求索問題的最終答案。研究可得,系統設計架構如圖1所示。
2相關技術
2.1甲狀腺知識圖譜的構建
本系統甲狀腺知識圖譜根據Sql Server數據庫[9]中存儲的三甲醫院甲狀腺類疾病信息構建,包括患者信息實體、藥品使用信息實體,診斷數據實體等、實體之間存在很多聯系,由于數據庫內數據整齊,可以規范解析實體和實體之間的關系來形成整個知識圖譜,利用形成的知識圖譜提供具體且豐富的語義關系,用戶可以更為直接地觀察到實體數據以及實體的聯系。
2.1.1構建流程
本次設計的總體流程為:首先,根據數據庫中不同表的不同數據,結合初始甲狀腺結節就診記錄,提煉出甲狀腺知識圖譜的概念層,構建概念分類樹并抽取數據之間的關系。而后,將表中數據、即實體填充進概念層中,以三元組、即<實體,關系,實體>的形式,得到完整的甲狀腺知識圖譜。
2.1.2概念層設計
對甲狀腺數據庫中數據進行分類,研究得到如下醫學實體定義。
定義1甲狀腺醫學實體包括甲狀腺患者實體、基本信息實體、甲狀腺診斷結果實體、甲狀腺用藥實體等。
在定義了甲狀腺醫學實體之后,可以構建甲狀腺知識圖譜的概念分類樹如圖2所示。
定義2甲狀腺事實關系實體甲狀腺事實關系表示不同甲狀腺醫學實體間產生的聯系,如<病人,入院診斷,甲狀腺腫>。其中,病人、甲狀腺腫均為甲狀腺醫學實體,而入院診斷為甲狀腺事實關系實體,甲狀腺事實關系類型主要包括內容可見如下:
(1)X has Y關系:表示實體Y隸屬于實體X的關系。
(2)X attribute_of Y 關系:表示實體Y擁有一個屬性實體X。
(3)X use drug Y 關系:表示病癥實體X使用藥品實體Y。
(4)X diagnosis Y 關系:表示檢驗報告實體Y的診斷結果為實體X,實體間為診斷關系。
在給出了甲狀腺醫學實體和甲狀腺事實關系實體定義后,甲狀腺知識圖譜的概念層的定制設計可如圖2所示。
2.1.3實體填充設計
在探討了概念層設計后,可以實體填充方式創建本體,通過實體映射的方法,將概念層中的概念與數據庫中實體一一對應,本文采用的是BFS廣度優先算法,對創建的概念樹進行填充,得到知識圖譜。輸入已得到實現的概念分類樹T、概念層中的概念集合C以及定義后的實體集合E,輸出研發運行后的甲狀腺知識圖譜G,保證輸出后的知識圖譜是以三元組的形式構建的。算法偽代碼如下:
map = CreateMap(C,E)BFS(T,map) Enqueue(root); While(!queue) Node=dequeue(); For v in ChildrenNodes(node):if v is leaf node T.add(map.get(v.c)); Enqueue(v);CreateSequentialTuples(T)[JP3]E+Relation+Time=ExtractFromTree(T);[JP] For head in E For tail in E For relation in RelationsortedTuples = SortByTime(head,relation,tail,Time)k = FindKthRel(sortedTuples);Tuples.add(head,rel|k,tail)return Tuples至此,研究得到實體填充的運行流程可表述為:首先,創建映射表。根據實體屬于概念樹中某一概念的原則,構造得出概念到實體間的映射表如圖3所示。[PS馬晨浩3.EPS;S*2;X*2,BP#][HT6H][ST6HZ][WT6HZ][JZ]圖3映射表[JZ]Fig. 3Mapping table[HT5SS][ST5BZ][WT5BZ]其次,根據一一對應的映射表,進行實體填充。通過BFS廣度優先遍歷將映射表中的實例實體存放在對應的子節點中,使每個實體都有自己的屬性以及屬性值,如患者A屬于患者實體類,則將“患者A”實例化為患者實體的姓名屬性值。[JP3]最后,抽取實體和關系,綜合確定三元組,形成最終的甲狀腺知識圖譜,以rdf文件的形式送入存儲。[JP][BT5]2.2用戶自然語言問題處理[JP2]在預期構建了甲狀腺知識圖譜后,系統首先對知識圖譜的各實體進行存儲,將所有實體存入表中,方便日后查詢。此后將立足于研究用戶提問的部分,即需要對用戶輸入的自然語言問題進行處理,得到計算機查詢語句后才能在知識圖譜中進一步展開查詢。[JP]對于用戶提出的自然語言問題,系統內部對其實現了一定的預處理。首先進行中文分詞、命名實體識別,在得到各實體后,就是辨識用戶問題的類別。不同類別的問題,將調取系統中不同的模板,并將提取出的關鍵詞輔以依存句法分析,得到關鍵詞的語法關系,再與存有知識圖譜實體的表經過測試比對后,將比對成功的關鍵詞,根據分析后的語法關系,傳入模板,執行查詢。2.2.1最大匹配算法設計綜述目前,中文分詞大多采用最大匹配算法進行操作。最大匹配是指以詞典為基礎,擷取詞典中最長單詞作為首個選取字數量的掃描串,在詞典中依序搜索掃描(為提升掃描效率,還可以依據字數不同設計多份字典,而后則根據字數從不同字典中分別來提速掃描)。而最大匹配算法,則可分為最大正向匹配算法和最大逆向匹配分詞算法。這2個算法都將定義一個最大詞長m。其中,最大正向匹配算法在收到自然語言字符串后,從左向右取待切分漢語句的m個字符作為匹配字段,切分出詞長不大于最大詞長的候選字符串,將候選字符串在已建立好的詞庫中進行查詢,若匹配成功,則將這個匹配字段作為一個詞切分出來。 若匹配不成功,則將這個匹配字段的最后一個字去掉,剩下的字符串作為新的匹配字段,進行再次匹配,重復以上過程,直到切分出所有詞為止。與最大正向匹配算法不同,最大逆向匹配算法由右至左對字符串進行切分,若匹配不成功,則將匹配字段的最前一個字去掉。一般來說,逆向匹配的切分精度略高于正向匹配。統計結果表明[10],單純使用最大正向匹配錯誤率為1/169,單純使用逆向最大匹配錯誤率則為1/245。為了滿足系統內部需要,本文結合正向匹配和逆向匹配算法的優點,采用雙向最大匹配算法。雙向最大匹配法是將正向最大匹配法得到的分詞結果和逆向最大匹配法得到的結果加以衡量比較,從而決定正確的分詞方法。根據Sun等人的研究[11],中文方面大約90.0%左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正確;只有大約9.0%的句子對于這2種切分方法得到的結果不一樣,但其中必有一個是正確的;而僅有少于1.0%的句子,或者正向最大匹配法和逆向最大匹配法的切分雖重合卻是錯的,或者正向最大匹配法和逆向最大匹配法切分不同但2個都不對。因此可知,雙向最大匹配法能得到更高的準確率,這一點將是毋庸置疑的。算法的偽代碼設計內容如下:Vector