杜永興 牛麗靜 秦 嶺 李寶山
(內(nèi)蒙古科技大學信息工程學院 內(nèi)蒙古 包頭 014010)
計算文本相似度是研究疾病智能診斷的一種重要的方法。目前VSM空間向量模型和TF-IDF方法提取關(guān)鍵詞技術(shù)廣泛應(yīng)用在人病智能導(dǎo)醫(yī)系統(tǒng)中。林予松等[1]采取了用戶關(guān)注度來計算癥狀的權(quán)重,設(shè)計了人工智能導(dǎo)醫(yī)系統(tǒng)。徐奕楓等[2]提出基于疾病類間分布的癥狀權(quán)重改進算法,改善了傳統(tǒng)TF-IDF算法提取疾病的效果,取得了不錯的成績。Teshnehlab等[3]首先通過主成分分析減少特征,然后使用基于深度神經(jīng)網(wǎng)絡(luò)算法對結(jié)腸癌分類,其分類準確度為0.6。Cheng[4]通過物聯(lián)網(wǎng)和人工智能自動化設(shè)計一個可以及時解決動物園里的動物身體出現(xiàn)異常情況的系統(tǒng),幫助動物管理員更系統(tǒng)地管理照顧動物。以上系統(tǒng)的設(shè)計都有著顯著的成果,但它們需要用戶在系統(tǒng)中選擇相應(yīng)的癥狀,不能實現(xiàn)對用戶所輸入的文本內(nèi)容進行理解。在設(shè)計中實現(xiàn)理解用戶輸入內(nèi)容的復(fù)雜度遠高于直接選擇癥狀。在對用戶描述進行關(guān)鍵詞提取時,用傳統(tǒng)的TF-IDF算法在疾病的關(guān)鍵詞提取中并未考慮到提取的權(quán)重比較高的關(guān)鍵詞是否能合理地表示某種疾病。
針對上述問題,本文提出改進的TF-IDF算法,并將該算法應(yīng)用在牛的疾病診斷系統(tǒng)中。首先用已有的方法對用戶的輸入的文本內(nèi)容進行分詞、提取關(guān)鍵癥狀詞。然后采用向量空間模型VSM將提取的關(guān)鍵詞用向量的形式表示,用余弦定理計算用戶輸入的關(guān)鍵詞向量和已有的疾病關(guān)鍵詞向量的值作為疾病的相似度。最后進行可信度的計算,推斷出牛所患的疾病。應(yīng)用該算法提取的關(guān)鍵癥狀詞可以比較合理地表示疾病的癥狀,提高了系統(tǒng)的性能,使得該系統(tǒng)有效地實現(xiàn)了對牛所患疾病及時的診斷和治療,對牧戶在畜牧業(yè)的管理上也起到一定的指導(dǎo)和決策作用。
應(yīng)用Python框架和手工錄入方式獲取了451種關(guān)于牛的疾病,采用jieba分詞[5]和手工整理的方式對病因、癥狀、診斷、治療和預(yù)防等屬性拆分,并將其對應(yīng)的癥狀進行規(guī)范化處理,構(gòu)造關(guān)鍵癥狀詞語料庫。
目前常用空間向量模型的方法來衡量兩個文本之間的相似度[6]。向量空間模型(VSM)是把輸入的文本和已有的文本都轉(zhuǎn)換成向量的形式進行計算,提高了文本內(nèi)容的計算性和可操作性,同時該模型也是目前應(yīng)用最為成熟和廣泛的模型之一[7-8]。
假設(shè)某用戶描述用D(Document)表示,首先運用自然語言處理已有的技術(shù)對用戶的描述進行分詞、去停用詞、計算權(quán)重、提取關(guān)鍵癥狀詞。特征項一般由癥狀關(guān)鍵詞組構(gòu)成,指在文檔中能反映用戶描述的基本語言單位,用T(Term)表示。用戶描述和關(guān)鍵癥狀特征可以使用集合表示為D(T1,T2,…,Tn),其中Tk是關(guān)鍵癥狀特征詞(1≤k≤n)。生成向量空間模型的流程如圖1所示。
圖1 生成向量空間模型的流程
利用空間向量模型將文本內(nèi)容轉(zhuǎn)換成向量可以這樣表示:對用戶輸入的文本m中的每個詞,用Wi,m表示m中第i個詞的權(quán)重,m=(W1,m,W2,m,…,Wt,m)表示用戶輸入文本m的詞權(quán)重向量;同理,用Wi,n表示已有文本n中第i個詞的權(quán)重,用n=(W1,n,W2,n,…,Wt,n)表示已有文本n的詞權(quán)重向量,然后通過余弦定理計算m和n之間的相似度值作為兩個文本之間的相似度[9-11]。其中癥狀權(quán)重W是根據(jù)TF-IDF原理計算出來。在本系統(tǒng)中m表示帶匹配的疾病,n表示用戶輸入的描述。相似度計算如下:
(1)
在利用VSM計算兩種疾病的相似性度時,最重要的步驟是用TF-IDF算法計算關(guān)鍵癥狀詞的權(quán)重,提取關(guān)鍵詞[12-13]。TF-IDF算法的原理是TF×IDF,其中TF表示某個癥狀詞在文檔出現(xiàn)的頻率,計算中發(fā)現(xiàn)像“的”“了”等這些不重要的停用詞出現(xiàn)的次數(shù)比較高。為避免這種問題,引入逆文檔頻率IDF。包含當前詞的文檔個數(shù)越多,IDF的值越小,說明該詞越不重要。其主要思想是如果某個特征項在一個文本中出現(xiàn)頻率很高,且在其他文本中出現(xiàn)很少,說明此特征項具有很好的類別區(qū)分能力,應(yīng)該給予較高的權(quán)重[14]。TF計算如下:
(2)
式中:Cin表示疾病特征詞i在n種描述中出現(xiàn)的次數(shù);Mn表示n種描述中總癥狀詞數(shù)。IDF計算如下:
(3)
式中:將每個描述看成一個文檔,N為文檔總數(shù);n為包含某項癥狀詞的文檔總數(shù)。TF-IDF計算公式如下:
TF-IDF=TF×IDF
(4)
將傳統(tǒng)的TF-IDF算法應(yīng)用在提取牛疾病的關(guān)鍵癥狀詞時,發(fā)現(xiàn)“帶有”“比較”“基本”“而”等詞計算出來的權(quán)重很高。顯然這些詞作為疾病的關(guān)鍵癥狀是不合理的。分析原因如下:在計算某一種疾病的關(guān)鍵癥狀時,將同一種疾病的不同種醫(yī)案描述作為不同的文檔來計算關(guān)鍵癥狀。此時的用戶描述除了停用詞出現(xiàn)的次數(shù)比較多之外,剩下的是癥狀描述,比如“精神倦息”“不反芻”等癥狀詞,雖然很重要但是由于在每個用戶描述中幾乎都有出現(xiàn),根據(jù)TF-IDF原理就把此類經(jīng)常出現(xiàn)的癥狀詞當成停用詞處理了。針對上述問題,本文提出基于改進的TF-IDF算法,可以有效解決這個問題。改進的TF-IDF計算式如下:
(5)
式中:Wij代表第j種疾病的i個癥狀。首先通過傳統(tǒng)的算法算出關(guān)鍵詞的權(quán)重,然后將提取的關(guān)鍵詞和牛疾病癥狀詞典進行匹配。如果該詞在癥狀詞典中,則將該詞相應(yīng)的權(quán)重乘以10;如果該詞不在癥狀詞典中,保留其原始的權(quán)重不變。最后將關(guān)鍵詞的權(quán)重重新排序,選擇權(quán)重較高的前20個關(guān)鍵詞作為疾病的關(guān)鍵癥狀詞。使每種疾病的關(guān)鍵癥狀權(quán)重更具有代表性,實現(xiàn)了相同癥狀在不同疾病占有不同的權(quán)重,更適用于疾病診斷。
單純將相似度作為最后的結(jié)果返回給牧民是不夠準確的。把可能度和相似度相結(jié)合作為疾病可信度計算結(jié)果,然后將可信度的結(jié)果按照從高到低的次序返回給牧民,增強結(jié)果的可靠性??赡芏鹊挠嬎闶褂玫氖遣淮_定的推理,當用戶輸入描述時,將相應(yīng)的癥狀權(quán)重相加??赡芏鹊挠嬎闳缦拢?/p>
kndj=W1jx1+W2jx2+…+Wijxn
(6)
式中:kndj代表患某種疾病的可能度。將選中的疾病索引到對應(yīng)的權(quán)重進行加權(quán)求和,最后進行可信度的計算如下:
CF=αkndj+βsim(m,n)α+β=1
(7)
式中:α取0.2,β取0.8進行最后的可信度計算。
牛的疾病診斷系統(tǒng)主要運用智能化方式輔助獸醫(yī)診斷。牧民在使用此系統(tǒng)時,輸入相應(yīng)癥狀的文本內(nèi)容,系統(tǒng)首先會對輸入的文本內(nèi)容進行理解,然后計算出輸入內(nèi)容與系統(tǒng)內(nèi)所有疾病的相似度,最后計算可信度。將查詢結(jié)果按照可信度從大到小的返回給牧民,并給出相應(yīng)的診療方案。牛疾病智能診療系統(tǒng)主要包括自然語言處理、疾病匹配處理、疾病可信度計算三個部分。具體系統(tǒng)設(shè)計流程如圖2所示。
圖2 牛的疾病診斷流程
實驗的運行環(huán)境為Windows XP操作系統(tǒng),CPU主頻3.7 GHz,內(nèi)存16 GB,數(shù)據(jù)庫Microsoft MySQL 2018,開發(fā)工具為PyCharm 2018,編程語言為Python。實驗數(shù)據(jù)采取隨機抽取30頭牛的病歷樣本進行實驗驗證,且這些疾病獸醫(yī)已經(jīng)給出正確的診斷結(jié)果。
為驗證改進后的算法在牛疾病診療系統(tǒng)中的準確率和可信度,本文采用基于傳統(tǒng)的空間向量模型的相似度算法和本文提出改進的TF-IDF算法進行對比實驗。實驗采用隨機抽取30頭牛的病歷樣本進行實驗驗證,采用S@n(success atn) 方法進行結(jié)果評測[15],其表示正確疾病推薦結(jié)果在前n個推薦結(jié)果中所占比重。
將實驗數(shù)據(jù)采用S@n方法進行結(jié)果評測,兩種算法的對比結(jié)果如表1所示。可以看出,當n取1、2、3時,本文算法的正確率明顯高于傳統(tǒng)算法。
表1 算法準確率對比
通過上述計算相似度及可信度的方法,使用兩種算法對同一實驗數(shù)據(jù)計算出相似度和可信度的對比如圖3和圖4所示??梢钥闯觯倪M算法相似度和可信度較傳統(tǒng)算法都有提高,其中可信度平均提高約4個百分點,說明本文算法在牛疾病診斷中更具有可行性。
圖3 相似度結(jié)果對比圖
針對傳統(tǒng)TF-IDF算法提取關(guān)鍵詞不能合理地描述疾病的關(guān)鍵癥狀,本文提出一種改進的TF-IDF算法提取關(guān)鍵癥狀詞并設(shè)計了牛疾病智能診斷系統(tǒng)。通過實驗對比驗證了該算法的有效性。該方法的不足是在提取關(guān)鍵癥狀詞時依賴疾病癥狀詞的語料庫。下一步研究將重點考慮在不依賴疾病癥狀詞語料庫的基礎(chǔ)上更加智能地實現(xiàn)疾病診斷。