洪海藍(lán),李文林,2**,楊濤,李玥,梅文靜
(1.南京中醫(yī)藥大學(xué)人工智能與信息技術(shù)學(xué)院 南京 210023;2.江蘇省中醫(yī)外用藥開發(fā)與應(yīng)用工程研究中心 南京210023;3.南京中醫(yī)藥大學(xué)針灸推拿養(yǎng)生康復(fù)學(xué)院 南京 210023)
海洋中藥是“藍(lán)色藥庫”的重要組成部分,開展海洋中藥研究對于完善中國海洋新藥創(chuàng)新體系資源領(lǐng)域的戰(zhàn)略布局,推動海洋生物醫(yī)藥產(chǎn)業(yè)的健康發(fā)展具有重要價值[1]。2019海洋藥物甘露特鈉的問世,填補了阿爾茨海默病17年無新藥上市的空白,促使越來越多的研究者重視海洋中藥的科學(xué)研究[1-2]。盡管我國有悠久的海洋中藥應(yīng)用歷史,然而由于海洋中藥知識過于專業(yè),加之海洋中藥的信息資源較為分散,導(dǎo)致許多研究者對海洋中藥知識缺乏必要的了解,因此構(gòu)建海洋中藥的智能問答系統(tǒng)非常必要。
智能問答起源于20世紀(jì)50年代圖靈測試,是自然語言處理中非常重要的研究內(nèi)容[3],它能讓計算機自動并以精準(zhǔn)的自然語言形式回答用戶所提出的問題且不同于搜索引擎[4]。2012年谷歌提出基于知識圖譜的問答系統(tǒng)(Knowledge Graph Question Answer),為該領(lǐng)域的進(jìn)一步拓展提供了重要的參考方向[5],目前中文醫(yī)學(xué)領(lǐng)域已開展了類似的探索性研究。陳志豪[6]提出將Aho-Corasick和Word2Vec結(jié)合抽取實體,李賀等[7]沿用這個算法對疾病知識圖譜的自動問答系統(tǒng)進(jìn)行優(yōu)化。喬凱等[8]提出基于知識圖譜與關(guān)鍵詞注意機制的中文醫(yī)療問答匹配方法。王繼偉等[9]提出基于共享層的卷積神經(jīng)網(wǎng)絡(luò)(SH-CNN)與詞頻-逆文本頻率(TF-IDF)的中文醫(yī)療知識圖譜的智能問答系統(tǒng)。張興等[10]提出了融合TF-IDF、BERT和DSSM的兒童疾病問答系統(tǒng)。上述中文醫(yī)學(xué)領(lǐng)域的問答系統(tǒng)在構(gòu)建方法與思路方面給本項目的研究提供了參考與借鑒。鑒于海洋中藥領(lǐng)域尚未有可供應(yīng)用的成果[11-12],本研究以前期構(gòu)建的細(xì)粒度海洋中藥知識圖譜為知識庫,按照問句分析、問題匹配、答案抽取等流程,從實際需求出發(fā),開展了海洋中藥智能問答系統(tǒng)(MMKGQA)的構(gòu)建研究,以便為海洋中藥信息的有效利用提供支撐。
MMKGQA系統(tǒng)分為3個模塊:問句分析模塊、問題匹配模塊和答案檢索模塊,系統(tǒng)框架如圖1所示。
圖1 海洋中藥智能問答系統(tǒng)框架
(1)問句分析模塊的功能主要是用戶輸入問題,系統(tǒng)接收問題,問句分析對問題進(jìn)行預(yù)處理,獲取問句中用戶意圖和問句分類特征詞。首先根據(jù)自定義的詞典采用Aho-Corasick獲取問句中的關(guān)鍵詞,比如海洋中藥實體、海洋中藥功效實體、海洋中藥主治實體。如果詞典中不包含問句中的實體,調(diào)用分詞工具jieba并載入自定義詞典、進(jìn)行分詞、去除停用詞、獲取關(guān)鍵字、然后使用Word2Vec提前訓(xùn)練好的模型計算文本相似度來獲取語義相似度最高的實體。
(2)問題匹配模塊的功能主要是根據(jù)問句分析模塊獲得的關(guān)鍵詞和特征詞匹配問題類型和實體類型,確定問題模板,將獲取的實體和問題類型傳給答案抽取模塊。
(3)答案抽取模塊的功能主要是接受問題匹配模塊傳遞過來的問題中的關(guān)鍵詞實體并轉(zhuǎn)換為Nebula Graph支持的nGQL查詢語句,執(zhí)行圖數(shù)據(jù)庫查詢,將查詢結(jié)果進(jìn)行數(shù)據(jù)解析,通過系統(tǒng)設(shè)定的答案模板反饋用戶問題答案。
海洋中藥知識圖譜是以《海洋本草》和《海洋藥物與效方》等專著文獻(xiàn)為數(shù)據(jù)源,按照知識獲取、知識抽取、知識融合、知識存儲等步驟構(gòu)建的細(xì)粒度知識圖譜。海洋中藥知識圖譜了涵蓋文獻(xiàn)來源、海洋中藥方劑、海洋中藥性味歸經(jīng)、海洋中藥功效、海洋中藥主治、海洋中藥異名、海洋中藥制法、海洋中藥用法用量、海洋中藥禁忌、方劑組成、方劑功效、方劑主治、營養(yǎng)成分、中藥類型14類實體。海洋中藥知識圖譜是以海洋中藥和方劑為核心,實體粒度精細(xì)到分子層面的知識圖譜。海洋中藥知識圖譜一共有實體17 511個、關(guān)系28 710條。以海兔和海洋方劑海粉湯為例的海洋中藥知識圖譜局部結(jié)構(gòu)如圖2所示。
圖2 海洋中藥知識圖譜(部分)
多模式匹配是指在一個長的字符串string中一次性查找多個模式串P1, P2, …, Pq[13]。而Aho-Corasick是KMP算法向多模式串情形的擴展,是最經(jīng)典的多模式匹配算法[14]。該算法1975年起源于貝爾實驗室,具體指的是利用多個字符串構(gòu)建一個樹型的模式匹配自動機,把所有的字符串合并使其在同一個集合中,即先以多模式串(短字符串)為基礎(chǔ)創(chuàng)建自動機[15-16]。然后對要匹配的長字符串進(jìn)行一次遍歷,就可以找到該字符串中存在的目標(biāo)字符串。Aho-Corasick的時間復(fù)雜度為O(n),在自動機中無論長字符串中是否有目標(biāo)子字符串,長字符串中的每個字符都需要輸入到自動機中遍歷一遍,而且在模式匹配的過程中僅需遍歷一次,不需要回溯。Aho-Corasick需要用到三個函數(shù):goto,failure和output。其中g(shù)oto函數(shù)表示當(dāng)前的匹配結(jié)束了,可以達(dá)到的下一個狀態(tài);failure函數(shù)表示當(dāng)輸入的字符匹配不到時便進(jìn)入下一個算法;output函數(shù)表示輸出匹配結(jié)果。
鑒于基于字典的傳統(tǒng)的字符串暴力匹配算法有普遍的適用性,因此本研究依舊使用這個傳統(tǒng)算法。Aho-Corasick的作用的主要體現(xiàn)為:與本系統(tǒng)的實體詞典結(jié)合使用,根據(jù)實體詞典對問題進(jìn)行實體匹配和抽取,完成問題的關(guān)鍵詞分類,為問答系統(tǒng)問題分類和正確回答提供幫助。如果字典中匹配不到實體,就采用語義相似度模型,獲取問句中關(guān)鍵詞相似度最高的實體,幫助系統(tǒng)回答問題。Aho-Corasick應(yīng)用思路如下:①利用《海洋本草》和《海洋藥物與效方》中的海洋中藥名、主治、功效、性味歸經(jīng)、營養(yǎng)成分、方劑等實體詞典構(gòu)建基礎(chǔ)自動機。②將問題作為長字符串輸入到自動機中進(jìn)行模式匹配。③輸出匹配結(jié)果,判定目標(biāo)字符的類型。
本研究的語義相似度計算主要是利用Word2Vec[12]算法。Word2Vec主要采用CBOW (Continuous Bagof-Words Model)和Skip-Gram(Continuous Skip-Gram Model)兩種模型[17],如圖3所示。這兩種模型都是以Huffman樹作為基礎(chǔ)。Huffman樹中非葉節(jié)點存儲的中間向量的初始化值是零向量,葉節(jié)點對應(yīng)的單詞的詞向量是隨機初始化的[18]。CBOW的核心思想是通過上下文詞預(yù)測中心詞,Skip-gram則是通過中心詞預(yù)測上下文詞[19]。CBOW與Skip-gram模型都是采用三層神經(jīng)網(wǎng)絡(luò),除了輸出輸入方式不同,訓(xùn)練過程完全一致。本研究采用Skip-gram模型,因此針對Skipgram模型進(jìn)行說明。Skip-gram的第一層是輸入層,輸入一個詞向量W(i),采用輸入的詞向量訓(xùn)練上下文的詞向量;第二層是映射層,映射第一層的詞向量上下文的詞向量到輸出層;第三層是輸出層,輸出W(i)的上下文詞向量。Skip-gram網(wǎng)絡(luò)結(jié)構(gòu)的功能是通過給定的中心詞,計算目標(biāo)詞上下文的詞向量。
圖3 Word2Vec的兩種模型
本研究主要是利用Word2Vec算法計算問句中關(guān)鍵詞實體的文本相似度,獲取文本相似度最高的實體,提高系統(tǒng)的響應(yīng)能力。本研究的文本語義相似度計算思路如下:①首先利用python對《海洋本草》和《海洋藥物與效方》的功效和主治的語料進(jìn)行預(yù)處理。②將處理好的語料利用Word2Vec模型進(jìn)行訓(xùn)練,并保存訓(xùn)練好的詞向量模型[20]。③jieba分詞載入預(yù)定義的詞典對問題進(jìn)行分詞。④根據(jù)哈爾濱工業(yè)大學(xué)的停用詞表格,去除停用詞。⑤將分詞以后獲得的實體利用預(yù)訓(xùn)練好的詞向量模型獲取文本相似度最高的實體。
為提高海洋中藥智能問答系統(tǒng)的適用性,本研究發(fā)起了關(guān)于海洋中藥基本認(rèn)知的問卷調(diào)查,以了解人們對海洋中藥的認(rèn)識程度及從藥物應(yīng)用角度重點關(guān)注的主題。問卷從日常應(yīng)用、科學(xué)研究等角度共設(shè)置了17個問題,回收有效答卷131份。從調(diào)查結(jié)果來看,超過50%的人不知道日常食用的海鮮具有一定的藥用功效,很多人甚至將沙參、黨參等植物藥誤認(rèn)為是海洋中藥,在一定程度上表明人們對海洋中藥缺乏基本的醫(yī)學(xué)認(rèn)知。對答卷的進(jìn)一步分析表明,人們感興趣的內(nèi)容集中在海洋中藥的類別、營養(yǎng)成分、性味歸經(jīng)、功效、主治、配伍等方面,尤其對美容養(yǎng)顏、減肥、生發(fā)、壯陽、助眠等功效類問題比較感興趣。這些調(diào)查結(jié)果為我們從用戶需求角度設(shè)計預(yù)設(shè)問題答案提供了方向參考。
3.2.1 獲取問題關(guān)鍵詞
用戶交互模塊獲取問題,系統(tǒng)利用Aho-Corasick對問題進(jìn)行關(guān)鍵詞實體識別和關(guān)鍵詞獲取。首先根據(jù)自定義的詞典構(gòu)造字典樹,然后根據(jù)字典樹對問題進(jìn)行字符串的多匹配模式迭代。如果能夠迭代出實體,說明問題關(guān)鍵詞在我們自定義的實體字典中。對問題的實體進(jìn)行特征分類,判斷該實體是屬于具體的哪一類實體,如海洋中藥屬性、海洋中藥主治、海洋中藥功效、海洋中藥方劑、海洋中藥營養(yǎng)成分等。如果迭代的結(jié)果為空,則說明用戶提問的關(guān)鍵詞不在我們的詞典內(nèi),此時需要對問題進(jìn)行預(yù)處理——使用Word2Vec計算文本相似度,獲取文本相似度最高的實體,然后對獲取的實體進(jìn)行分類。
3.2.2 用戶問題預(yù)處理
當(dāng)使用Aho-Corasick對問題無法獲得關(guān)鍵詞實體的時候,使用Word2Vec計算關(guān)鍵詞的文本相似度,獲取相似度最高的實體,提高系統(tǒng)的響應(yīng)能力。本研究利用jieba分詞工具載入自定義的詞典對問題進(jìn)行分詞,以哈爾濱工業(yè)大學(xué)的停用詞表為依據(jù)去除停用詞。通過分詞,去除停用詞等流程將得到的關(guān)鍵詞放入提前訓(xùn)練好的Word2Vec向量模型獲取語義相似度最高的實體,然后對獲取的實體進(jìn)行分類。
3.2.3 問題分類
中文自動問答系統(tǒng)的問題分析包括分詞、詞性標(biāo)注、句法分析、命名實體識別、關(guān)鍵詞提取與擴展等操作,并在此基礎(chǔ)上完成對問題的分類和語義分析等[17]。分析流程中,問題分類的準(zhǔn)確性決定了系統(tǒng)輸出結(jié)果的正確性。問題能否正確分類是系統(tǒng)正確回答問題的關(guān)鍵。本研究通過匹配問題特征詞結(jié)合關(guān)鍵詞實體類型進(jìn)行問題分類。根據(jù)《海洋本草》、《海洋藥物與效方》等文獻(xiàn)數(shù)據(jù)對海洋中藥的描述和海洋中藥社會認(rèn)知問卷調(diào)查了解到的情況,歸納總結(jié)人們提問頻率最高的問題。本研究從專業(yè)角度出發(fā)提出一種細(xì)粒度中藥問題分類方法,將用戶問題分為以下6大類:判斷類、功效類、成分類、屬性類、主治類、方劑類。判斷類、成分類和屬性類,問題內(nèi)容單一,比較簡單,是認(rèn)知性的問題。功效類、主治類、方劑類的問題類型比較復(fù)雜,是推理性的問題,需要進(jìn)一步推理。比如“治療冠心病的海洋中藥有哪些?”和“治療冠心病的海洋效方有哪些?”都是主治類的問題,都是以疾病實體進(jìn)行查詢。前者是利用疾病實體來查詢中藥實體,即以冠心病為實體查詢海洋中藥;后者不僅僅是主治類問題還是方劑類問題,該問題被判定為利用疾病實體來查詢方劑實體,即以冠心病為實體查詢海洋效方。而“海兔能夠治療哪些疾病?”是利用中藥實體來查詢疾病實體。所以主治類的問題還得進(jìn)一步進(jìn)行推理,將問題再一次劃分為三小類。功效類的問題和主治類的問題類似。方劑類的問題更為復(fù)雜,需要進(jìn)一步推理,不僅要結(jié)合功效類問題、主治類問題,還需要判斷方劑的組成問題。如“海兔的海洋效方有哪些?”和“海粉湯的組成是哪些?”前者是以海洋中藥實體查詢效方,后者是以海洋效方實體查詢海洋中藥實體。因此,本研究提出了判斷、功效、成分、屬性、主治、方劑等6類問題作為海洋中藥智能問答系統(tǒng)問題分類體系。
通過問卷調(diào)查搜集的海洋中藥問答語料,對設(shè)計的問題類別分別隨機選擇若干條問題進(jìn)行人工標(biāo)注以獲取該類別的特征詞,問題類別分類特征詞如表1所示。根據(jù)這些特征詞與問題進(jìn)行匹配,再結(jié)合Aho-Corasick獲取的關(guān)鍵詞實體類別匹配進(jìn)行問題匹配,關(guān)鍵詞實體類別主要分為功效類實體、屬性類實體、海洋中藥類實體、主治類實體、方劑類實體、成分類實體等。如果匹配成功,說明問題屬于本研究設(shè)計的問題分類體系。然后將獲取的實體傳遞到相對應(yīng)的問題模板,生成對應(yīng)的nGQL查詢語句對海洋中藥知識庫進(jìn)行檢索。
表1 問題類別分類
本研究通過問句分析和信息檢索等步驟,可以從問題中獲取問題的關(guān)鍵詞實體,判斷實體類型和問題類型。對問題分類以后將問題中提取出的實體類別和具體的實體轉(zhuǎn)換為{‘實體類型’:[實體],...}的字典格式[21]。這個字典實際上是問題的目的,獲取字典中的實體,將實體轉(zhuǎn)換為nGQL查詢語句,向Nebula Graph查詢,將查詢結(jié)果通過系統(tǒng)設(shè)定的答案模板反饋用戶問題答案。
例如,當(dāng)用戶提問“具有美容養(yǎng)顏作用的海洋中藥有哪些?”,通過Aho-Corasick提取出用戶提問實體“美容養(yǎng)顏”是功效類的實體,根據(jù)設(shè)定的問題分類體系可以知道問題是功效類問題,以功效實體來查詢海洋中藥實體??梢詫⒂脩舻奶釂柗庋b成{‘美容養(yǎng)顏’:[“功效”], ‘海洋中藥’:}字典格式。該字典用nGQL語句可以表示為:MATCH (v)-[e1:Medicine_effect_temporary_edge]-(v1)-[e:prescription_effect_edge|Medicine_effect_edge]-(v3:effect{name:“美容養(yǎng)顏”})RETURN v。系統(tǒng)將查詢的結(jié)果進(jìn)行數(shù)據(jù)解析,根據(jù)答案模板返回答案。通過問句分析、問題匹配、答案抽取以上3個步驟,基本實現(xiàn)海洋中藥智能問答系統(tǒng)的功能,將問題轉(zhuǎn)變?yōu)楸鞠到y(tǒng)可以識別的查詢語言,并在海洋中藥知識圖譜中查詢,經(jīng)過數(shù)據(jù)解析,根據(jù)答案框架,將答案返回給用戶。
系統(tǒng)性能評價是評價一個系統(tǒng)可行性和實用性的關(guān)鍵。本研究測試問答系統(tǒng)性能的環(huán)境為:Ubuntu20.0、Python3.8、Anaconda3等。為了驗證本研究開發(fā)的基于知識圖譜的海洋中藥智能問答系統(tǒng)的可行性與實用性,本研究選用精確率(P)、召回率(R)及 F1值作為評價指標(biāo)。具體公式如(1)所示,其中R1表示系統(tǒng)返回答案的全部數(shù)量,P1表示問答系統(tǒng)中返回正確答案的數(shù)量,T表示存在正確答案的問題數(shù)量。通過對問卷調(diào)查研究獲取的問題語料進(jìn)行數(shù)據(jù)清洗,根據(jù)問題細(xì)分類,每一類問題隨機篩選其中30條進(jìn)行實驗,實驗結(jié)果如表2所示。
表2 系統(tǒng)性能測試表
從表2可以看出,判斷類、海洋效方的配伍類的問答效果最好,主治具體某種疾病的海洋中藥和某種具體功效的海洋中藥的效果比較差。系統(tǒng)的平均P值為97.93%、平均R值為83.41%,平均F1值為89.10%,說明系統(tǒng)能夠很好地回答海洋中藥的相關(guān)問題,具有較高的實用性和可行性。主治某種疾病和某種具體功效的問題回答各方面評價指標(biāo)較低,主要原因在于海洋中藥知識圖譜的覆蓋面不夠廣泛,中醫(yī)術(shù)語、現(xiàn)代醫(yī)學(xué)名詞和用戶提問的用語之間不能夠很好轉(zhuǎn)換。
我國擁有悠久的海洋中藥應(yīng)用歷史,但是海洋中醫(yī)藥相關(guān)資源信息較為分散,缺乏相關(guān)的海洋中藥知識服務(wù)工具,無法快速獲取海洋中藥的相關(guān)知識,導(dǎo)致許多研究者對海洋中藥資源缺乏了解。當(dāng)前公眾對海洋中藥基本信息的了解遠(yuǎn)遠(yuǎn)不足。為解決上述問題,本研究基于前期構(gòu)建的細(xì)粒度高質(zhì)量海洋中藥知識圖譜,通過問句分析、問題匹配、答案抽取3個步驟,開發(fā)了基于知識圖譜的海洋中藥智能問答系統(tǒng)(MMKGQA)。MMKGQA沒有特別復(fù)雜的算法,主要采用Aho-Corasick和Word2Vec計算語義相似度對用戶問題進(jìn)行實體匹配和抽取。根據(jù)本研究提出的問題分類體系進(jìn)行分類,使用正確率對系統(tǒng)進(jìn)行系統(tǒng)性能測評。測試分析表明,該系統(tǒng)可幫助普通用戶準(zhǔn)確了解海洋中藥的基礎(chǔ)知識,對中藥研發(fā)人員而言,利用該系統(tǒng)可方便查詢關(guān)于海洋中藥的性味歸經(jīng)、功能主治、配伍應(yīng)用等方面的專業(yè)知識,是一個高效的知識服務(wù)工具,為海洋中藥的進(jìn)一步開發(fā)利用提供支撐平臺。目前,知識圖譜是各個領(lǐng)域知識工程建設(shè)的重要工具,知識圖譜在中醫(yī)藥領(lǐng)域應(yīng)用前景廣闊,本研究構(gòu)建的基于知識圖譜的海洋中藥智能問答系統(tǒng)推動了知識圖譜技術(shù)在中藥領(lǐng)域的應(yīng)用,為知識圖譜技術(shù)在中醫(yī)藥知識的深度應(yīng)用提供參考。
智能系統(tǒng)回答問題的準(zhǔn)確率依賴于問題分類是否正確以及知識圖譜的覆蓋范圍與知識內(nèi)容的分類粒度。由于前期構(gòu)建的海洋中藥的種類僅限于與日常生活及中醫(yī)臨床應(yīng)用相對較多的品種,知識圖譜的主題分布也僅限于中藥傳統(tǒng)的性味歸經(jīng)、功效主治、方劑等內(nèi)容,目前尚未將海洋中藥化學(xué)成分、活性作用等方面的知識與上述海洋中藥傳統(tǒng)應(yīng)用方面的知識予以融合貫通,因此,目前對于用戶提出范圍過于寬泛、籠統(tǒng)的問題,系統(tǒng)還不能給出具體的答案。比如用戶提問“治療病毒性感染性疾病的海洋中藥有哪些?”這是一個主治類的問題,但問題涉及到海洋中藥的具體藥理作用,加之病毒性感染性的疾病譜非常廣,具體是哪一個疾病,用戶提問意圖不明確,因此問答系統(tǒng)無法給出相對準(zhǔn)確或明確的答案。對這類問題,目前本系統(tǒng)一律回復(fù)“不好意思,這個問題暫時超出了小藍(lán)的思考范圍,我將繼續(xù)努力學(xué)習(xí)?!鄙鲜鰬?yīng)用需求為我們從用戶需求角度進(jìn)一步擴展海洋中藥智能問答系統(tǒng)的知識面,完善系統(tǒng)的推理功能指明了方向,讓知識圖譜技術(shù)更好地服務(wù)于中藥領(lǐng)域,這是今后的重點研究方向。