汪正康,劉 陽,楊錦鋒,梁先桂,郭熙銅
(1.哈爾濱理工大學 計算機科學與技術學院,黑龍江 哈爾濱 150080;2.哈爾濱工業(yè)大學 經濟與管理學院,黑龍江 哈爾濱 150001)
以糖尿病為代表的慢性病發(fā)病率高、持續(xù)時間長并且醫(yī)療支出成本高,已成為導致我國居民預期壽命受損、因病致貧、因病返貧的主要疾病。一方面,慢性病發(fā)展進程相較于急性病顯得溫和,因而其危害性和對其進行健康管理的重要性容易被忽視;另一方面,我國慢病患者數(shù)量龐大,醫(yī)療資源緊張、醫(yī)療資源分配不均等問題導致慢病患者得不到有效的慢病管理,加劇了慢病患者的醫(yī)療成本和貧困狀況。慢性病已成為重大公共衛(wèi)生問題和社會問題,為應對慢性病帶來的重大公共衛(wèi)生威脅,國務院于2017年印發(fā)的《新一代人工智能發(fā)展規(guī)劃》明確提出推廣應用人工智能治療新模式新手段,建立快速精準的智能醫(yī)療體系,發(fā)展智能醫(yī)療和智能健康管理。慢性病患者通常受多種癥狀長期困擾,對健康管理的需求是隨時隨地的,且具有個性化,以聊天機器人(Chatbot)形式的健康管理服務具備向廣大慢性病患者提供及時且個性化健康服務需求的潛力。作為人工智能技術的典型代表,聊天機器人,也叫對話系統(tǒng)(Dialogue System),以其智能、自主、易擴展的優(yōu)勢,正逐步發(fā)展為慢性病健康管理的新技術和新方式。
糖尿病患者在日常生活中難免會產生一些關于疾病方面的疑問,例如,“糖尿病患者能喝湯嗎?”,“有胃病的人應該吃什么降糖藥對胃的刺激小一點?”等等。當這些日常生活上的問題不足以驅使患者大費周章去醫(yī)院時,糖尿病健康管理對話系統(tǒng)便顯得尤為重要,它作為一個貼身“醫(yī)生”,能高效解答廣大患者日常醫(yī)療咨詢方面的問題,讓患者享受到高效便捷的智能服務。
當前主流的對話系統(tǒng)主要分為任務導向型對話系統(tǒng)(Task-Oriented Dialogue System, TOD)和開放域對話系統(tǒng)(Open-Domain Dialogue System, OOD)兩大類[1]。任務導向型對話系統(tǒng)中,人機對話具有較強的目的性,對話系統(tǒng)主要為了幫助用戶完成某些特定的任務。而開放域對話系統(tǒng)中,對話系統(tǒng)主要與用戶進行閑聊,沒有特定領域的限制。
本研究關注的糖尿病健康管理對話系統(tǒng)為任務導向型對話系統(tǒng),主要服務于糖尿病患者,在居家場景下為患者解答日常生活中糖尿病相關問題。該對話系統(tǒng)采用管道結構,將核心功能分為自然語言理解(Natural Language Understanding, NLU),對話狀態(tài)跟蹤(Dialogue State Tracking, DST),對話策略(Dialogue Policy, POL)和自然語言生成(Natural Language Generation, NLG)四個模塊。自然語言理解模塊主要描述為意圖識別(Intent Detection)任務,根據(jù)醫(yī)患語句,識別對話意圖(Intent)以及收集所傳遞的信息,例如患者的血糖值,飲食情況以及醫(yī)生給出的用藥建議等,并輸出相應的對話動作。對話狀態(tài)跟蹤模塊通過自然語言理解模塊抽取的關鍵信息,跟蹤維護更新患者以及系統(tǒng)的對話狀態(tài),即置信狀態(tài)(Belief State)。對話策略模塊根據(jù)患者的對話狀態(tài),學習醫(yī)生的對話動作,進行下一步決策并輸出對話動作,例如系統(tǒng)針對患者當前描述的飲食情況進行多吃或少吃的建議。自然語言生成模塊關注的任務為受控對話生成,利用對話策略模塊決策的對話動作生成通順的、患者能夠理解的自然語言。
作為數(shù)據(jù)驅動型對話系統(tǒng),以上模塊模型的訓練自然離不開大量數(shù)據(jù)的支撐。本研究為糖尿病健康管理對話系統(tǒng)構建了名為“Diachat”的數(shù)據(jù)集,從醫(yī)生與糖尿病患者的溝通記錄中收集并整理對話數(shù)據(jù),制定對話標注規(guī)范,對每句話進行標注,同時基于標注數(shù)據(jù)構造用戶目標和對話狀態(tài),完整支持四個模塊的研究。該數(shù)據(jù)集的標注規(guī)范和部分數(shù)據(jù)樣例可通過此鏈接(1)https://hrbust-youth.github.io/2022/11/20/Diachat簡介及相關信息/下載獲取。
本文在接下來主要內容為介紹Diachat源數(shù)據(jù)的準備過程,數(shù)據(jù)標注規(guī)范的制定,數(shù)據(jù)標注的過程,對話狀態(tài)的構造,數(shù)據(jù)集規(guī)模的介紹與對比。
本文主要關注典型任務型對話系統(tǒng)數(shù)據(jù)集和醫(yī)療健康咨詢對話系統(tǒng)數(shù)據(jù)集。典型任務型對話系統(tǒng)以出行咨詢對話系統(tǒng)為代表,如MultiWOZ[2]數(shù)據(jù)集,標注體系完善,規(guī)模龐大,受關注度高。醫(yī)療健康咨詢對話系統(tǒng)正獲得越來越多的關注,關注的問題涉及醫(yī)療問診、飲食、運動等有關健康的方方面面。
當前已發(fā)布的一些大規(guī)模任務導向型對話數(shù)據(jù)集和開放域對話數(shù)據(jù)集大多都是通過人-人模擬對話進行構建,一人扮演對話系統(tǒng)(Wizard),一人扮演用戶(User)。任務導向型對話的對話系統(tǒng)起到主導作用,對話系統(tǒng)通過數(shù)據(jù)庫查詢用戶需要的信息,然后將信息提供給用戶,用戶只需要將自己的需求表達出來即可。在任務導向型對話數(shù)據(jù)集構建過程中需要為當前對話給定對話目標(Goal),對話圍繞完成對話目標而展開。對話系統(tǒng)與用戶的對話在標注工具的支持下通過文字形式交替對話,在對話過程中對他們的語句進行標注操作。出行咨詢對話系統(tǒng)是目前研究涉及最多的領域,這方面具有代表性的英文數(shù)據(jù)集是MultiWOZ,中文數(shù)據(jù)集是CrossWOZ[3]。
MultiWOZ是一個大規(guī)模多領域、多輪次的任務導向型對話數(shù)據(jù)集,該數(shù)據(jù)集跨越了7個領域,包含了10 000多個完全標記的對話語句,7個領域分別為Attraction,Hospital,Police,Hotel,Restaurant,Taxi和Train。MultiWOZ使用了Wizard-of-Oz的眾包方式創(chuàng)建大規(guī)模人類自然對話語料庫,眾包方式可以以相對較低的成本和較短的時間收集帶注釋的對話語料庫。為了收集大規(guī)模的數(shù)據(jù),收集方為對話系統(tǒng)提供了易于操作的系統(tǒng)界面供對話系統(tǒng)訪問數(shù)據(jù)庫,為用戶提供了易于遵循的目標。該數(shù)據(jù)集將需求預定(Booking Requirement)視作一個單獨的任務,并以一定的概率在允許的領域抽樣額外的預定請求,以此構造出對話目標。為了確保一致性,對話系統(tǒng)和用戶都需要通過事先查看對話歷史以了解各自的對話上下文信息。CrossWOZ數(shù)據(jù)集是一個類似于MultiWOZ的大規(guī)模多領域多輪對話中文數(shù)據(jù)集,涉及景點、酒店、餐館、地鐵、出租5個領域。CrossWOZ對話數(shù)據(jù)來自參加眾包的工作人員(Worker)模擬用戶在北京地區(qū)旅游時與客服的對話,對話場景包括景點推薦、餐館推薦、預訂酒店等。收集方為工作人員提供了一個在線對話網站,選擇用戶和系統(tǒng)角色的兩個工作人員匹配成功后,雙方進入聊天室圍繞對話目標進行模擬對話和標注工作。收集方為用戶提供了對話目標,為系統(tǒng)提供了數(shù)據(jù)庫查詢服務。CrossWOZ的對話目標基于數(shù)據(jù)庫生成,通過設計模板生成任務目標的自然語言描述。景點、餐館、酒店以及這些地點鄰近關系的數(shù)據(jù)庫信息通過爬蟲獲取,組成了數(shù)據(jù)庫。相比MultiWOZ,CrossWOZ提供了更加全面的標注信息,除了提供對話雙方的對話目標、系統(tǒng)端的對話狀態(tài)這些信息之外,還額外提供了每輪用戶端的對話狀態(tài)。用戶端狀態(tài)記錄了目標的完成情況,每輪根據(jù)系統(tǒng)回復動態(tài)更新,可用于研究用戶模擬器的搭建。與MultiWOZ和CrossWOZ類似構建方法的數(shù)據(jù)集還有SGD、NLU++等。這類數(shù)據(jù)集規(guī)模龐大、標注體系完整,其構建思路和方法值得借鑒。
醫(yī)療健康咨詢是任務型對話系統(tǒng)關注的又一項重要任務,旨在為用戶提供實時的健康咨詢,緩解醫(yī)療資源緊張等問題。醫(yī)療健康咨詢除了疾病、癥狀、用藥等醫(yī)療問題咨詢,還涉及飲食、運動、減肥等方面,在這些咨詢任務的探索中,數(shù)據(jù)集一般來自線上平臺的醫(yī)患咨詢數(shù)據(jù)。
Zhang等人[4]基于心內科咨詢對話數(shù)據(jù)探索了對話數(shù)據(jù)的信息抽取,從而自動生成電子病歷,該數(shù)據(jù)集設計了四個實體Symptom,Surgery,Test,Other info,每個實體有若干相關實體屬性,醫(yī)療實體構造的標簽集是有限集合,因此該研究采用多標簽分類的方法來進行關鍵信息抽取。在Shi等人[5]的相關研究中,源數(shù)據(jù)來自于丁香園和百度拇指醫(yī)生。該研究中數(shù)據(jù)集的構造定義了分類標簽,也采用了多標簽分類的思路。但本研究還額外考慮了弱監(jiān)督的策略以減少人工標注的樣本量。在Liu等人[6]的研究中為醫(yī)療對話系統(tǒng)構建了一個大規(guī)模醫(yī)療對話數(shù)據(jù)集,源數(shù)據(jù)來自于春雨醫(yī)生腸胃病咨詢數(shù)據(jù),腸道病相關的實體來自中文醫(yī)療知識圖譜CMeKG。該研究把醫(yī)療對話系統(tǒng)構建分解為兩個任務,首先基于對話歷史預測醫(yī)生的回復里將要包含的醫(yī)療實體,然后基于預測的醫(yī)療實體生成醫(yī)生的回復。為了有效預測醫(yī)生的回復里將要包含的醫(yī)療實體,需要構建標注數(shù)據(jù),將實體預測任務轉化為多標簽分類,實體一共5個大類,160個小類。Gupta等人[7]的研究值得關注,其數(shù)據(jù)并非來自真實數(shù)據(jù),而是召集用戶和健身教練在模擬場景下構造出來的對話數(shù)據(jù),研究目的是開發(fā)一個虛擬健康教練,以對話的形式幫助患者設定活動目標,并督促執(zhí)行,因此需要識別對話表達的目標,并在隨后的對話中識別任務不同階段的進展。該研究通過招募慢性病患者和健身教練,收集對話數(shù)據(jù),進行了兩輪收集,第一輪招募了1個健身教練和28個患者進行一對一文本對話交流,一共2 853條對話記錄,第二輪招募了3個教練和30個患者。在Du等人[8]的研究中,研究的任務是從對話記錄中識別患者表達的癥狀及其狀態(tài),因此僅對癥狀和狀態(tài)進行了標注,能支持對話理解的研究。由于癥狀在表達上的靈活性,對話中存在顯式表達和隱式表達,該研究針對顯式表達采取的是BIO的標注方法,針對隱式表達采取的是給文本塊標注分類標簽的方法。
上述醫(yī)療健康領域對話系統(tǒng)數(shù)據(jù)集主要側重于從對話記錄中抽取關鍵信息,適用于任務導向型對話系統(tǒng)中自然語言理解模塊的研究,但不足以支撐完整對話系統(tǒng)構建。另一方面,現(xiàn)有醫(yī)療健康領域對話數(shù)據(jù)集主要來自臨床場景,面向醫(yī)療問診,而在慢性病健康管理這一領域較少涉及。本文基于收集到的醫(yī)生和糖尿病患者的對話數(shù)據(jù),歸納出對話場景和領域,定義意圖和槽位(Slot),制定了對話標注規(guī)范,構建了Diachat數(shù)據(jù)集,同時構造了對話目標和對話狀態(tài),為糖尿病健康管理對話系統(tǒng)提供了完整的數(shù)據(jù)支持。
本文Diachat對話數(shù)據(jù)來自于QQ群中糖尿病患者與醫(yī)生的對話,患者在QQ群里就生活中的日常問題如飲食、運動、吃藥、血糖值等問題向醫(yī)生咨詢,醫(yī)生就患者的問題、身體情況進行追問或者解答。我們把一個醫(yī)生和同一個患者在短時間內的聊天記錄合并在一起,組成患者與醫(yī)生的一次咨詢記錄,即為一段對話。
對話數(shù)據(jù)經過如下的清洗和處理,最終得到Diachat對話數(shù)據(jù)集:
(1) 刪除對話中公司名稱、醫(yī)生名稱,以及@符號提及的用戶名;
(2) 本研究規(guī)定Diachat的每段對話由患者發(fā)起,醫(yī)生結束,即患者的語句作為每段對話的第一句話,醫(yī)生的語句作為每段對話的最后一句話。若數(shù)據(jù)中某段對話的最后一句話由患者發(fā)出,我們就利用規(guī)則為醫(yī)生添加一句“不客氣”;
(3) 在日常在線聊天場景中,聊天雙方可能連續(xù)發(fā)送多條消息,Diachat數(shù)據(jù)也一樣,我們利用規(guī)則對一個聊天角色的連續(xù)消息進行合并歸為一句話,確保患者與醫(yī)生的語句嚴格交替進行。
另外,由于數(shù)據(jù)來自于QQ群聊天記錄,有不少患者多次咨詢醫(yī)生的聊天記錄,這類持續(xù)咨詢數(shù)據(jù)有助于后續(xù)更好地探索患者健康跟蹤,針對這種情況,我們保留了患者的ID信息,以便能獲取到一個患者的持續(xù)咨詢數(shù)據(jù)。
本研究的標注規(guī)范制定是在逐步迭代中完成的。首先,考察糖尿病咨詢的對話數(shù)據(jù),歸納出對話場景,定義意圖、領域和槽位,制定初步規(guī)范;然后,基于規(guī)范對數(shù)據(jù)進行標注,在標注過程中改進標注規(guī)范,再用新規(guī)范標注對話數(shù)據(jù),如此迭代,直至標注規(guī)范穩(wěn)定。通過對一定數(shù)量的Diachat對話語句分析,本研究歸納出6個領域以及各自對應的槽位: 患者所咨詢的問題,患者的飲食情況,患者的行為,患者進行過的運動,患者目前采取的治療方式,患者的基本情況。在健康咨詢中,對話場景比較復雜,醫(yī)生和患者表達的語義比較多樣化,本研究歸納出涵蓋醫(yī)生與患者對話語句的15個動作標簽,動作標簽是自然語言理解模塊基于對話動作的表示形式,與任務導向型對話系統(tǒng)中對話意圖類似。語義即可通過動作標簽與領域-槽位-槽值的組合以結構化的形式進行表達。
3.1.1 領域和槽位
領域和其對應的槽位是對糖尿病健康管理領域重要信息的結構化表示,可作為醫(yī)生與患者進行健康管理咨詢時的信息獲取目標和信息傳達目標,同時也限定了對話信息的涉及范圍。
(1) 問題
問題的槽位有疾病、癥狀、癥狀部位、持續(xù)時長、血糖值以及時間等。主要標記患者的疾病、癥狀、以及誘發(fā)和被誘發(fā)的癥狀。問題及相關槽位詳情如表1所示。
表1 問題及相關槽位詳情
(2) 飲食
飲食的槽位有飲食名、時間、飲食量、成分、成份量、效果。主要標記患者的日常飲食信息。飲食及相關槽位詳情如表2所示。
表2 飲食及相關槽位詳情
(3) 行為
行為的槽位有行為名、頻率、時間、持續(xù)時長、效果。主要標記患者日常行為的信息。行為及相關槽位詳情如表3所示。
表3 行為及相關槽位詳情
(4) 運動
運動的槽位有運動名、頻率、時間、持續(xù)時長、強度、效果。主要標記語句中表達的運動項目,也可以標記籠統(tǒng)的運動,如醫(yī)生建議患者適當運動。運動及相關槽位詳情如表4所示。
(5) 治療
治療的槽位有藥品、用藥量、用藥(治療)頻率、時間、持續(xù)時長、適應癥、藥品類型、治療名、部位、檢查項、檢查值、效果。主要標記語句中所采取的治療項目等相關信息。治療及相關槽位詳情如表5所示。
(6) 基本信息
基本信息的槽位有身高、體重、年齡、性別、既往史。主要標記患者自身的身體信息?;拘畔⒓跋嚓P槽位詳情如表6所示。
表6 基本信息及相關槽位詳情
3.1.2 動作標簽
在任務導向型對話系統(tǒng)中,自然語言理解NLU(或Spoken Language Understanding,SLU)結果的兩種表示方式分別為基于意圖表示和基于對話動作表示,兩種表示方式都是基于框架(Frame-based)的結構。在Zhang等人[9]的任務導向型對話系統(tǒng)的最新進展和挑戰(zhàn)文章中,作者在任務表述上并未區(qū)分意圖和動作。雖然基于意圖表示和基于對話動作表示方式相似,但卻存在區(qū)別。在Qin等人[10]的自然語言理解的最新進展和新前沿的綜述文章中提到,現(xiàn)有研究基本上都將自然語言理解任務分解為意圖分類(Intent Classification)和槽位填充(Slot Filling)兩個子任務,而大型對話數(shù)據(jù)集MultiWOZ和CrossWOZ則將自然語言理解任務分解為動作分類(Act Classification)和槽位填充。兩種表示方式各有優(yōu)劣,適用的交互對話場景也有所不同。基于意圖表示方式一般應用在人機交互(Human-Machine Interaction)中。早期的任務導向型對話系統(tǒng)可以追溯到呼叫中心或者電話客服,用戶使用語音服務時,呼叫路由系統(tǒng)(Call Routing System)根據(jù)用戶的呼叫意圖自動路由(Call Routing)至對應的業(yè)務處理模塊。由于呼叫中心只能處理有限的任務,所以呼叫意圖自動路由任務本質為呼叫路由系統(tǒng)對呼叫類別進行分類,也就是意圖。因此,人機交互對話場景的首要任務為意圖分類,同時,對話意圖也代表著用戶的目標或者對話系統(tǒng)要完成的任務。所以意圖通常是領域相關的(Domain-dependent),例如,訂酒店、退機票、改簽火車票這三種意圖即為領域明確的任務。意圖分類也被叫做意圖確定(Intent Determination),確定意圖后進行槽值填充,識別與意圖密切相關的信息要素,領域,意圖與槽值對(Slot-value)組合起來表達用戶目標,所以槽位是意圖相關的。在基于意圖表示的語義框架表示下,頂層是領域,然后是意圖,最后是槽位。在基于意圖表示的語義框架中,一個領域可以有多個意圖,并且相同領域下的多個意圖可以有不同的槽位,每個意圖的槽位是領域槽位的子集。所以領域-意圖-槽位的完整結構如圖1所示,可以看出該結構在表達跨領域語義方面稍顯不足。
圖1 領域-意圖-槽位的完整結構
基于對話動作表示方式多應用在人-人交互(Human-Human Interaction)中。對話動作的源起比呼叫意圖自動路由還要早。在對人-人對話(包括多人會議)的分析探索中,演講動作理論(Speech Act theory)被提出來,該理論認為對話中說話者說的每句話都是要完成一個動作,根據(jù)動作的性質,分為四類或者五類[11],該理論啟發(fā)了對話動作的設計和應用。人-人對話的研究理論和方法很自然地應用到人-機對話中,自然語言理解的輸出也可以表示為對話動作的形式[12],成為和基于意圖表示研究并行的一種表示方式,其中最有代表性的學者是Steve Young和Dan Jurafsky。在Young的代表性研究[13]中,基于對話動作的表示結構為Actt(a1=v1,a2=v2,...),“actt”即動作類別(Act Type),根據(jù)對話系統(tǒng)交互特性設計,也叫對話動作,動作類別的參數(shù)是槽值對列表,例如:
Inform(Type=Restaurant,Food=Italian,Near=Cinema)
在Young的研究中,一個語句只能用一個對話動作表示意圖,為了兼顧多意圖場景,一個對話動作可以有多個槽值對作為參數(shù),并且對多個槽值對的對話動作和多個對話動作做了區(qū)分[14],這一點在本文的Diachat數(shù)據(jù)集上也有體現(xiàn)。對話動作的一個重要特點就是動作類別與領域無關,而與交互的行為特性相關。這與人-人交互研究中對話動作最初的理論和應用有關。Gokhan等人[15]在從語音中提取語義信息的自然語言理解系統(tǒng)的研究中對對話動作的特性總結為三條:
(1) 對話動作是對語句行為的基本抽象和近似表示;
(2) 對話動作是領域獨立的;
(3) 對話動作的主要目標是用于對話語句的篇章分析和理解。
在對話動作的語義結構中,槽位是領域相關的,對話動作的表示結構同樣涉及動作類別,領域和槽位三個方面,其一般結構可表示為:
Act_type(Domain1.slot1=value1,Domain2.slot2=value2,...)
動作標簽-領域-槽位的完整結構如圖2所示,此結構的優(yōu)點在于可以很自然地表示跨領域的語義和行為,并且由于對話動作是從交互行為的角度設計,因此也適用于表示系統(tǒng)端語句,即對話管理(Dialogue Manager,DM)的輸出,以及自然語言生成的輸入。不過用戶和系統(tǒng)的行為是有區(qū)別的,所以對話類別的定義需要考慮交互過程中角色的語句動作。
圖2 動作標簽-領域-槽位的完整結構
基于以上對自然語言理解結果的兩種表示方式分析,Diachat數(shù)據(jù)集的交互模式為人-人交互,且從對話雙方交互行為考慮,醫(yī)患對話意圖涉及多領域信息,動作類別和領域-槽位呈現(xiàn)弱相關性。同時,Diachat的對話目標并非訂酒店、退機票、改簽火車票等常規(guī)任務。所以Diachat數(shù)據(jù)集采用對話動作對跨領域的語義和行為進行表示。通過對數(shù)據(jù)的分析和歸納,Diachat定義了15種表示行為的動作標簽,即動作類別,動作標簽和領域-槽位-槽值共同組成一個完整的對話動作。對話動作從兩個方面表達表示語義和行為: 首先,領域-槽位-槽值作為動作標簽的參數(shù),部分動作標簽沒有領域-槽位-槽值;其次,動作標簽與對話的角色相關,有些動作標簽表示患者的動作,有些表示醫(yī)生的動作,有些表示患者和醫(yī)生都具有的動作。
(1) 領域-槽位-槽值作為動作標簽的參數(shù)
對于一句話,可以用同一動作標簽來表示槽位之間的組合關系。有些槽位在一句話中是搭配出現(xiàn)的,如血糖值和時間,這兩者存在關聯(lián)關系,因此一句話中同一動作標簽可以記錄多個槽位來表示它們之間的組合關系。例如,醫(yī)生建議患者: “餐后血糖值控制在10以內?!边@句話的標注如下:
Advice(問題.時間=餐后,問題.血糖值=10以內)
同時,標注中可以多次使用同一動作標簽來表示組合關系,例如,同一句話中的Domain.slot1=value1與Domain.slot2=value2的關系是相互對應的,Domain.slot3=value3與Domain.slot4=value4是對應的。則這句話的標注如下:
Advice(Domain.slot1=value1,Domain.slot2=value2)
Advice(Domain.slot3=value3,Domain.slot4=value4)
(2) 動作標簽與對話的角色相關
醫(yī)生和患者在咨詢對話中的角色不是對等的,表達的行為和語義也有較大差異,動作標簽與對話角色的相關性體現(xiàn)了不同角色的對話場景。動作標簽與患者的對話場景和醫(yī)生的對話場景如表7、表8所示?;颊邔υ挼娜齻€主要場景分別是向醫(yī)生告知當前健康狀況、向醫(yī)生詢問具體的問題、回應醫(yī)生的提問或建議,也會有些閑聊的語句。
表7 患者的動作標簽和對話場景
表8 醫(yī)生的動作標簽和對話場景
醫(yī)生在對話中被動地響應患者,對應的三個主要場景分別是根據(jù)患者告知的信息或患者提問給出確切的回答,為了進一步了解患者而追問患者的情況、再就是一些寬泛的回答。在健康管理應用中,患者是主導,主動尋求幫助,醫(yī)生被動響應。這一點與門診咨詢不同,在門診咨詢中,醫(yī)生是主導,主動詢問患者的問題,并引導門診咨詢的進展。
15種動作標簽匯總以及標注示例如表9所示(2)各動作標簽詳細定義可通過引言的Diachat標注規(guī)范下載鏈接獲取。
表9 動作標簽信息匯總
在制定標注規(guī)范的同時,本研究開發(fā)了對話數(shù)據(jù)標注系統(tǒng)。標注主界面如圖3所示,分為左右兩部分,左邊是對話記錄,右邊是標注人員對左邊語句進行標注的窗口。對話數(shù)據(jù)的標注工作比較繁瑣,本研究采取如下三個方面的措施盡可能保證標注的準確性:
圖3 標注界面
(1) 在進入正式標注工作之前,標注人員進行了培訓和多次預標注,直至掌握了標注規(guī)范;
(2) 數(shù)據(jù)首輪標注結束后,通過程序自動檢查出一些規(guī)則性錯誤,又進行了多次人工核查,以盡可能消除標注錯誤;
(3) 在后續(xù)模型訓練工作中,對發(fā)現(xiàn)的錯誤標注也進行了多次修改。
對話狀態(tài)是每輪對話的重要信息,是系統(tǒng)端對用戶現(xiàn)狀的記錄和對用戶的響應記錄?,F(xiàn)有醫(yī)療健康領域的對話數(shù)據(jù)集僅對語句進行了標注,缺少對話目標、對話狀態(tài)、用戶端和系統(tǒng)端的狀態(tài)構造,因此不足以支撐完整對話系統(tǒng)的構建。對話系統(tǒng)中對話狀態(tài)跟蹤模塊需要通過前一輪的對話狀態(tài)、對話歷史、當前對話等信息,推斷并更新置信狀態(tài),所以Diachat數(shù)據(jù)集針對用戶和系統(tǒng)的對話狀態(tài)構造了用戶狀態(tài)(User State)和系統(tǒng)狀態(tài)(System State)。而對話策略模塊探索強化學習(Reinforcement Learning, RL)方法時,對于用戶模擬器、系統(tǒng)模擬器、智能體(Agent)的搭建,用戶狀態(tài)、系統(tǒng)狀態(tài)和對話目標也是不可或缺的。綜上,Diachat構造了對話狀態(tài)和對話目標,為對話狀態(tài)跟蹤,對話策略模塊提供數(shù)據(jù)支持,支撐對話系統(tǒng)完整的數(shù)據(jù)需求。
3.3.1 用戶目標和用戶狀態(tài)
對話系統(tǒng)中,用戶端對應的是患者。Diachat數(shù)據(jù)集為每段對話構造了初始的用戶目標和最終目標(Final Goal),隨著對話的展開,每輪對話的對話動作更新用戶目標,即得到每輪對話的用戶狀態(tài)。在Diachat對話數(shù)據(jù)中,某些患者的目標不明確,與出行咨詢的目標有很大不同。Diachat數(shù)據(jù)集將患者的目標分為兩種,第一種是患者表達明確問題的目標,第二種是患者表達當前情況的目標。
對于第一類目標,患者說出他目前的癥狀、飲食、治療、運動等情況后(對應的動作標簽是Inform),引出一個具體問題,例如患者詢問醫(yī)生: “是不是不能喝呀”,希望得到患者一個明確的回答。第一種對話患者表達了明確的問題,在Diachat標注體系里主要涉及AskForSure、AskFor、AskHow、AskWhy這四個動作標簽。針對這四類問題,醫(yī)生給出了回答,即認為患者詢問的目標達到了。
對于第二類目標,在表10例舉的對話中,患者只在講述自身情況,語句中沒有明確的、顯式的問題,這在健康管理咨詢中很常見?;颊咄ㄟ^講述自身情況,目標無非是獲得醫(yī)生對健康方面的建議或者對疾病認知的理解。所以,患者講清楚自己當前的情況,讓醫(yī)生對自己有充分的了解,至于醫(yī)生是給出建議還是給出解釋都是可以的。如果醫(yī)生覺得用戶當前有哪些做得不好,就會給出建議;如果醫(yī)生覺得目前用戶情況正常,不必擔心,就可以給出個解釋讓用戶寬心。所以,在這類場景下,患者描述完自己的情況就算是達到目標了。
表10 患者表達當前情況的目標對話示例
通過對患者兩類目標的分析,本研究可以基于患者對話數(shù)據(jù)的標注構造用戶目標,其思路就是遍歷一次咨詢對話中所有患者語句的對話動作標注,抽取Inform、AskHow、AskWhy、AskFor、AskForSure的領域和槽位,即構成患者每次咨詢要完成的任務目標。
3.3.2 系統(tǒng)狀態(tài)
系統(tǒng)端對應對話中的醫(yī)生角色。Diachat數(shù)據(jù)集的系統(tǒng)狀態(tài)是指每輪對話時系統(tǒng)的狀態(tài),分為系統(tǒng)響應用戶前的狀態(tài),即初始系統(tǒng)狀態(tài)(sys_state_init)和系統(tǒng)響應用戶之后的狀態(tài),即系統(tǒng)狀態(tài)(sys_state),記錄著系統(tǒng)對用戶需求的理解和對用戶做出的響應。區(qū)別于CrossWOZ數(shù)據(jù)集的系統(tǒng)狀態(tài),Diachat數(shù)據(jù)構造初始系統(tǒng)狀態(tài)和系統(tǒng)狀態(tài)采取了不同的思路,出于如下三方面的考慮:
(1) 系統(tǒng)端不可能出現(xiàn)給不了滿足用戶需求的回答;
(2) 我們需要記錄系統(tǒng)端對用戶的回答;
(3) 因為要記錄系統(tǒng)端對用戶的回答,系統(tǒng)在響應用戶前和響應用戶后的狀態(tài)具有差別。
因此,在Diachat數(shù)據(jù)里,初始系統(tǒng)狀態(tài)表示的是系統(tǒng)在收到用戶的對話動作,并且做出響應前的系統(tǒng)狀態(tài),系統(tǒng)狀態(tài)表示系統(tǒng)在做出響應后的狀態(tài)。所以,初始系統(tǒng)狀態(tài)是基于上一輪系統(tǒng)的系統(tǒng)狀態(tài)和本輪收到的用戶對話動作構造,系統(tǒng)狀態(tài)是把系統(tǒng)本輪的對話動作、本輪的初始系統(tǒng)狀態(tài)合并得到,系統(tǒng)狀態(tài)和初始系統(tǒng)狀態(tài)構造過程如圖4所示。
圖4 系統(tǒng)狀態(tài)和初始系統(tǒng)狀態(tài)構造過程
Diachat數(shù)據(jù)集總共收集并標注了693段對話,語句總和為4 686句,共6 594條對話動作標注。
圖5給出了Diachat的動作標簽標注數(shù)量分布,其中Inform這一動作標簽的數(shù)量遙遙領先于其他動作標簽,AskForSure和Advice動作標簽的數(shù)量分別位于第二和第三,說明Diachat數(shù)據(jù)集的醫(yī)患對話以患者告知的自身情況、醫(yī)生針對患者告知的信息進行確認和建議為主。該數(shù)據(jù)集符合糖尿病健康管理對話系統(tǒng)的研究目的,即為廣大糖尿病患者就自身情況和日常醫(yī)療咨詢給出相關建議。
表11將Diachat數(shù)據(jù)集與Zhang等人研究發(fā)布的MIE數(shù)據(jù)集、Shi等人相關研究中的數(shù)據(jù)集(本文簡稱為UMC)、Liu等人研究發(fā)布的MedDG數(shù)據(jù)集、Du等人從臨床對話中提取癥狀及其狀態(tài)的相關數(shù)據(jù)集(本文簡稱為ES)、Lin等人[16]關于增強對話狀態(tài)診斷中的數(shù)據(jù)集(本文簡稱為EDSD)等現(xiàn)有醫(yī)療健康咨詢對話數(shù)據(jù)集在應用場景、對話數(shù)量、語句數(shù)量、標注數(shù)量、定義的實體屬性(槽位)數(shù)量進行了對比。本文的Diachat數(shù)據(jù)集進行了更加全面的標注工作,相比于表11所列舉的其他數(shù)據(jù)集,Diachat還構造了用戶目標、用戶狀態(tài)和系統(tǒng)狀態(tài)。同時,Diachat也為后續(xù)糖尿病健康管理對話系統(tǒng)數(shù)據(jù)集的擴充工作奠定了基礎。
服務于慢性病健康管理的對話系統(tǒng)是人工智能技術在醫(yī)療健康領域的重要代表,本研究面向糖尿病患者,將慢性病健康管理的對話系統(tǒng)視為任務型對話系統(tǒng),構建了首個面向糖尿病健康管理的對話數(shù)據(jù)集Diachat。Diachat數(shù)據(jù)集經歷了數(shù)據(jù)收集、數(shù)據(jù)處理、標注規(guī)范制定、標注工具開發(fā)、數(shù)據(jù)標注、基礎實驗階段,標注了4 686句醫(yī)患對話,共6 594條對話動作。本文完成的工作主要體現(xiàn)在如下幾個方面:
(1) 收集并整理了一定規(guī)模的真實糖尿病健康咨詢對話數(shù)據(jù)。
(2) 從對話數(shù)據(jù)中歸納了糖尿病健康管理涉及的問題、飲食、行為、運動、治療這五個主要領域及其槽位,這五個領域在其他慢性病健康管理中具有共通性。
(3) 在對話意圖表示方面,歸納并設計了基于對話動作的表達用戶行為的15個動作標簽,與用戶角色相關的動作標簽體現(xiàn)了用戶健康咨詢的對話場景,與系統(tǒng)角色相關的動作標簽體現(xiàn)了醫(yī)生回答用戶咨詢的對話場景。
(4) 為了支持構建完整的對話系統(tǒng)研究,Diachat還構造了用戶目標、用戶狀態(tài)和系統(tǒng)狀態(tài)。在當前數(shù)據(jù)集的標注體系下,用戶語句的對話動作可以支持自然語言理解模塊研究,系統(tǒng)狀態(tài)可以支持對話狀態(tài)跟蹤模塊研究,系統(tǒng)狀態(tài)和醫(yī)生語句的對話動作可以支持對話策略模塊研究,醫(yī)生語句的對話動作可以支持自然語言生成模塊研究。另外,用戶目標、用戶狀態(tài)可以支持用戶模擬器研究,并支持對話策略模塊研究。
(5) 基于Diachat數(shù)據(jù)集,本文分別構建了自然語言理解、對話狀態(tài)跟蹤、對話策略和自然語言生成基礎模型,并搭建了一個簡單的糖尿病健康管理對話系統(tǒng)“Diachatbot”,從評價值來看還有較大提升空間。
糖尿病健康管理任務的復雜性遠大于常規(guī)任務(如出行咨詢),不僅需要大規(guī)模數(shù)據(jù)的支持,還需要醫(yī)療健康知識圖譜及基于知識圖譜的推理模型。因此,本文構建的數(shù)據(jù)集需要進一步擴充,模型構建方法也有待進一步提升。未來工作擬從以下幾個方面展開:
(1) 借鑒成功經驗,構建更大規(guī)模的標注數(shù)據(jù)集。真實健康管理對話數(shù)據(jù)獲取難度較大,而MultiWOZ、CrossWOZ等數(shù)據(jù)集通過模擬對話成功構造出大規(guī)模的對話數(shù)據(jù),并在構造對話的同時獲得標注信息。未來工作將在此思路的啟發(fā)下,設計模擬對話的場景、交互方式和平臺,招募醫(yī)生和志愿者進行模擬對話,構造健康管理對話數(shù)據(jù)集。
(2) 在現(xiàn)有數(shù)據(jù)集上,結合當前對話系統(tǒng)研究趨勢,持續(xù)探索各模型的優(yōu)化,包括用戶模擬器的探索。
(3) 對話系統(tǒng)充當著醫(yī)生的角色,所做出的健康決策不僅和對話策略密切相關的,而且還高度依賴于糖尿病相關的醫(yī)療健康知識圖譜以及基于知識圖譜的推理模型。糖尿病相關知識圖譜涉及的知識與本文所制定規(guī)范里的五個主要領域一致,因此未來工作也將重點關注這五類健康知識的擴充,構建知識圖譜,并針對醫(yī)生回復的三個場景探索基于這五類知識的健康推薦模型。
(4) 對話系統(tǒng)的研究思路除了管道和端到端(End-to-End)兩種經典體系外,在知識圖譜研究的推動下,近年來還出現(xiàn)了知識感知的構建思路,不同的體系各具優(yōu)勢,因此未來工作也可探索融合多種實現(xiàn)的對話系統(tǒng),這在現(xiàn)實生活中有真實的對照,比如患者遇到重要醫(yī)療問題時通常會綜合多個醫(yī)生的建議再做決策。