李琳菊 李亞春 徐宏寧 韋昌法
(湖南中醫(yī)藥大學(xué)信息科學(xué)與工程學(xué)院 長(zhǎng)沙 410208)
中醫(yī)養(yǎng)生是指在中醫(yī)理論指導(dǎo)下通過(guò)中醫(yī)療法頤養(yǎng)生命、增強(qiáng)體質(zhì)、預(yù)防疾病,從而達(dá)到延年益壽目標(biāo)的醫(yī)事活動(dòng)[1]。知識(shí)圖譜是人工智能領(lǐng)域的一項(xiàng)重要技術(shù),具有知識(shí)語(yǔ)義化、易關(guān)聯(lián)、易擴(kuò)充和可視化等優(yōu)點(diǎn),逐漸成為推動(dòng)智慧醫(yī)療的關(guān)鍵技術(shù)之一[2]。知識(shí)圖譜有助于中醫(yī)藥知識(shí)的表達(dá)、關(guān)聯(lián)、整合、共享和應(yīng)用,進(jìn)而實(shí)現(xiàn)智能化、個(gè)性化的中醫(yī)藥知識(shí)服務(wù),在中醫(yī)藥領(lǐng)域具有廣闊的應(yīng)用前景[3-4]。公眾具有了解、學(xué)習(xí)中醫(yī)養(yǎng)生知識(shí)的需求,但缺少快捷獲取權(quán)威可靠養(yǎng)生知識(shí)的渠道[5-6]。因此開(kāi)發(fā)基于知識(shí)圖譜的中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答APP有助于提供權(quán)威、可靠、便捷的中醫(yī)養(yǎng)生知識(shí)服務(wù)。
2021年6月國(guó)家中醫(yī)藥管理局、中央宣傳部、教育部、國(guó)家衛(wèi)生健康委員會(huì)和國(guó)家廣電總局共同制定并印發(fā)《中醫(yī)藥文化傳播行動(dòng)實(shí)施方案(2021-2025年)》,該方案的主要目標(biāo)之一是“中醫(yī)藥文化更廣泛融入群眾生產(chǎn)生活,中醫(yī)藥養(yǎng)生保健知識(shí)和方法更便捷服務(wù)群眾健康需要”,重點(diǎn)任務(wù)之一是“通過(guò)中醫(yī)養(yǎng)生保健體驗(yàn)設(shè)備,幫助群眾更加經(jīng)常接觸到規(guī)范的中醫(yī)藥養(yǎng)生保健知識(shí)”[7]。
中醫(yī)養(yǎng)生在我國(guó)有著悠久的歷史和深厚的文化積淀。隨著我國(guó)經(jīng)濟(jì)的持續(xù)快速發(fā)展,人民群眾的生活水平大幅度提高,對(duì)健康長(zhǎng)壽和高質(zhì)量生活的追求日益提升,對(duì)中醫(yī)養(yǎng)生知識(shí)服務(wù)的需求進(jìn)一步增強(qiáng)。目前介紹中醫(yī)養(yǎng)生保健知識(shí)的書(shū)籍和報(bào)刊數(shù)量較多但是質(zhì)量良莠不齊。大眾通過(guò)上網(wǎng)搜索、閱讀微信公眾號(hào)文章等方式獲得中醫(yī)養(yǎng)生保健知識(shí),但是無(wú)法確認(rèn)知識(shí)可信度。現(xiàn)有養(yǎng)生應(yīng)用程序無(wú)法精準(zhǔn)、高效、便捷地滿(mǎn)足用戶(hù)的養(yǎng)生知識(shí)需求。因此日益增長(zhǎng)的養(yǎng)生知識(shí)需求同落后的養(yǎng)生知識(shí)服務(wù)之間存在矛盾,嚴(yán)重影響公眾利用中醫(yī)養(yǎng)生知識(shí)開(kāi)展自我防病、養(yǎng)生保健的積極性和成效。
中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答APP是積極響應(yīng)國(guó)家政策、服務(wù)群眾健康需要的中醫(yī)養(yǎng)生保健體驗(yàn)設(shè)備。開(kāi)發(fā)基于知識(shí)圖譜的中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答APP,從權(quán)威渠道采集中醫(yī)養(yǎng)生保健知識(shí)進(jìn)而提供便捷的養(yǎng)生知識(shí)服務(wù),對(duì)提升廣大人民群眾的養(yǎng)生保健能力、守護(hù)百姓健康具有重要作用和意義。
基于知識(shí)圖譜的中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答系統(tǒng)以Web系統(tǒng)和APP系統(tǒng)兩種外在形式呈現(xiàn)給用戶(hù)。Web系統(tǒng)通過(guò)電腦網(wǎng)頁(yè)端向用戶(hù)提供中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答服務(wù),而APP系統(tǒng)則通過(guò)手機(jī)端向用戶(hù)提供服務(wù),兩種方式相互補(bǔ)充,便捷地為用戶(hù)提供服務(wù),見(jiàn)圖1。

圖1 基于知識(shí)圖譜的中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答系統(tǒng)架構(gòu)
基于知識(shí)圖譜的中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答APP系統(tǒng)是在Web系統(tǒng)基礎(chǔ)上實(shí)現(xiàn)的。基于權(quán)威可靠的中醫(yī)養(yǎng)生知識(shí)來(lái)源構(gòu)建中醫(yī)養(yǎng)生知識(shí)圖譜,為Web系統(tǒng)的圖譜可視化模塊和智能問(wèn)答模塊提供數(shù)據(jù)支持,Web系統(tǒng)對(duì)外提供數(shù)據(jù)訪(fǎng)問(wèn)接口,APP系統(tǒng)則通過(guò)訪(fǎng)問(wèn)Web系統(tǒng)提供的數(shù)據(jù)接口實(shí)現(xiàn)相關(guān)功能。
3.3.1 中醫(yī)養(yǎng)生知識(shí)圖譜構(gòu)建模塊 通過(guò)人機(jī)結(jié)合梳理書(shū)籍知識(shí)和智能采集網(wǎng)頁(yè)知識(shí)兩種方式獲取中醫(yī)養(yǎng)生知識(shí),進(jìn)而構(gòu)建知識(shí)圖譜。中醫(yī)養(yǎng)生知識(shí)來(lái)源較多,其中兩個(gè)最重要的來(lái)源是以全國(guó)中醫(yī)藥行業(yè)高等教育“十三五”規(guī)劃教材《中醫(yī)養(yǎng)生學(xué)》[1]為代表的中醫(yī)養(yǎng)生權(quán)威書(shū)籍,以及以名老中醫(yī)學(xué)術(shù)經(jīng)驗(yàn)國(guó)家服務(wù)平臺(tái)中的養(yǎng)生保健精品資源庫(kù)[8]為代表的中醫(yī)養(yǎng)生權(quán)威網(wǎng)站。人機(jī)結(jié)合梳理書(shū)籍知識(shí)是指通過(guò)計(jì)算機(jī)程序?qū)χ嗅t(yī)養(yǎng)生權(quán)威書(shū)籍中的知識(shí)進(jìn)行梳理并輔以人工核驗(yàn),通過(guò)這種方式獲得的養(yǎng)生知識(shí)可以直接進(jìn)行結(jié)構(gòu)化處理;而智能采集網(wǎng)頁(yè)知識(shí)是指通過(guò)計(jì)算機(jī)程序智能采集中醫(yī)養(yǎng)生權(quán)威網(wǎng)站上的養(yǎng)生知識(shí),獲取養(yǎng)生知識(shí)的速度更快,但是在對(duì)獲取到的知識(shí)進(jìn)行結(jié)構(gòu)化處理之前需進(jìn)行篩選。智能采集網(wǎng)頁(yè)知識(shí)主要是使用lxml和Xpath的語(yǔ)法來(lái)解析并獲取網(wǎng)頁(yè)數(shù)據(jù)。lxml是Python第3方庫(kù),能夠?qū)tml元素進(jìn)行精準(zhǔn)定位取值,通常用于解析并提取網(wǎng)頁(yè)數(shù)據(jù)。XPath是一種在html/xml文檔中查找信息的語(yǔ)言,可以遍歷html或xml的元素和屬性。智能采集網(wǎng)頁(yè)知識(shí)業(yè)務(wù)的實(shí)現(xiàn)邏輯是通過(guò)Python第3方庫(kù)requests來(lái)得到網(wǎng)頁(yè)信息,使用lxml定位工具將網(wǎng)頁(yè)解析成html數(shù)據(jù),接著使用XPath從html數(shù)據(jù)中將所需數(shù)據(jù)提取出來(lái)。數(shù)據(jù)經(jīng)過(guò)清洗后,整理成特定格式的知識(shí)條目,保存在逗號(hào)分隔值(Comma-Separated Values,CSV)格式文檔中。
3.3.2 中醫(yī)養(yǎng)生知識(shí)圖譜可視化模塊 根據(jù)用戶(hù)需求進(jìn)行養(yǎng)生知識(shí)檢索并予以可視化展示,用戶(hù)輸入需要檢索的中醫(yī)養(yǎng)生關(guān)鍵詞,APP系統(tǒng)將用戶(hù)輸入的關(guān)鍵詞發(fā)送給Web系統(tǒng),Web系統(tǒng)接收后在知識(shí)圖譜中進(jìn)行精確檢索,再將檢索結(jié)果通過(guò)數(shù)據(jù)接口傳遞給APP系統(tǒng),最終由APP系統(tǒng)將結(jié)果直觀(guān)地展示給用戶(hù)。
3.3.3 中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答模塊 根據(jù)用戶(hù)以語(yǔ)音或文字方式輸入的問(wèn)題進(jìn)行理解分析、抽取關(guān)鍵詞,將關(guān)鍵詞發(fā)送給Web系統(tǒng),Web系統(tǒng)在知識(shí)圖譜中進(jìn)行模板匹配、搜索答案,將答案通過(guò)數(shù)據(jù)接口傳遞給APP系統(tǒng),APP系統(tǒng)最終將答案以語(yǔ)音或文字的方式返回給用戶(hù),見(jiàn)圖2。智能問(wèn)答流程主要包括以下步驟:(1)用戶(hù)通過(guò)語(yǔ)音或文字輸入要詢(xún)問(wèn)的問(wèn)題。(2)系統(tǒng)后臺(tái)接收用戶(hù)問(wèn)句,對(duì)問(wèn)句采用完全匹配的方式抽取關(guān)鍵詞。(3)判斷第2步是否成功抽取到關(guān)鍵詞,是則進(jìn)入第5步,否則進(jìn)入第4步。(4)利用jieba分詞工具對(duì)問(wèn)句進(jìn)行分詞,采用模糊匹配的方式通過(guò)相似度計(jì)算抽取關(guān)鍵詞,然后進(jìn)入第5步。(5)判斷前期抽取到的關(guān)鍵詞是否唯一,是則進(jìn)入第7步,否則進(jìn)入第6步。(6)前期抽取到的關(guān)鍵詞有多個(gè),存在關(guān)鍵詞重復(fù)的可能,需進(jìn)行關(guān)鍵詞去重處理,然后進(jìn)入第7步。(7)從用戶(hù)問(wèn)句中獲取方向詞和疑問(wèn)詞。(8)對(duì)方向詞進(jìn)行匹配,獲取方向詞查詢(xún)語(yǔ)句。(9)在中醫(yī)養(yǎng)生知識(shí)圖譜中進(jìn)行查詢(xún),獲取與方向詞相關(guān)的節(jié)點(diǎn)和關(guān)系數(shù)據(jù)。(10)結(jié)合關(guān)鍵詞和疑問(wèn)詞對(duì)上一步獲取到的數(shù)據(jù)進(jìn)行字符串拼接,形成問(wèn)題答案并返回給用戶(hù)。

圖2 中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答模塊業(yè)務(wù)流程
4系統(tǒng)功能實(shí)現(xiàn)
基于知識(shí)圖譜的中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答APP采用的開(kāi)發(fā)語(yǔ)言是Java、Python和Html,開(kāi)發(fā)工具是Android studio和Pycharm。
該APP所使用的養(yǎng)生知識(shí)來(lái)源于中醫(yī)養(yǎng)生權(quán)威書(shū)籍和網(wǎng)站,通過(guò)人機(jī)結(jié)合梳理書(shū)籍知識(shí)和智能采集網(wǎng)頁(yè)知識(shí)這兩種方式獲取到中醫(yī)養(yǎng)生知識(shí)后,需要對(duì)其進(jìn)行結(jié)構(gòu)化處理,抽取中醫(yī)養(yǎng)生知識(shí)關(guān)鍵詞(如水浴、溫泉浴等),構(gòu)成中醫(yī)養(yǎng)生知識(shí)節(jié)點(diǎn)表,見(jiàn)圖3。再將各中醫(yī)養(yǎng)生知識(shí)關(guān)鍵詞通過(guò)某種關(guān)系(如概念、分類(lèi)、作用等)聯(lián)系起來(lái),構(gòu)成中醫(yī)養(yǎng)生知識(shí)關(guān)系,見(jiàn)表1。例如“水浴”和“溫泉浴”這兩個(gè)中醫(yī)養(yǎng)生知識(shí)關(guān)鍵詞通過(guò)關(guān)系詞“分類(lèi)”聯(lián)系起來(lái),表達(dá)的含義是“溫泉浴”是“水浴”的一種類(lèi)型;“水浴”分別和“化學(xué)效應(yīng)”“機(jī)械作用”“溫度刺激”“清潔皮膚”這4個(gè)中醫(yī)養(yǎng)生知識(shí)關(guān)鍵詞通過(guò)關(guān)系詞“作用”聯(lián)系起來(lái),表達(dá)的含義是“水浴”的作用包括了“化學(xué)效應(yīng)”“機(jī)械作用”“溫度刺激”和“清潔皮膚”。將整理好的中醫(yī)養(yǎng)生知識(shí)節(jié)點(diǎn)表和關(guān)系表存儲(chǔ)在CSV文件中,最后通過(guò)Cypher語(yǔ)言批量導(dǎo)入到Neo4j數(shù)據(jù)庫(kù)中,構(gòu)建并存儲(chǔ)中醫(yī)養(yǎng)生知識(shí)的知識(shí)圖譜。開(kāi)發(fā)者可以在Neo4j數(shù)據(jù)庫(kù)平臺(tái)中對(duì)知識(shí)圖譜進(jìn)行查看和管理;而普通用戶(hù)可以通過(guò)中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答APP的圖譜可視化功能對(duì)知識(shí)圖譜進(jìn)行檢索和查看。

圖3 中醫(yī)養(yǎng)生知識(shí)節(jié)點(diǎn)表示例

表1 中醫(yī)養(yǎng)生知識(shí)關(guān)系表示例
中醫(yī)養(yǎng)生知識(shí)圖譜可視化模塊根據(jù)用戶(hù)輸入的檢索詞在養(yǎng)生知識(shí)圖譜中進(jìn)行檢索,對(duì)檢索結(jié)果予以可視化展示。例如當(dāng)用戶(hù)想了解“水浴”相關(guān)知識(shí)時(shí),可以在A(yíng)PP系統(tǒng)查詢(xún)頁(yè)面搜索欄中輸入“水浴”,APP系統(tǒng)將該檢索詞發(fā)送給Web系統(tǒng),Web系統(tǒng)在中醫(yī)養(yǎng)生知識(shí)圖譜中進(jìn)行檢索,將檢索結(jié)果封裝渲染成接口,APP系統(tǒng)利用Webview訪(fǎng)問(wèn)該接口并將結(jié)果展示給用戶(hù)。系統(tǒng)將中醫(yī)養(yǎng)生知識(shí)以圖譜和表格形式展示給用戶(hù),有助于用戶(hù)理解和記憶。
中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答模塊對(duì)用戶(hù)以語(yǔ)音或文字方式輸入的問(wèn)題進(jìn)行自動(dòng)分析并返回答案。智能問(wèn)答實(shí)例的內(nèi)部流程如下:(1)用戶(hù)通過(guò)文字輸入要詢(xún)問(wèn)的問(wèn)題,即“我最近經(jīng)常失眠,聽(tīng)說(shuō)菊花枕可以治療失眠,但是我不知道做一個(gè)菊花枕需要哪些原材料”。(2)系統(tǒng)后臺(tái)接收用戶(hù)問(wèn)句,對(duì)問(wèn)句采用完全匹配的方式抽取關(guān)鍵詞,關(guān)鍵詞有“菊花”“菊花枕”。(3)判斷第2步成功抽取了關(guān)鍵詞,進(jìn)入第4步。(4)判斷前期抽取到的關(guān)鍵詞不唯一,進(jìn)入第5步。(5)前期抽取到的關(guān)鍵詞有多個(gè),存在關(guān)鍵詞重復(fù)的可能,需進(jìn)行關(guān)鍵詞去重處理,然后進(jìn)入第6步。(6)從用戶(hù)問(wèn)句中獲取方向詞和疑問(wèn)詞,方向詞為“原材料”,疑問(wèn)詞為“哪些”。(7)對(duì)方向詞“原材料”進(jìn)行匹配,獲取方向詞查詢(xún)語(yǔ)句。(8)在中醫(yī)養(yǎng)生知識(shí)圖譜中進(jìn)行查詢(xún),獲取與方向詞“原材料”相關(guān)的節(jié)點(diǎn)和關(guān)系數(shù)據(jù)。(9)結(jié)合關(guān)鍵詞“菊花枕”和疑問(wèn)詞“哪些”對(duì)上一步獲取到的數(shù)據(jù)進(jìn)行字符串拼接,形成問(wèn)題答案并返回給用戶(hù)。
本文分析公眾對(duì)中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答APP的需求,介紹中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答APP設(shè)計(jì)方案和實(shí)現(xiàn)過(guò)程,展示中醫(yī)養(yǎng)生知識(shí)圖譜構(gòu)建、中醫(yī)養(yǎng)生知識(shí)圖譜可視化、中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答模塊實(shí)現(xiàn)效果。目前基于知識(shí)圖譜的中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答APP已獲得國(guó)家版權(quán)局計(jì)算機(jī)軟件著作權(quán)登記證書(shū)。構(gòu)建中醫(yī)養(yǎng)生知識(shí)智能問(wèn)答APP,從權(quán)威渠道采集可靠的中醫(yī)養(yǎng)生保健知識(shí),為公眾提供可信、可靠、便捷的中醫(yī)養(yǎng)生保健知識(shí)服務(wù),既積極響應(yīng)國(guó)家相關(guān)政策又切實(shí)服務(wù)于大眾健康需求,對(duì)提升公眾養(yǎng)生保健能力、守護(hù)公眾健康具有重要作用和意義。