武書釗,李功權,卜明偉
1.長江大學 地球科學學院,武漢430100
2.中國地質大學 地理與信息工程學院,武漢430074
當前社會的生活節奏越來越快,人們面臨著更多的來自工作和學習的壓力,從而易患心理疾病。新冠疫情,給人們帶來了心理壓力以及恐慌和焦慮的情緒,加劇了心理疾病的患病率,心理疾病問題當前已成為重大的全球公共衛生問題[1]。心理疾病需要及時醫治,否則它帶來的負面情緒長期積累下去會造成不可估量的后果[2]。如央視的著名主持人崔永元因被工作困擾患上了抑郁癥,大學和中學學生自殺事件也是屢見不鮮[3]。出現這樣的現象,一方面是由于人們缺乏心理疾病的基本知識,也缺乏對心理疾病危害的清醒認識,缺少先進手段推廣心理疾病知識。而另一方面,心理咨詢師供不應求,咨詢者不能及時得到有效的幫助[4],缺乏科學理論體系智能化地解決心理問題。因此,需要一個智能化的平臺存儲心理咨詢的相關知識,當用戶需要獲取心理方面知識時,該平臺從海量知識中快速地反饋給用戶,及時幫助和疏導心理疾病患者。
知識圖譜是目前智能化存儲信息較好的方法,該方法由谷歌在2012 年提出并迅速用于智能化語義搜索[5]。而目前人工智能技術逐漸成熟,并且已經滲透到社會的方方面面[6],尤其是自然語言處理技術的發展,知識圖譜有了更多的應用前景。問答系統作為知識圖譜的一個重要的應用方向,基于知識圖譜的問答系統可以快速地通過輸入的自然語言問題,從知識圖譜中找到正確的答案,并按照自然語言的形式呈現給用戶[7],這種問答系統在響應及反饋上是高效的。
為了解決上述問題,本研究首先構建一個心理咨詢的知識圖譜,通過建立快速語義化的心理問答系統來推廣心理疾病知識和提供快速的心理咨詢服務。該系統利用BiLSTM算法進行自殺傾向檢測,能夠及時識別出有自殺、自殘、傷害別人傾向的人,幫助用戶進行疾病識別,也可以通過知識問答幫助咨詢者了解相關知識。本研究有助于咨詢者減輕煩惱,彌補心理咨詢資源短缺問題,提升心理咨詢的工作效率。
知識圖譜可以分為通用知識圖譜和領域知識圖譜。典型的通用知識圖譜代表有Freebase[8]、DBpedia[9]、Yago[10]、百度、谷歌等,主要以三元組事實型知識為主,對知識抽取的質量有一定容忍度。典型的領域知識圖譜有電商、金融、醫療等。電商領域以阿里巴巴為例,它的知識圖譜已經達到百億級別,可以廣泛支持商品搜索、商品導購、智能問答等。在金融領域,知識圖譜可以讓投資者和融資者更快速地了解投資行為,把握行情。張德亮針對金融圖譜缺乏問題,利用爬取到的金融股票及企業信息等結構化數據構建了一個小型金融知識圖譜[11]。目前知識圖譜在醫學上主要用于臨床治療決策支持、醫療智能語義搜索和醫療問答系統[12]等。臨床治療決策支持是根據患者的個人情況,結合醫療領域的大數據分析,自動生成針對每個患者的治療方案,提供給醫生進行參考;醫療智能語義搜索是從醫學知識圖譜中聯合相關的實體、關系和屬性等信息來查詢,從而優化醫療信息的搜索結果;醫療問答是醫療信息檢索的另外一種形式,它的返回答案是自然語言形式的,需要知識圖譜作為信息的存儲載體,專業性更強。
在基于知識圖譜的問答系統方面,譚剛等人使用了LSTM模型進行實體/斷言來增強知識圖譜,并使用了啟發式的候選答案排序方法,最后通過實驗驗證了該系統具有較好性能[13];陳金菊等人提出了基于道路法規知識圖譜的多輪問答系統,可以更好地識別用戶意圖[14];杜澤宇等人針對自然語言表達的復雜性、不規范性以及電商領域問題的特殊性,使用知識圖譜作為數據庫支撐,設計了一個問答系統,該系統基于電商領域,實現了問答、推理等功能[15];陳璟浩等人利用“一帶一路”投資相關信息構建了知識圖譜,并實現了問答系統中預處理、問題分類、問題模板匹配以及答案生成功能[16]。上述所建立的問答系統都在各自領域得到了較好的實現,并且在問答系統流程中都融合了領域的特色,但目前還沒有學者研究關于心理咨詢領域的問答系統,也很少將文本分類應用到問答系統。
文本分類是自然語言處理的重要研究方向[17],文本分類的算法模型有很多,Adachi等人研究了不同特征詞的選擇對SVM(Support Vector Machine)算法分類性能的影響,證明了當正樣本與負樣本特征詞結合時,分類器效果更好[18];Rajvanshi 等人闡述了SVM 和樸素貝葉斯算法的文本分類過程,并利用WEKA 工具對兩種算法性能進行了評估和比較[19];劉思聰等人使用XGBoost模型對爬取到的網絡評論文本進行了分類,得到了93.12%的F1值[20];Nowak以西班牙語數據集、農場廣告和亞馬遜書評為例,展示了LSTM模型相對于其他文本分類算法的優越性[21]。董彥如等人使用一種雙向的由長短期記憶單元組成的RNN 架構模型——BiLSTM 算法,并融合了標簽嵌入進行了文本分類,得到了較好的結果[22]。上述提到的研究都只是單純的文本分類,還沒有把文本分類應用到自殺傾向檢測,并融入到問答系統。
心理健康一直是當今社會不可忽視的問題,每年甚至會有一大批人因心理問題而選擇自殺。如果他們了解心理知識,就會防止很多危險發生。總體來看,知識圖譜可以為心理咨詢領域提供智能化的信息存儲與管理,而問答系統就是知識圖譜為心理咨詢領域服務的媒介。另外,文本分類使問答系統更加智能,既可以加快問題與答案的快速匹配,也可以用來做自殺傾向的識別,使得系統功能更加完善。
問答系統與傳統的搜索引擎相比較,針對性更強,準確率更高,用戶也更容易接受。心理咨詢知識圖譜實現了心理咨詢領域各類知識的關聯和整合,把知識用專業化、結構化的方式進行語義表示,可以更便捷地管理和查詢知識[23]。本文所構建的問答系統偏向于心理咨詢專業知識的獲取,目的是幫助有心理問題的人找到正確的答案,且融入了自殺傾向檢測,及時識別危險發言。基于知識圖譜的心理咨詢問答系統框架主要包含四部分:數據獲取、圖譜構建、問題理解、用戶界面(圖1)。

圖1 心理問答系統框架Fig.1 System framework of psychological question answering system
本系統數據獲取模塊通過爬蟲技術獲取網頁有關數據并結合Chatopera 的開放數據,再通過數據處理整理成結構化數據,使用Neo4j的python驅動py2neo進行知識圖譜的構建。問題理解模塊是將問句通過HanLP工具進行分詞、詞性標注等處理,然后通過CHI 特征選擇,利用建立的BiLSTM模型分類器進行問題分類并判斷其是否有自殺傾向,最后利用BERT(Bidirectional Encoder Representation from Transformers)模型將問句轉換為詞向量進行語義相似度計算來匹配問題模板并生成答案。用戶界面模塊是用戶的問句輸入與系統答案反饋,并涉及到語音文本的相互轉換。
構建知識圖譜與進行文本分類的數據源為網絡文本數據和Chatopera 數據集,數據集包含了問句與標簽信息。網絡文本數據是使用網絡爬蟲技術在微博樹洞、百度知道、525心理網、壹心理、簡單心理上爬取有關自殺、自殘以及傷害傾向的問句以及有關心理疾病的結構化數據。Chatopera和一些專業人士合作完成了一個語料庫,這是心理咨詢領域首個開放的知識問答語料庫,包括20 000 條心理咨詢數據[23]。該數據集包括了自殺傾向的標注信息,通過該數據集提取標注信息與問句信息。問句信息包含了cat-id、cat、question三列,分別為類別編號、類別、問句(表1)。

表1 已標注的自殺傾向與正常問句示例Table 1 Examples of marked suicidal tendencies and normal questions
3.2.1 概念層構建
知識圖譜作為問答系統的數據庫支撐,因此首先要構建知識圖譜。以構建心理咨詢知識圖譜為基本目的,參照胡力所構建的心理咨詢本體庫[24]并咨詢了相關學者,對心理咨詢過程以及涉及到的心理學知識進行分析和總結。將心理咨詢信息主要分為患者、癥狀、診斷標準、發病原因、診斷結果、治療方法這六類。其中,發病原因分為生物學原因、心理性原因、社會性原因、防御機制。發病原因與診斷結果是因果關系,診斷結果分為患病嚴重程度與心理疾病名稱。診斷結果與治療方法是決定關系,治療方法分為心理治療、藥物治療、食物治療。治療方法與患者是執行關系,患者需要采用治療方法,患者主要包括患者的身份信息如年齡、身高、職業、性別等,還有患者的既往病史,這些都會影響到咨詢師的治療。患者與癥狀是患有關系,癥狀主要包括嚴重程度與癥狀。癥狀與診斷標準是從屬關系,診斷標準包括病程標準、嚴重標準、排除標準。表現這些元素涉及心理疾病的各個方面,而一則問答中通常涉及心理疾病多個方面的元素,且這些要素之間往往存在因果關系和依賴關系,使用protégé 工具構建了心理咨詢領域的實體關系圖(圖2)。

圖2 心理咨詢實體關系圖Fig.2 Entity relationship diagram of psychological counseling
3.2.2 實例層構建
將爬取到的數據整理成結構化數據,分為12 個字段,與上文設計的心理咨詢實體關系基本對應,分為疾病和與疾病相關的實體和屬性。實體為疾病、別名、癥狀、并發癥、藥物、食物,屬性為易感人群、檢查方式、治療方式、治愈期、花費、發病原因(表2)。

表2 爬取到的心理疾病數據示例Table 2 Examples of mental illness data crawled
實例層構建分為實體抽取、關系抽取、屬性抽取、三元組構建和知識存儲,這里使用Neo4j工具的python驅動py2neo工具來創建知識圖譜。實體抽取就是根據模式層的概念去抽取實體,將整理后結構化數據中的實體字段信息都保存成字典。關系抽取就是找到實體與實體間的關系,將疾病與其他實體和屬性的關系保存成字典。屬性抽取就是抽取部分實體的屬性信息,即將整理后結構化數據中的屬性字段信息都保存成字典。三元組構建就是將數據整理成(實體,關系,實體)的形式,分別創建不帶屬性字段的節點與帶有屬性的疾病節點,然后以疾病節點為start-nodes,屬性節點為end-nodes,用query="match(p:%s),(q:%s)where p.name='%s' and q.name='%s' create(p)-[rel:%s{name:'%s'}]->(q)" %(start_node,end_node,p,q,rel_type,rel_name)命令,通過前面建立的關系字典創建節點關系邊建立三元組。知識存儲是用平臺來存放構建的知識圖譜,這里使用了Neo4j 平臺來存儲所構建的心理咨詢的小型知識圖譜(圖3)。

圖3 已構建部分心理咨詢知識圖譜Fig.3 Part of constructed psychological counseling knowledge graph
3.3.1 分詞處理
首先對幾大主流分詞工具Jieba、HanLP、中科院分詞NLPIR進行測試,選用心理咨詢QA語料庫問答語句作為數據源。測試前,需要心理學專業人士挑選100條數據記錄并進行人工標注,實現分詞和詞性標注,以此作為實驗真值。測試時,把這100條數據記錄分別用三種分詞工具進行處理,將處理結果與專業人士標注結果相對比,得到三個分詞工具的準確率、召回率、F1值、分詞時間等評價指標(表3)。通過對三個分詞工具的測評,可以得出NLPIR的分詞效率最快,但HanLP準確率最高。結合測評結果和心理咨詢的需求,本研究選擇HanLP工具進行文本分詞工作,將上文所構建的疾病信息的字典導入HanLP的自定義詞典中,使分詞更加準確。

表3 三大分詞工具的測評結果Table 3 Evaluation results of three word segmentation tools
3.3.2 問題分類
本文結合獲取到的心理咨詢問答數據,并咨詢了專業心理咨詢師將常問問題分為五個類別,分別是疾病識別、事實類問題、方法類問題、列表類問題和其他問題。疾病識別類問題主要回答“什么病”,事實類問題主要回答“是什么”,方法類問題主要回答“怎么辦”,列表類問題主要是回答“有哪些”,自殺傾向類問題是用戶輸入的問句具有自殺傾向(表4)。

表4 心理問答問題分類Table 4 Classification of psychological questions and answers
由于問題分類與自殺傾向檢測原理相同,這里以自殺傾向文本分類的詳細過程為例來進行說明。本文將自殺傾向類問題分成了四類,分別為有自殺傾向、有自殘傾向、有傷害別人傾向和正常類別。分別從數據集的每個類別中各選取1 500、1 200、1 000、9 000 條作為訓練數據,然后再另選取150、120、100、900條作為測試數據。使用HanLP分詞工具并結合停用詞進行分詞工作,分詞后得到了自殺傾向、自殘傾向、傷害傾向、正常傾向各類別的特征詞,繪制了每個類別的詞云圖(圖4)。

圖4 自殺傾向、自殘傾向、傷害傾向、正常傾向類別詞云圖Fig.4 Word cloud picture of suicidal tendency,self-mutilation tendency,injurious tendency and normal tendency
利用式(1)來計算HanLP分詞后所有單詞的CHI值,以此作為問題分類與自殺傾向分類特征選擇的依據。

式中:N是標注的問句總數,A是用于記錄某一類中包含單詞t的文檔總數,B代表不屬于某一類但是也包含單詞t的文檔,C代表某一類不包含單詞t的文檔,D代表不屬于某一類不包含單詞t的文檔,CHI值代表兩種類別的區分程度,這里的CHI值越大代表該詞越能代表某一類別。
對所有單詞按CHI值從大到小進行排序,通過選取每個類別CHI 最大的150 個詞,得到選擇出的1 000 多維特征列表,并計算每一個問句的特征向量權重,即詞語在問句中出現,則賦值為1,否則為0,最終輸出為供分類器可識別的特征向量。
3.3.3 問題分類模型選取
在進行文本分類的工作時分別使用了Naive Bayes、決策樹、SVM、XGBoost、BiLSTM 五個模型,并比較每個模型訓練出來的效果,選取效果最好的分類模型用于該系統。在測試每個模型時,首先會得到每一類問題的準確率、召回率、F1值,然后對所有類別問句的準確率、召回率、F1值求平均值,這些值即代表了不同模型的分類精度(表5)。從表5的測試結果可以看出BiLSTM模型在分類效果上更加準確。

表5 幾種模型分類效果比較Table 5 Comparison of classification effects of several models %
BiLSTM 模型可以通過前面的信息來預測后面的信息[25],非常適合處理句子這種有上下關聯的文本數據。以BiLSTM 模型對自殺傾向類問題的分類過程為例,分詞選擇了HanLP 分詞工具,分類完成后便得到了損失函數和準確率函數圖像(圖5)。

圖5 使用BiLSTM模型的損失函數和準確率函數圖像Fig.5 Loss function and accuracy function images used by BiLSTM model
圖5 中,train 代表訓練集,test 代表測試集,函數的橫軸為訓練的迭代次數,豎軸分別代表損失值與準確率值。當迭代次數變大時,損失率逐漸降低,在迭代次數為14次的時候開始持平,訓練集趨于0.1與0.2之間,測試集趨于0.2到0.3之間。而準確率逐漸增加,在迭代次數為14次的時候開始持平,訓練集趨于0.975,測試集趨于0.925到0.950之間。
通過測試每一類問題的準確率、召回率、F1值來評價該模型(表6),可以得出BiLSTM 模型要比前面四種模型分類效果更好。

表6 使用BiLSTM模型測試的自殺傾向分類結果Table 6 Results of suicidal tendency classification tested by BiLSTM model %
3.3.4 問題模板匹配
AC(Aho-Corasick)算法[26]中包含了Trie 樹和fail 指針,在進行多模式字符串匹配時,相比于傳統算法減少了很多時間復雜度。本文通過AC算法構建了不同實體類型的ACtree,將所有實體添加到樹中。在運用到該系統時,其原理即為詞典的匹配。
在系統得到用戶輸入的問題后,首先進行實體的抽取,然后再進行意圖識別,利用建成的AC樹便可以檢測實體類型。如果AC樹匹配成功,則只需要根據匹配到的實體與關系來進行意圖識別查找答案。AC樹匹配失敗時,系統將其問題與設計的問題模板相匹配來得到答案。以疾病識別的問句為例(表7),包括主模板與附屬模板,主模板直接對應Cyper 語句的關鍵詞,附屬模板就是具體的問句形式。

表7 問題模板示例Table 7 Example of question templates
根據每一類別的問題設計了對應的模板,設計問題模板的好處在于當用戶輸入問題意圖不是很明顯時,系統可以根據相似度排名情況來識別問題意圖。本次共設計了92條主模板,1 600條附屬模板。
問題模板相似度計算是將用戶輸入的自然語言問句在去除停用詞后與問題模板相對比,利用式(2)、(3)、(4)分別計算三種相似度得分,最后利用式(5)求三個得分的加權平均值,選擇得分最高的問題模板來查找答案。對于式(2),需要用到bert-as-service(一個封裝好的BERT工具)將問句與問句模板轉換為向量[27],再進行相似度計算。
利用式(2)計算相同字符數除以總字符數得分。

式中:sim_num代表相同字符數,c代表總字符數。
利用式(3)采用DP(Dynamic Programming)方法計算字符串與字符串之間的編輯距離[28]得分。

式中:a和b代表兩個字符串的長度,edit(a,b)代表從一個字符串到另一個字符串的操作變換次數。
利用式(4)采用余弦相似度(Cosine)算法[29]計算用戶問句向量與模板向量的相似度得分。

式中:A和B是兩個n維向量,余弦值越大就表示越相似。
利用式(5)計算三個得分的平均值,得到問句與模板相似度平均值。

式中:Score1 代表相同字符得分,Score2 代表編輯距離得分,Score3 代表余弦相似度得分。
經過多次實驗,當問句與模板相似度平均值Score大于等于0.7 時,該模板選定為用戶提問問題模板。當出現多個一樣的值時,說明該問題較為模糊,先根據值的小數點精確位數判斷值的大小,如果一模一樣,系統就會將這些問題模板都返回給用戶讓用戶來選擇。
答案生成模塊主要負責問答系統的心理咨詢知識圖譜匹配來預測用戶的行為,即意圖識別。該模塊輸入用戶的會話狀態,輸出預測的行為。經由問題理解模塊對用戶輸入的自然語言語句進行問題分類、問題模板匹配后,從用戶提問中抽取實體與關系生成Cypher 語句來返回查詢答案。以“雙相情感障礙有哪些癥狀”問句為例,展示了生成的Cypher語句與查詢結果(表8)。

表8 心理咨詢知識圖譜查詢示例Table 8 Query example of psychological counseling knowledge graph
為了測試心理問答系統的準確性,依據前文問題分類,對每一類分別設計了50條問題,對系統返回的答案進行測評,以驗證問答系統的性能。利用式(6)將系統正確回答的問題數除以輸入總問題數的比值作為系統的準確率。

式中:σ代表問答系統的回答正確率,x代表正確回答的問題數,y代表輸入的問題總數。
以失眠癥狀來詢問所患疾病為例,系統會查詢所有有失眠癥狀的疾病,反饋給用戶這些疾病的其他癥狀,用戶再次輸入所患其他癥狀,系統根據這些癥狀返回所患的疾病。以失眠癥為例,用戶還可以詢問失眠癥可以吃的藥以及治療方式。當用戶輸入自殺傾向發言時,系統也會檢測出來(圖6)。

圖6 問答系統界面Fig.6 Interface of question answering system
通過測試每類問題的回答正確率,得到該系統給出正確回答的概率為82%,由此來看本研究構建的基于心理咨詢知識圖譜的問答系統可以有效地回答用戶提出的心理問答方面的問題(表9)。

表9 心理問答系統測試結果Table 9 Test results of psychological question answering system
將系統給出正確回答的問題與系統給出錯誤回答的問題相比較,可以看出,正確回答的問題大部分具有與問題模板類似的特點,也有一部分問題與問題模板有相同的實體和語義,但表達方法不同,可以證明該問答系統有較高的語義理解能力。而對于沒有正確回答的問題,其具有兩個特點:對于這些問題中的實體,系統可以識別,但是語義信息沒有出現在模板中則不能識別,如“雙相情感障礙的一般發病年齡是多少?”或“雙相情感障礙能不能醫治得到痊愈?”等;另一個特點是涉及到的實體屬性信息不夠全面,如藥物存在哪些副作用等屬性信息應該添加到知識圖譜中。
當今社會面臨著知識爆炸的問題,尤其是各種領域知識相互摻雜,影響著人們對知識的獲取與理解。垂直領域知識圖譜存儲了某一領域的專業知識,極大地方便了用戶來了解該領域的知識,利用這些知識去減少損失或創造更大的價值。本文構建的心理咨詢知識圖譜與問答系統有以下特點:(1)提供了一個平臺可以存儲心理疾病的知識,比傳統的數據庫更具語義化。(2)構建的問答系統實現了分詞處理、問題分類、問題模板匹配、答案生成一套完整的流程,可以幫助用戶判斷所患心理疾病,也可以幫助用戶查詢有關心理疾病的相關知識,具有一定的研究意義與價值。(3)在問答系統中優選了BiLSTM模型來進行自殺傾向檢測。實驗結果證明,本文模型在進行自殺傾向檢測時的準確率、召回率、F1值要明顯優于其他傳統模型。