尹延鑫 李傳富
(安徽中醫(yī)藥大學(xué) 合肥 230012) (安徽中醫(yī)藥大學(xué)第一附屬醫(yī)院 合肥 230012)
隨著物質(zhì)生活水平不斷提高,公眾的健康重視程度和健康信息需求持續(xù)提升。大數(shù)據(jù)背景下互聯(lián)網(wǎng)成為獲得醫(yī)療信息的重要渠道。根據(jù)中國科學(xué)技術(shù)協(xié)會2019年第1季度發(fā)布的《中國網(wǎng)民科普需求搜索行為報告》[1],“健康與醫(yī)療”主題在全部參與分析主題中占比35.63%,位居第2。隨著計算機及互聯(lián)網(wǎng)應(yīng)用發(fā)展,健康信息交流活動遭遇新困難。主要體現(xiàn)在健康信息用戶[2]信息搜索和信息內(nèi)容理解的問題和阻礙,用戶使用信息與源信息之間存在表達差異。在信息獲取過程中該差異表現(xiàn)為醫(yī)生與患者之間溝通不暢,以及患者使用檢索系統(tǒng)查詢相關(guān)醫(yī)療知識時實際檢索結(jié)果與預(yù)期檢索結(jié)果存在出入。目前的檢索語言體系無法滿足社會需要,造成用戶對專業(yè)醫(yī)學(xué)術(shù)語理解與使用困難、檢索系統(tǒng)無法理解用戶表達的信息等交流障礙。用戶健康詞表(Consumer Health Vocabulary,CHV)[3]可輔助實現(xiàn)健康信息用戶與醫(yī)生、檢索系統(tǒng)之間的良性信息互動[4]。
可利用八爪魚搜集器對醫(yī)藥健康網(wǎng)站部分用戶健康用詞進行搜集,以此作為語料庫來源;通過用戶問卷調(diào)查等方式收集用詞建立語料庫。
利用Jieba分詞工具通過神經(jīng)網(wǎng)絡(luò)理論[5]模擬人腦詞匯處理過程對原始語料進行分詞,過濾并確定用戶健康用詞有效詞。
利用Word2vec工具通過選擇合適語言模型對分詞結(jié)果進行詞向量訓(xùn)練,得到用戶健康用詞的詞向量模型。完成構(gòu)建后使用詞向量模型通過余弦相似度與專業(yè)醫(yī)療健康用詞建立對應(yīng)聯(lián)系(實驗中所有詞匯處理工具的調(diào)用均通過Python代碼實現(xiàn))。
3.1.1 語料搜集器 使用八爪魚采集器(爬蟲工具),選定采集模式,輸入目標(biāo)語料的數(shù)據(jù)來源網(wǎng)址、要采集頁面元素并對其設(shè)定采集要求(如采集文本、采集鏈接、循環(huán)點擊等),實現(xiàn)數(shù)據(jù)全自動采集。
3.1.2 分詞工具 Python編輯器的Jieba分詞工具是深度學(xué)習(xí)方法在自然語言處理領(lǐng)域的實踐之一。通過Python調(diào)用Jieba分詞工具包以添加自定義詞和自定義詞庫實現(xiàn)不同需求的分詞要求。Jieba分詞工具包含全模式、精準(zhǔn)模式、搜索引擎3種分詞模式,各具優(yōu)勢,可視具體需要選擇。Jieba分詞工具還可實現(xiàn)關(guān)鍵詞提取、根據(jù)詞匯出現(xiàn)頻率排序、標(biāo)注詞性、合并同義詞等功能。本實驗選用精準(zhǔn)模式分詞,分詞要求僅限于實現(xiàn)原始語料的基本分詞、去除停用詞干擾。
3.1.3 模型訓(xùn)練工具 本次實驗選擇在Anaconda的Jupyter Notebook中運行Python3代碼,調(diào)用Gensim工具包中的Word2vec。
3.2.1 語料抓取 使用八爪魚采集器對39問醫(yī)生-39健康網(wǎng)頻道內(nèi)科模塊中的用戶健康用詞進行搜集,作為實驗語料。通過對網(wǎng)頁內(nèi)提問語句元素進行自動爬取獲得“地中海貧血是什么原因”、“坐太久了頭暈想吐是貧血嗎”、“舌頭發(fā)白不知道怎么回事”等4 810條有關(guān)內(nèi)科健康的提問語句,以疑問句為主,主要構(gòu)成為用戶癥狀描述+病情提問。
3.2.2 分詞處理 將爬取的用戶健康用詞以文本文件(Text File,TXT)格式保存,使用 Jupyter Notebook調(diào)用 Jieba分詞工具分別上傳語料、停用詞表與《內(nèi)科醫(yī)學(xué)名詞中英文對照表》。輸入分詞代碼對原始語料進行初步中文分詞處理,見圖1。經(jīng)過Jieba分詞處理,原始語料庫中語句劃割成若干個獨立詞匯,如“貧血、請問、地中海、原因”;“體能、貧血、頭暈、月經(jīng)、頭痛”;“太久、貧血、頭暈”;“產(chǎn)后檢查、缺鐵性、貧血、呼吸”等。經(jīng)篩查發(fā)現(xiàn)分詞結(jié)果與預(yù)期實驗用分詞文本存在一定差別,具體表現(xiàn)為:(1)存在誤差詞。除了醫(yī)藥健康方面詞匯外,存在包括語氣詞、形容詞和地名等與實驗不相關(guān)的誤差詞。(2)專業(yè)名詞誤分。如將斯利安葉酸片分成“斯利安”和“葉酸片”,在中文表述中“斯利安”和“葉酸片”可指代同一樣藥物,而“斯利安葉酸片”是該藥物的標(biāo)準(zhǔn)名稱。
3.2.3 模型訓(xùn)練 經(jīng)過Jieba分詞的分詞語料可作為Word2vec的輸入文本訓(xùn)練詞向量,訓(xùn)練代碼運行成功后可得到有關(guān)內(nèi)科用戶健康詞表的詞向量模型。編寫代碼并設(shè)置Word2vec內(nèi)詞向量模型的訓(xùn)練參數(shù),然后開始訓(xùn)練。由于模型訓(xùn)練的目的是測定指定醫(yī)學(xué)用詞出現(xiàn)概率,選擇連續(xù)詞袋(Continuous Bag-of-Words,CBOW)算法更合適,未對算法進行指定設(shè)置,而是默認算法選擇,即sg=0。由于本次實驗中的語料不夠充分,為避免因參數(shù)設(shè)置過大導(dǎo)致部分詞匯被過濾遺漏,盡可能保證對所有詞匯都進行訓(xùn)練處理,故參數(shù)設(shè)置均較小,見圖2、圖3。
圖2 模型構(gòu)造代碼及構(gòu)造過程
圖3 部分模型訓(xùn)練結(jié)果
于《內(nèi)科醫(yī)學(xué)名詞中英文對照表》中選取100個中文內(nèi)科醫(yī)學(xué)名詞作為種子詞,在Python中調(diào)用在上一實驗步驟中已設(shè)置并訓(xùn)練好的Word2vec的詞向量模型文件,計算在種子詞中有無與模型中相近似的詞并按照相似性倒序排列,以此為依據(jù)得到種子詞在用戶健康用詞中的同義詞。如通過運行代碼輸入“呼吸困難”,在詞向量中共有10個返回項,分別為“呼吸”——0.518 497 765 064 239 5、“身體”——0.500 917 851 924 896 2、“患者”——0.493 879 109 621 048、“胸悶”——0.485 214 829 444 885 25、“老想” —— 0.480 314 433 574 676 5、 “一點”——0.480 262 249 708 175 66、“頭暈”——0.470 977 306 365 966 8、“昨晚”——0.466 171 026 229 858 4、“氣短”——0.459 644 794 464 111 33、 “早上”——0.457 675 486 803 054 8,見圖4。根據(jù)余弦相似度排序判斷該模型中與種子詞最接近的為“呼吸”。通過測試,發(fā)現(xiàn)100個內(nèi)科醫(yī)學(xué)名詞中只有41個詞語存在返回值且通過人工審查,使用模型得到的種子詞的相似詞大部分余弦相似度都低于0.5且并不具備同義詞的實際意義,見表1。
圖4 輸入“呼吸困難”后模型生成的同義詞列表及其余弦相似度
表1 參與訓(xùn)練的種子詞返回值及其同義詞最高余弦相似度
續(xù)表1
采用 Word2vec訓(xùn)練詞向量模型方法構(gòu)造用戶健康詞表,驗證了其可行性與局限性,說明可以通過深度學(xué)習(xí)理論及相關(guān)技術(shù)實現(xiàn)用戶健康信息需求與健康信息資源之間的匹配,為用戶解決部分專業(yè)醫(yī)學(xué)檢索需求。利用深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)擬合目標(biāo)函數(shù)構(gòu)造語言模型,可完成非醫(yī)學(xué)專業(yè)用戶詞和醫(yī)學(xué)專業(yè)術(shù)語之間的“映射”,進而實現(xiàn)用戶健康詞表在健康信息用戶與醫(yī)生、檢索系統(tǒng)之間信息互動的“橋梁”工具功能,即深度學(xué)習(xí)方法在構(gòu)建用戶健康詞表方面具備較高適用性。
4.2.1 原始語料多樣性及數(shù)據(jù)規(guī)模 深度學(xué)習(xí)理論中,所有在神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上模擬人腦信息處理的操作和模型構(gòu)建,都必須以大規(guī)模正規(guī)數(shù)據(jù)為基礎(chǔ),即給予所構(gòu)造“神經(jīng)網(wǎng)絡(luò)系統(tǒng)”規(guī)范且充分的學(xué)習(xí)資料,供其總結(jié)學(xué)習(xí)信息處理規(guī)律。在實驗中存在大量種子詞未檢索到滿足條件的用戶健康用詞,其主要原因包括以下兩方面:一是前期爬取的內(nèi)科相關(guān)用戶健康用詞語料數(shù)據(jù)規(guī)模較小,無法全面體現(xiàn)普通用戶關(guān)于內(nèi)科健康的用詞習(xí)慣;二是所爬取語料資源內(nèi)容形式不規(guī)范,存在類似"PCR"(Polymerase Chain Reaction,聚合酶鏈?zhǔn)椒磻?yīng))、"MCHC"(Mean Corpusular Hemoglobin Concerntration,紅細胞平均血紅蛋白濃度)等英文縮寫或疾病代稱以及“地貧”(地中海貧血)等中文簡稱,導(dǎo)致后期模型訓(xùn)練獲取同義詞出現(xiàn)誤差。
4.2.2 分詞程序的分詞結(jié)果 利用Jieba分詞程序?qū)υ颊Z料進行簡單分詞處理后,兩方面原因?qū)е路衷~結(jié)果未完全滿足用戶健康用詞標(biāo)準(zhǔn)劃分的分詞預(yù)期:一是中文表達的多樣性導(dǎo)致分詞結(jié)果出現(xiàn)誤分、多分(如將斯利安葉酸片分成“斯利安”和“葉酸片”);二是分詞過程中選用的停用詞表覆蓋范圍有限,導(dǎo)致分詞結(jié)果中保留了部分與實驗所測試用戶健康用詞不相關(guān)的無意義的詞(如“一會兒”、“晚上”等)。此外分詞程序的分詞結(jié)果對后期模型訓(xùn)練查找同義詞無返回值、增加程序篩選時間產(chǎn)生一定影響。
調(diào)用Word2vec工具包,借助詞向量模型訓(xùn)練,以詞向量模型中內(nèi)科醫(yī)學(xué)專業(yè)名詞與非專業(yè)用戶健康詞表之間返回的余弦值為依據(jù)建立二者對應(yīng)關(guān)系。根據(jù)實驗結(jié)果中醫(yī)學(xué)專業(yè)用語在用戶健康用詞詞向量模型中余弦值的反饋,可以認為深度學(xué)習(xí)理論在用戶健康詞表構(gòu)建方面具有較高適用性,可實現(xiàn)醫(yī)學(xué)專業(yè)用語與用戶健康用詞之間“映射”關(guān)系,但存在醫(yī)學(xué)專業(yè)術(shù)語無詞向量模型返回值及返回值無意義等問題。說明目前深度學(xué)習(xí)技術(shù)在用戶健康詞表構(gòu)建方面發(fā)展成熟度不足,詞表構(gòu)建尚未達到高度智能化、完全自動化,需人工篩選介入,該領(lǐng)域仍有廣闊研究發(fā)展空間。