糖尿病健康管理对话数据集构建

2023-12-06 04:00汪正康杨锦锋梁先桂郭熙铜
中文信息学报 2023年9期
关键词:标签医生状态

汪正康,刘 阳,杨锦锋,梁先桂,郭熙铜

(1.哈尔滨理工大学 计算机科学与技术学院,黑龙江 哈尔滨 150080;2.哈尔滨工业大学 经济与管理学院,黑龙江 哈尔滨 150001)

0 引言

以糖尿病为代表的慢性病发病率高、持续时间长并且医疗支出成本高,已成为导致我国居民预期寿命受损、因病致贫、因病返贫的主要疾病。一方面,慢性病发展进程相较于急性病显得温和,因而其危害性和对其进行健康管理的重要性容易被忽视;另一方面,我国慢病患者数量庞大,医疗资源紧张、医疗资源分配不均等问题导致慢病患者得不到有效的慢病管理,加剧了慢病患者的医疗成本和贫困状况。慢性病已成为重大公共卫生问题和社会问题,为应对慢性病带来的重大公共卫生威胁,国务院于2017年印发的《新一代人工智能发展规划》明确提出推广应用人工智能治疗新模式新手段,建立快速精准的智能医疗体系,发展智能医疗和智能健康管理。慢性病患者通常受多种症状长期困扰,对健康管理的需求是随时随地的,且具有个性化,以聊天机器人(Chatbot)形式的健康管理服务具备向广大慢性病患者提供及时且个性化健康服务需求的潜力。作为人工智能技术的典型代表,聊天机器人,也叫对话系统(Dialogue System),以其智能、自主、易扩展的优势,正逐步发展为慢性病健康管理的新技术和新方式。

糖尿病患者在日常生活中难免会产生一些关于疾病方面的疑问,例如,“糖尿病患者能喝汤吗?”,“有胃病的人应该吃什么降糖药对胃的刺激小一点?”等等。当这些日常生活上的问题不足以驱使患者大费周章去医院时,糖尿病健康管理对话系统便显得尤为重要,它作为一个贴身“医生”,能高效解答广大患者日常医疗咨询方面的问题,让患者享受到高效便捷的智能服务。

当前主流的对话系统主要分为任务导向型对话系统(Task-Oriented Dialogue System, TOD)和开放域对话系统(Open-Domain Dialogue System, OOD)两大类[1]。任务导向型对话系统中,人机对话具有较强的目的性,对话系统主要为了帮助用户完成某些特定的任务。而开放域对话系统中,对话系统主要与用户进行闲聊,没有特定领域的限制。

本研究关注的糖尿病健康管理对话系统为任务导向型对话系统,主要服务于糖尿病患者,在居家场景下为患者解答日常生活中糖尿病相关问题。该对话系统采用管道结构,将核心功能分为自然语言理解(Natural Language Understanding, NLU),对话状态跟踪(Dialogue State Tracking, DST),对话策略(Dialogue Policy, POL)和自然语言生成(Natural Language Generation, NLG)四个模块。自然语言理解模块主要描述为意图识别(Intent Detection)任务,根据医患语句,识别对话意图(Intent)以及收集所传递的信息,例如患者的血糖值,饮食情况以及医生给出的用药建议等,并输出相应的对话动作。对话状态跟踪模块通过自然语言理解模块抽取的关键信息,跟踪维护更新患者以及系统的对话状态,即置信状态(Belief State)。对话策略模块根据患者的对话状态,学习医生的对话动作,进行下一步决策并输出对话动作,例如系统针对患者当前描述的饮食情况进行多吃或少吃的建议。自然语言生成模块关注的任务为受控对话生成,利用对话策略模块决策的对话动作生成通顺的、患者能够理解的自然语言。

作为数据驱动型对话系统,以上模块模型的训练自然离不开大量数据的支撑。本研究为糖尿病健康管理对话系统构建了名为“Diachat”的数据集,从医生与糖尿病患者的沟通记录中收集并整理对话数据,制定对话标注规范,对每句话进行标注,同时基于标注数据构造用户目标和对话状态,完整支持四个模块的研究。该数据集的标注规范和部分数据样例可通过此链接(1)https://hrbust-youth.github.io/2022/11/20/Diachat简介及相关信息/下载获取。

本文在接下来主要内容为介绍Diachat源数据的准备过程,数据标注规范的制定,数据标注的过程,对话状态的构造,数据集规模的介绍与对比。

1 相关工作

本文主要关注典型任务型对话系统数据集和医疗健康咨询对话系统数据集。典型任务型对话系统以出行咨询对话系统为代表,如MultiWOZ[2]数据集,标注体系完善,规模庞大,受关注度高。医疗健康咨询对话系统正获得越来越多的关注,关注的问题涉及医疗问诊、饮食、运动等有关健康的方方面面。

1.1 典型任务型对话数据集

当前已发布的一些大规模任务导向型对话数据集和开放域对话数据集大多都是通过人-人模拟对话进行构建,一人扮演对话系统(Wizard),一人扮演用户(User)。任务导向型对话的对话系统起到主导作用,对话系统通过数据库查询用户需要的信息,然后将信息提供给用户,用户只需要将自己的需求表达出来即可。在任务导向型对话数据集构建过程中需要为当前对话给定对话目标(Goal),对话围绕完成对话目标而展开。对话系统与用户的对话在标注工具的支持下通过文字形式交替对话,在对话过程中对他们的语句进行标注操作。出行咨询对话系统是目前研究涉及最多的领域,这方面具有代表性的英文数据集是MultiWOZ,中文数据集是CrossWOZ[3]。

MultiWOZ是一个大规模多领域、多轮次的任务导向型对话数据集,该数据集跨越了7个领域,包含了10 000多个完全标记的对话语句,7个领域分别为Attraction,Hospital,Police,Hotel,Restaurant,Taxi和Train。MultiWOZ使用了Wizard-of-Oz的众包方式创建大规模人类自然对话语料库,众包方式可以以相对较低的成本和较短的时间收集带注释的对话语料库。为了收集大规模的数据,收集方为对话系统提供了易于操作的系统界面供对话系统访问数据库,为用户提供了易于遵循的目标。该数据集将需求预定(Booking Requirement)视作一个单独的任务,并以一定的概率在允许的领域抽样额外的预定请求,以此构造出对话目标。为了确保一致性,对话系统和用户都需要通过事先查看对话历史以了解各自的对话上下文信息。CrossWOZ数据集是一个类似于MultiWOZ的大规模多领域多轮对话中文数据集,涉及景点、酒店、餐馆、地铁、出租5个领域。CrossWOZ对话数据来自参加众包的工作人员(Worker)模拟用户在北京地区旅游时与客服的对话,对话场景包括景点推荐、餐馆推荐、预订酒店等。收集方为工作人员提供了一个在线对话网站,选择用户和系统角色的两个工作人员匹配成功后,双方进入聊天室围绕对话目标进行模拟对话和标注工作。收集方为用户提供了对话目标,为系统提供了数据库查询服务。CrossWOZ的对话目标基于数据库生成,通过设计模板生成任务目标的自然语言描述。景点、餐馆、酒店以及这些地点邻近关系的数据库信息通过爬虫获取,组成了数据库。相比MultiWOZ,CrossWOZ提供了更加全面的标注信息,除了提供对话双方的对话目标、系统端的对话状态这些信息之外,还额外提供了每轮用户端的对话状态。用户端状态记录了目标的完成情况,每轮根据系统回复动态更新,可用于研究用户模拟器的搭建。与MultiWOZ和CrossWOZ类似构建方法的数据集还有SGD、NLU++等。这类数据集规模庞大、标注体系完整,其构建思路和方法值得借鉴。

1.2 医疗健康咨询对话数据集

医疗健康咨询是任务型对话系统关注的又一项重要任务,旨在为用户提供实时的健康咨询,缓解医疗资源紧张等问题。医疗健康咨询除了疾病、症状、用药等医疗问题咨询,还涉及饮食、运动、减肥等方面,在这些咨询任务的探索中,数据集一般来自线上平台的医患咨询数据。

Zhang等人[4]基于心内科咨询对话数据探索了对话数据的信息抽取,从而自动生成电子病历,该数据集设计了四个实体Symptom,Surgery,Test,Other info,每个实体有若干相关实体属性,医疗实体构造的标签集是有限集合,因此该研究采用多标签分类的方法来进行关键信息抽取。在Shi等人[5]的相关研究中,源数据来自于丁香园和百度拇指医生。该研究中数据集的构造定义了分类标签,也采用了多标签分类的思路。但本研究还额外考虑了弱监督的策略以减少人工标注的样本量。在Liu等人[6]的研究中为医疗对话系统构建了一个大规模医疗对话数据集,源数据来自于春雨医生肠胃病咨询数据,肠道病相关的实体来自中文医疗知识图谱CMeKG。该研究把医疗对话系统构建分解为两个任务,首先基于对话历史预测医生的回复里将要包含的医疗实体,然后基于预测的医疗实体生成医生的回复。为了有效预测医生的回复里将要包含的医疗实体,需要构建标注数据,将实体预测任务转化为多标签分类,实体一共5个大类,160个小类。Gupta等人[7]的研究值得关注,其数据并非来自真实数据,而是召集用户和健身教练在模拟场景下构造出来的对话数据,研究目的是开发一个虚拟健康教练,以对话的形式帮助患者设定活动目标,并督促执行,因此需要识别对话表达的目标,并在随后的对话中识别任务不同阶段的进展。该研究通过招募慢性病患者和健身教练,收集对话数据,进行了两轮收集,第一轮招募了1个健身教练和28个患者进行一对一文本对话交流,一共2 853条对话记录,第二轮招募了3个教练和30个患者。在Du等人[8]的研究中,研究的任务是从对话记录中识别患者表达的症状及其状态,因此仅对症状和状态进行了标注,能支持对话理解的研究。由于症状在表达上的灵活性,对话中存在显式表达和隐式表达,该研究针对显式表达采取的是BIO的标注方法,针对隐式表达采取的是给文本块标注分类标签的方法。

上述医疗健康领域对话系统数据集主要侧重于从对话记录中抽取关键信息,适用于任务导向型对话系统中自然语言理解模块的研究,但不足以支撑完整对话系统构建。另一方面,现有医疗健康领域对话数据集主要来自临床场景,面向医疗问诊,而在慢性病健康管理这一领域较少涉及。本文基于收集到的医生和糖尿病患者的对话数据,归纳出对话场景和领域,定义意图和槽位(Slot),制定了对话标注规范,构建了Diachat数据集,同时构造了对话目标和对话状态,为糖尿病健康管理对话系统提供了完整的数据支持。

2 对话数据收集与处理

本文Diachat对话数据来自于QQ群中糖尿病患者与医生的对话,患者在QQ群里就生活中的日常问题如饮食、运动、吃药、血糖值等问题向医生咨询,医生就患者的问题、身体情况进行追问或者解答。我们把一个医生和同一个患者在短时间内的聊天记录合并在一起,组成患者与医生的一次咨询记录,即为一段对话。

对话数据经过如下的清洗和处理,最终得到Diachat对话数据集:

(1) 删除对话中公司名称、医生名称,以及@符号提及的用户名;

(2) 本研究规定Diachat的每段对话由患者发起,医生结束,即患者的语句作为每段对话的第一句话,医生的语句作为每段对话的最后一句话。若数据中某段对话的最后一句话由患者发出,我们就利用规则为医生添加一句“不客气”;

(3) 在日常在线聊天场景中,聊天双方可能连续发送多条消息,Diachat数据也一样,我们利用规则对一个聊天角色的连续消息进行合并归为一句话,确保患者与医生的语句严格交替进行。

另外,由于数据来自于QQ群聊天记录,有不少患者多次咨询医生的聊天记录,这类持续咨询数据有助于后续更好地探索患者健康跟踪,针对这种情况,我们保留了患者的ID信息,以便能获取到一个患者的持续咨询数据。

3 对话数据集构建

3.1 标注规范制定

本研究的标注规范制定是在逐步迭代中完成的。首先,考察糖尿病咨询的对话数据,归纳出对话场景,定义意图、领域和槽位,制定初步规范;然后,基于规范对数据进行标注,在标注过程中改进标注规范,再用新规范标注对话数据,如此迭代,直至标注规范稳定。通过对一定数量的Diachat对话语句分析,本研究归纳出6个领域以及各自对应的槽位: 患者所咨询的问题,患者的饮食情况,患者的行为,患者进行过的运动,患者目前采取的治疗方式,患者的基本情况。在健康咨询中,对话场景比较复杂,医生和患者表达的语义比较多样化,本研究归纳出涵盖医生与患者对话语句的15个动作标签,动作标签是自然语言理解模块基于对话动作的表示形式,与任务导向型对话系统中对话意图类似。语义即可通过动作标签与领域-槽位-槽值的组合以结构化的形式进行表达。

3.1.1 领域和槽位

领域和其对应的槽位是对糖尿病健康管理领域重要信息的结构化表示,可作为医生与患者进行健康管理咨询时的信息获取目标和信息传达目标,同时也限定了对话信息的涉及范围。

(1) 问题

问题的槽位有疾病、症状、症状部位、持续时长、血糖值以及时间等。主要标记患者的疾病、症状、以及诱发和被诱发的症状。问题及相关槽位详情如表1所示。

表1 问题及相关槽位详情

(2) 饮食

饮食的槽位有饮食名、时间、饮食量、成分、成份量、效果。主要标记患者的日常饮食信息。饮食及相关槽位详情如表2所示。

表2 饮食及相关槽位详情

(3) 行为

行为的槽位有行为名、频率、时间、持续时长、效果。主要标记患者日常行为的信息。行为及相关槽位详情如表3所示。

表3 行为及相关槽位详情

(4) 运动

运动的槽位有运动名、频率、时间、持续时长、强度、效果。主要标记语句中表达的运动项目,也可以标记笼统的运动,如医生建议患者适当运动。运动及相关槽位详情如表4所示。

(5) 治疗

治疗的槽位有药品、用药量、用药(治疗)频率、时间、持续时长、适应症、药品类型、治疗名、部位、检查项、检查值、效果。主要标记语句中所采取的治疗项目等相关信息。治疗及相关槽位详情如表5所示。

(6) 基本信息

基本信息的槽位有身高、体重、年龄、性别、既往史。主要标记患者自身的身体信息。基本信息及相关槽位详情如表6所示。

表6 基本信息及相关槽位详情

3.1.2 动作标签

在任务导向型对话系统中,自然语言理解NLU(或Spoken Language Understanding,SLU)结果的两种表示方式分别为基于意图表示和基于对话动作表示,两种表示方式都是基于框架(Frame-based)的结构。在Zhang等人[9]的任务导向型对话系统的最新进展和挑战文章中,作者在任务表述上并未区分意图和动作。虽然基于意图表示和基于对话动作表示方式相似,但却存在区别。在Qin等人[10]的自然语言理解的最新进展和新前沿的综述文章中提到,现有研究基本上都将自然语言理解任务分解为意图分类(Intent Classification)和槽位填充(Slot Filling)两个子任务,而大型对话数据集MultiWOZ和CrossWOZ则将自然语言理解任务分解为动作分类(Act Classification)和槽位填充。两种表示方式各有优劣,适用的交互对话场景也有所不同。基于意图表示方式一般应用在人机交互(Human-Machine Interaction)中。早期的任务导向型对话系统可以追溯到呼叫中心或者电话客服,用户使用语音服务时,呼叫路由系统(Call Routing System)根据用户的呼叫意图自动路由(Call Routing)至对应的业务处理模块。由于呼叫中心只能处理有限的任务,所以呼叫意图自动路由任务本质为呼叫路由系统对呼叫类别进行分类,也就是意图。因此,人机交互对话场景的首要任务为意图分类,同时,对话意图也代表着用户的目标或者对话系统要完成的任务。所以意图通常是领域相关的(Domain-dependent),例如,订酒店、退机票、改签火车票这三种意图即为领域明确的任务。意图分类也被叫做意图确定(Intent Determination),确定意图后进行槽值填充,识别与意图密切相关的信息要素,领域,意图与槽值对(Slot-value)组合起来表达用户目标,所以槽位是意图相关的。在基于意图表示的语义框架表示下,顶层是领域,然后是意图,最后是槽位。在基于意图表示的语义框架中,一个领域可以有多个意图,并且相同领域下的多个意图可以有不同的槽位,每个意图的槽位是领域槽位的子集。所以领域-意图-槽位的完整结构如图1所示,可以看出该结构在表达跨领域语义方面稍显不足。

图1 领域-意图-槽位的完整结构

基于对话动作表示方式多应用在人-人交互(Human-Human Interaction)中。对话动作的源起比呼叫意图自动路由还要早。在对人-人对话(包括多人会议)的分析探索中,演讲动作理论(Speech Act theory)被提出来,该理论认为对话中说话者说的每句话都是要完成一个动作,根据动作的性质,分为四类或者五类[11],该理论启发了对话动作的设计和应用。人-人对话的研究理论和方法很自然地应用到人-机对话中,自然语言理解的输出也可以表示为对话动作的形式[12],成为和基于意图表示研究并行的一种表示方式,其中最有代表性的学者是Steve Young和Dan Jurafsky。在Young的代表性研究[13]中,基于对话动作的表示结构为Actt(a1=v1,a2=v2,...),“actt”即动作类别(Act Type),根据对话系统交互特性设计,也叫对话动作,动作类别的参数是槽值对列表,例如:

Inform(Type=Restaurant,Food=Italian,Near=Cinema)

在Young的研究中,一个语句只能用一个对话动作表示意图,为了兼顾多意图场景,一个对话动作可以有多个槽值对作为参数,并且对多个槽值对的对话动作和多个对话动作做了区分[14],这一点在本文的Diachat数据集上也有体现。对话动作的一个重要特点就是动作类别与领域无关,而与交互的行为特性相关。这与人-人交互研究中对话动作最初的理论和应用有关。Gokhan等人[15]在从语音中提取语义信息的自然语言理解系统的研究中对对话动作的特性总结为三条:

(1) 对话动作是对语句行为的基本抽象和近似表示;

(2) 对话动作是领域独立的;

(3) 对话动作的主要目标是用于对话语句的篇章分析和理解。

在对话动作的语义结构中,槽位是领域相关的,对话动作的表示结构同样涉及动作类别,领域和槽位三个方面,其一般结构可表示为:

Act_type(Domain1.slot1=value1,Domain2.slot2=value2,...)

动作标签-领域-槽位的完整结构如图2所示,此结构的优点在于可以很自然地表示跨领域的语义和行为,并且由于对话动作是从交互行为的角度设计,因此也适用于表示系统端语句,即对话管理(Dialogue Manager,DM)的输出,以及自然语言生成的输入。不过用户和系统的行为是有区别的,所以对话类别的定义需要考虑交互过程中角色的语句动作。

图2 动作标签-领域-槽位的完整结构

基于以上对自然语言理解结果的两种表示方式分析,Diachat数据集的交互模式为人-人交互,且从对话双方交互行为考虑,医患对话意图涉及多领域信息,动作类别和领域-槽位呈现弱相关性。同时,Diachat的对话目标并非订酒店、退机票、改签火车票等常规任务。所以Diachat数据集采用对话动作对跨领域的语义和行为进行表示。通过对数据的分析和归纳,Diachat定义了15种表示行为的动作标签,即动作类别,动作标签和领域-槽位-槽值共同组成一个完整的对话动作。对话动作从两个方面表达表示语义和行为: 首先,领域-槽位-槽值作为动作标签的参数,部分动作标签没有领域-槽位-槽值;其次,动作标签与对话的角色相关,有些动作标签表示患者的动作,有些表示医生的动作,有些表示患者和医生都具有的动作。

(1) 领域-槽位-槽值作为动作标签的参数

对于一句话,可以用同一动作标签来表示槽位之间的组合关系。有些槽位在一句话中是搭配出现的,如血糖值和时间,这两者存在关联关系,因此一句话中同一动作标签可以记录多个槽位来表示它们之间的组合关系。例如,医生建议患者: “餐后血糖值控制在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) 动作标签与对话的角色相关

医生和患者在咨询对话中的角色不是对等的,表达的行为和语义也有较大差异,动作标签与对话角色的相关性体现了不同角色的对话场景。动作标签与患者的对话场景和医生的对话场景如表7、表8所示。患者对话的三个主要场景分别是向医生告知当前健康状况、向医生询问具体的问题、回应医生的提问或建议,也会有些闲聊的语句。

表7 患者的动作标签和对话场景

表8 医生的动作标签和对话场景

医生在对话中被动地响应患者,对应的三个主要场景分别是根据患者告知的信息或患者提问给出确切的回答,为了进一步了解患者而追问患者的情况、再就是一些宽泛的回答。在健康管理应用中,患者是主导,主动寻求帮助,医生被动响应。这一点与门诊咨询不同,在门诊咨询中,医生是主导,主动询问患者的问题,并引导门诊咨询的进展。

15种动作标签汇总以及标注示例如表9所示(2)各动作标签详细定义可通过引言的Diachat标注规范下载链接获取。

表9 动作标签信息汇总

3.2 数据标注

在制定标注规范的同时,本研究开发了对话数据标注系统。标注主界面如图3所示,分为左右两部分,左边是对话记录,右边是标注人员对左边语句进行标注的窗口。对话数据的标注工作比较繁琐,本研究采取如下三个方面的措施尽可能保证标注的准确性:

图3 标注界面

(1) 在进入正式标注工作之前,标注人员进行了培训和多次预标注,直至掌握了标注规范;

(2) 数据首轮标注结束后,通过程序自动检查出一些规则性错误,又进行了多次人工核查,以尽可能消除标注错误;

(3) 在后续模型训练工作中,对发现的错误标注也进行了多次修改。

3.3 对话状态构造

对话状态是每轮对话的重要信息,是系统端对用户现状的记录和对用户的响应记录。现有医疗健康领域的对话数据集仅对语句进行了标注,缺少对话目标、对话状态、用户端和系统端的状态构造,因此不足以支撑完整对话系统的构建。对话系统中对话状态跟踪模块需要通过前一轮的对话状态、对话历史、当前对话等信息,推断并更新置信状态,所以Diachat数据集针对用户和系统的对话状态构造了用户状态(User State)和系统状态(System State)。而对话策略模块探索强化学习(Reinforcement Learning, RL)方法时,对于用户模拟器、系统模拟器、智能体(Agent)的搭建,用户状态、系统状态和对话目标也是不可或缺的。综上,Diachat构造了对话状态和对话目标,为对话状态跟踪,对话策略模块提供数据支持,支撑对话系统完整的数据需求。

3.3.1 用户目标和用户状态

对话系统中,用户端对应的是患者。Diachat数据集为每段对话构造了初始的用户目标和最终目标(Final Goal),随着对话的展开,每轮对话的对话动作更新用户目标,即得到每轮对话的用户状态。在Diachat对话数据中,某些患者的目标不明确,与出行咨询的目标有很大不同。Diachat数据集将患者的目标分为两种,第一种是患者表达明确问题的目标,第二种是患者表达当前情况的目标。

对于第一类目标,患者说出他目前的症状、饮食、治疗、运动等情况后(对应的动作标签是Inform),引出一个具体问题,例如患者询问医生: “是不是不能喝呀”,希望得到患者一个明确的回答。第一种对话患者表达了明确的问题,在Diachat标注体系里主要涉及AskForSure、AskFor、AskHow、AskWhy这四个动作标签。针对这四类问题,医生给出了回答,即认为患者询问的目标达到了。

对于第二类目标,在表10例举的对话中,患者只在讲述自身情况,语句中没有明确的、显式的问题,这在健康管理咨询中很常见。患者通过讲述自身情况,目标无非是获得医生对健康方面的建议或者对疾病认知的理解。所以,患者讲清楚自己当前的情况,让医生对自己有充分的了解,至于医生是给出建议还是给出解释都是可以的。如果医生觉得用户当前有哪些做得不好,就会给出建议;如果医生觉得目前用户情况正常,不必担心,就可以给出个解释让用户宽心。所以,在这类场景下,患者描述完自己的情况就算是达到目标了。

表10 患者表达当前情况的目标对话示例

通过对患者两类目标的分析,本研究可以基于患者对话数据的标注构造用户目标,其思路就是遍历一次咨询对话中所有患者语句的对话动作标注,抽取Inform、AskHow、AskWhy、AskFor、AskForSure的领域和槽位,即构成患者每次咨询要完成的任务目标。

3.3.2 系统状态

系统端对应对话中的医生角色。Diachat数据集的系统状态是指每轮对话时系统的状态,分为系统响应用户前的状态,即初始系统状态(sys_state_init)和系统响应用户之后的状态,即系统状态(sys_state),记录着系统对用户需求的理解和对用户做出的响应。区别于CrossWOZ数据集的系统状态,Diachat数据构造初始系统状态和系统状态采取了不同的思路,出于如下三方面的考虑:

(1) 系统端不可能出现给不了满足用户需求的回答;

(2) 我们需要记录系统端对用户的回答;

(3) 因为要记录系统端对用户的回答,系统在响应用户前和响应用户后的状态具有差别。

因此,在Diachat数据里,初始系统状态表示的是系统在收到用户的对话动作,并且做出响应前的系统状态,系统状态表示系统在做出响应后的状态。所以,初始系统状态是基于上一轮系统的系统状态和本轮收到的用户对话动作构造,系统状态是把系统本轮的对话动作、本轮的初始系统状态合并得到,系统状态和初始系统状态构造过程如图4所示。

图4 系统状态和初始系统状态构造过程

3.4 数据统计

Diachat数据集总共收集并标注了693段对话,语句总和为4 686句,共6 594条对话动作标注。

图5给出了Diachat的动作标签标注数量分布,其中Inform这一动作标签的数量遥遥领先于其他动作标签,AskForSure和Advice动作标签的数量分别位于第二和第三,说明Diachat数据集的医患对话以患者告知的自身情况、医生针对患者告知的信息进行确认和建议为主。该数据集符合糖尿病健康管理对话系统的研究目的,即为广大糖尿病患者就自身情况和日常医疗咨询给出相关建议。

表11将Diachat数据集与Zhang等人研究发布的MIE数据集、Shi等人相关研究中的数据集(本文简称为UMC)、Liu等人研究发布的MedDG数据集、Du等人从临床对话中提取症状及其状态的相关数据集(本文简称为ES)、Lin等人[16]关于增强对话状态诊断中的数据集(本文简称为EDSD)等现有医疗健康咨询对话数据集在应用场景、对话数量、语句数量、标注数量、定义的实体属性(槽位)数量进行了对比。本文的Diachat数据集进行了更加全面的标注工作,相比于表11所列举的其他数据集,Diachat还构造了用户目标、用户状态和系统状态。同时,Diachat也为后续糖尿病健康管理对话系统数据集的扩充工作奠定了基础。

4 总结与展望

服务于慢性病健康管理的对话系统是人工智能技术在医疗健康领域的重要代表,本研究面向糖尿病患者,将慢性病健康管理的对话系统视为任务型对话系统,构建了首个面向糖尿病健康管理的对话数据集Diachat。Diachat数据集经历了数据收集、数据处理、标注规范制定、标注工具开发、数据标注、基础实验阶段,标注了4 686句医患对话,共6 594条对话动作。本文完成的工作主要体现在如下几个方面:

(1) 收集并整理了一定规模的真实糖尿病健康咨询对话数据。

(2) 从对话数据中归纳了糖尿病健康管理涉及的问题、饮食、行为、运动、治疗这五个主要领域及其槽位,这五个领域在其他慢性病健康管理中具有共通性。

(3) 在对话意图表示方面,归纳并设计了基于对话动作的表达用户行为的15个动作标签,与用户角色相关的动作标签体现了用户健康咨询的对话场景,与系统角色相关的动作标签体现了医生回答用户咨询的对话场景。

(4) 为了支持构建完整的对话系统研究,Diachat还构造了用户目标、用户状态和系统状态。在当前数据集的标注体系下,用户语句的对话动作可以支持自然语言理解模块研究,系统状态可以支持对话状态跟踪模块研究,系统状态和医生语句的对话动作可以支持对话策略模块研究,医生语句的对话动作可以支持自然语言生成模块研究。另外,用户目标、用户状态可以支持用户模拟器研究,并支持对话策略模块研究。

(5) 基于Diachat数据集,本文分别构建了自然语言理解、对话状态跟踪、对话策略和自然语言生成基础模型,并搭建了一个简单的糖尿病健康管理对话系统“Diachatbot”,从评价值来看还有较大提升空间。

糖尿病健康管理任务的复杂性远大于常规任务(如出行咨询),不仅需要大规模数据的支持,还需要医疗健康知识图谱及基于知识图谱的推理模型。因此,本文构建的数据集需要进一步扩充,模型构建方法也有待进一步提升。未来工作拟从以下几个方面展开:

(1) 借鉴成功经验,构建更大规模的标注数据集。真实健康管理对话数据获取难度较大,而MultiWOZ、CrossWOZ等数据集通过模拟对话成功构造出大规模的对话数据,并在构造对话的同时获得标注信息。未来工作将在此思路的启发下,设计模拟对话的场景、交互方式和平台,招募医生和志愿者进行模拟对话,构造健康管理对话数据集。

(2) 在现有数据集上,结合当前对话系统研究趋势,持续探索各模型的优化,包括用户模拟器的探索。

(3) 对话系统充当着医生的角色,所做出的健康决策不仅和对话策略密切相关的,而且还高度依赖于糖尿病相关的医疗健康知识图谱以及基于知识图谱的推理模型。糖尿病相关知识图谱涉及的知识与本文所制定规范里的五个主要领域一致,因此未来工作也将重点关注这五类健康知识的扩充,构建知识图谱,并针对医生回复的三个场景探索基于这五类知识的健康推荐模型。

(4) 对话系统的研究思路除了管道和端到端(End-to-End)两种经典体系外,在知识图谱研究的推动下,近年来还出现了知识感知的构建思路,不同的体系各具优势,因此未来工作也可探索融合多种实现的对话系统,这在现实生活中有真实的对照,比如患者遇到重要医疗问题时通常会综合多个医生的建议再做决策。

猜你喜欢
标签医生状态
最美医生
状态联想
无惧标签 Alfa Romeo Giulia 200HP
医生
不害怕撕掉标签的人,都活出了真正的漂亮
生命的另一种状态
望着路,不想走
标签化伤害了谁
坚持是成功前的状态
基于多进制查询树的多标签识别方法