发明内容
为解决现有存在的技术问题,本申请实施例提供一种确定输出内容的方法、设备、以及计算机存储介质。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种确定输出内容的方法,所述方法包括:
获得参考图中的目标节点,所述目标节点为参考图中符合预定条件的节点;
获得用户输入信息;
依据所述用户输入信息,判断目标节点是否应被激活;
根据判断结果,确定输出内容,其中所述输出内容至少与所述用户输入信息相关联。
前述方案中,所述根据判断结果,确定输出内容,包括:
在所述判断结果表征为目标节点应被激活的情况下,确定输出内容。
前述方案中,所述方法还包括:
获得所述目标节点的节点类型;
相应的,所述根据判断结果,确定输出内容,包括:
根据判断结果和节点类型,确定输出内容。
前述方案中,所述根据判断结果和节点类型,确定输出内容,包括:
在判断结果表征所述目标节点应被激活且所述目标节点为问题节点的情况下,获得所述问题节点对应的问题,将所述问题确定为所述输出内容。
前述方案中,所述判断目标节点应被激活,包括:
获得参考图中所述目标节点的父节点;
依据所述用户输入信息,判断所述父节点是否已被激活;以及判断所述父节点的与所述目标节点连接的输出端是否存在第一预定输出;
在判断为父节点已被激活、以及所述输出端存在第一预定输出的情况下,判断为目标节点应被激活。
前述方案中,所述判断所述父节点是否已被激活,包括:
获得参考图中所述目标节点的祖父节点;
依据所述用户输入信息,判断所述祖父节点是否已被激活;以及判断所述祖父节点的与所述父节点连接的输出端是否存在第二预定输出;
在祖父节点已被激活、以及所述输出端为第二预定输出的情况下,判断为所述父节点已被激活;
其中,所述祖父节点在所述目标节点的曾祖父已被激活以及所述曾祖父节点与祖父节点连接的输出端存在预定输出的情况下被激活;所述曾祖父节点在所述目标节点的曾祖父的父节点已被激活以及所述曾祖父的父节点与曾祖父节点连接的输出端存在预定输出的情况下被激活;以此类推,以得到目标节点是否应该激活的判断结果。
前述方案中,所述参考图中符合预定条件的节点为出度为零的节点。
本申请实施例提供一种确定输出内容的设备,所述设备包括:第一获得单元、第二获得单元、判断单元以及确定单元;其中,
第一获得单元,用于获得参考图中的目标节点,所述目标节点为参考图中符合预定条件的节点;
第二获得单元,用于获得用户输入信息;
判断单元,用于依据所述用户输入信息,判断目标节点是否应被激活;
确定单元,用于根据判断结果,确定输出内容,其中所述输出内容至少与所述用户输入信息相关联。
前述方案中,
第一获得单元,用于获得所述目标节点的节点类型;
相应的,确定单元,用于根据判断结果和节点类型,确定输出内容。
本申请实施例提供一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方法的步骤。
本申请实施例提供一种确定输出内容的方法、设备以及计算机存储介质,所述方法包括:获得参考图中的目标节点,所述目标节点为参考图中符合预定条件的节点;获得用户输入信息;依据所述用户输入信息,判断目标节点是否应被激活;根据判断结果,确定输出内容,其中所述输出内容至少与所述用户输入信息相关联。
本申请实施例中,依据用户输入信息判断目标节点是否被激活,并依据判断结果确定输出内容。这种确定输出内容的方案与相关技术中需要按照预先设置的问答模板进行问题输出的方案相比,灵活性较好。也无需设置问答模板,可大大减少自动问答系统的开发工作量。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
以看病问诊场景为例,相关技术中,采用预先设置好的问答模板对患者的情况进行预了解,以问答模板需要询问以下三个问题为例,问题1:您的姓名、年龄、近期有哪方面的身体不适应;问题2:您发烧多久了;问题3:发烧到多少度。可以理解,在实际应用中问答系统可以按照问题1、问题2以及问题3的顺序进行输出,以了解患者的患病情况;还可以以问题1、问题3以及问题2的顺序进行输出。在相关技术中,为适应不同的问答情况,相关技术中需要设置两种问答模板,其中一种模板(第一种模板)可按照问题1、问题2以及问题3的顺序进行如上问题的输出,另一个模板(第二种模板)可按照问题1、问题3以及问题2的顺序进行如上问题的输出。在应用层面上,按照第一种模板,自动问题系统先输出问题1,在用户作答之后,输出问题2,在用户作答之后,再输出问题3。如果将如上方案视为一种按照设置好的模板进行输出的方案,则在这种输出方案,哪个问题被先输出哪个问题被后输出已经被固定好,灵活性欠佳。此外,还需要设置大量的问答模板增加了自动问答系统的开发工作量。本申请实施例提及的技术方案在应用于预问诊场景中至少能够解决以上问题。以下对本申请实施例做具体阐述。
本申请实施例提供一种确定输出内容的方法,可应用于自动问答系统。该自动问答系统可位于服务器或其他设备中。如图1所示,所述方法包括:
S101:获得参考图中的目标节点,所述目标节点为参考图中符合预定条件的节点;
这里,参考图可被预先设计好。待到使用时,读取设计好的参考图,考参图中包括有至少两个节点。对于其中的某个节点,其可能与其它节点中的某一个或几个节点有连接关系。本步骤可读取参考图中符合预定条件的节点。在图算法理论中,开头(起始)节点的入度为0,结尾(结束)节点的出度为0。本申请中可将出度为0的节点作为符合预定条件的节点。
可以理解,参考图可以是为线上预购买衣物、电子产品等场景而构造的买卖双方的对话过程图。还可以是为线上预问诊场景而设计的双方问诊过程图,如图4(a)~图4(d)所示。
S102:获得用户输入信息;
这里,可接收用户输入的信息。或接收并读取接收到的用户输入的信息。在问诊的场景中,用户输入信息可以为用户的姓名、年龄、患病症状等。在购买商品的场景中,用户输入信息可以为用户的身高、体重、三维等。用户将如上信息输入至问诊界面的对话框或客服界面对话框,接收用户的输入。
S103:依据所述用户输入信息,判断目标节点是否应被激活;
从应用层面上来看,节点是否被激活可视为该节点体现的内容是否呈现给用户。如果参考图中的目标节点是问题节点,能够体现一个问题(如前述的问题3:发烧到多少度),判断目标节点是否应被激活意在依据用户输入信息,判断该问题节点对应的问题是否应该被呈现给用户。
S104:根据判断结果,确定输出内容,其中所述输出内容至少与所述用户输入信息相关联。
这里,根据对目标节点是否应被激活的判断结果,确定要输出的内容。
执行S101~S104的主体为自动问答系统。考虑到目标节点来源于参考图,本方案可视为结合对参考图的参考和用户输入的信息,来确定输出内容的方案。
前述方案中,依据用户输入信息判断目标节点是否被激活,并依据判断结果确定输出内容。这种确定输出内容的方案与相关技术中需要按照预先设置的问答模板进行问题输出的方案相比,灵活性较好。也无需设置问答模板,可大大减少自动问答系统的开发工作量。
可以理解,本申请实施例可以应用于问诊场景,还可以应用于商品购买的客服场景。在问诊的场景中利用本申请实施例提供的方法确定出的输出内容可以是自动问答系统需要询问病患的下一个问题(即需要用户作答的下一个问题)。在购买商品的场景中利用本申请实施例提供的方法确定出的输出内容可以是自动问答系统提供给买家的下一个问题。即利用本申请实施例可实现对自动问答系统想要输出至用户的下一问题的灵活输出,与相关技术中需要按照设置的问答模板进行输出相比,具有较大的灵活性。此外,利用本申请实施例的技术方案无需预先设置问答模板,可大大减少自动问答系统的开发工作量。
可以理解,参考图中的目标节点的数量可以是一个,还可以是两个或两个以上。针对为两个或两个以上目标节点的情形,针对同一用户输入信息,对于一目标节点,可依据前述S103和S104的方案来确定输出内容,如果在这个目标节点下无法确定出输出内容,则继续下一个目标节点,针对下一个目标节点也根据前述S103和S104的方案来确定输出内容。如果下一个目标节点也无法确定出输出内容,则继续下下个目标节点,直至确定出输出内容。可选的,在S104中,在判断结果表征为目标节点应被激活的情况下,确定输出内容。在判断结果表征为目标节点不应被激活的情况下,按照如前所述继续下一个目标节点,直至确定出输出内容。
在参考图中存在有两个或两个以上的节点,这些节点从节点类型上划分,可以包括问题节点、逻辑节点、运算节点、起始节点和结束节点。其中,问题节点用于体现一个问题;逻辑节点用于表示逻辑上的和(AND)、或(OR)、异或(XOR)、如果…否则…(IF_ELSE)等运算。运算节点用于表示诸如大于(>)、等于(=)、不等于(!=)、小于(<)等比较运算。
如图2所示,可选的,在S101之后,所述方法还包括:
S101’:获得所述目标节点的节点类型;
相应的,所述S104:根据判断结果,确定输出内容,为:
S104’:根据判断结果和节点类型,确定输出内容。
本可选方案中,依据判断结果和节点类型确定输出内容。不仅具有输出灵活性和减少工作量的优点,结合节点类型进行输出内容的确定,可使得输出内容更加准确。
在一个可选的方案中,所述根据判断结果和节点类型,确定输出内容,包括:在判断结果表征所述目标节点应被激活且所述目标节点为问题节点的情况下,获得所述问题节点对应的问题,将所述问题确定为所述输出内容。本可选方案中,考虑到问题节点可体现一个问题,在判断为目标节点应被激活且该目标节点为问题节点的情况下,可将该问题节点对应的问题作为输出内容,使得输出内容更加准确。
本申请实施例中,如图3所示,判断目标节点是否应被激活的方案,为:
S301:获得参考图中所述目标节点的父节点;
在图算法理论中,与节点有连接关系的上一级节点叫该节点的父节点,与父节点有连接关系的上一级节点叫该节点的祖父节点,与祖父节点有连接关系的上一级节点叫该节点的曾祖父节点,以此类推。相应的,该节点可称之为父节点的子节点、祖父节点的孙子节点、曾祖父节点的重孙节点。
S302:依据所述用户输入信息,判断所述父节点是否已被激活;
S303:判断所述父节点的与所述目标节点连接的输出端是否存在第一预定输出;
S302和S303无严格的先后顺序,还可以同时进行。
S304:在判断为父节点已被激活、以及所述输出端存在第一预定输出的情况下,判断为目标节点应被激活。
S305:在判断为父节点未被激活、和/或所述输出端未存在第一预定输出的情况下,判断为目标节点不应被激活。
前述S301~S305中,目标节点是否应被激活由父节点是否被激活以及父节点的与目标节点连接的输出端是否存在第一预定输出的判断结果而定。考虑到在具有连接关系的参考图中,假设节点1与节点2之间具有连接关系,即节点1的输出通过有向边连接到节点2,如果将从节点1→节点2称之为正向,则从节点2→节点1则称之为反向。本方案中某个目标节点是否应被激活的决定因素之一是其父节点是否被激活,该方案可视为一种反向计算方案。本方案基于反向计算方案来确定目标节点是否应该被激活,为一种新型的方案,可体现一定的新颖性。反向计算方案由于从后向前推导,其前向的父节点的数量通常是一定且是单个的,与从前向后推导的子节点数量通常为两个或两个以上的情况相比,在计算量上可大大被减少。
在前述S301~S305中,所述判断所述父节点是否已被激活的方案可以通过如下方式来实现:获得参考图中所述目标节点的祖父节点;依据所述用户输入信息,判断所述祖父节点是否已被激活;以及判断所述祖父节点的与所述父节点连接的输出端是否存在第二预定输出;在祖父节点已被激活、以及所述输出端为第二预定输出的情况下,判断为所述父节点已被激活;其中,所述祖父节点在所述目标节点的曾祖父已被激活以及所述曾祖父节点与祖父节点连接的输出端存在预定输出的情况下被激活;所述曾祖父节点在所述目标节点的曾祖父的父节点已被激活以及所述曾祖父的父节点与曾祖父节点连接的输出端存在预定输出的情况下被激活;以此类推,以得到目标节点是否应该激活的判断结果。前述方案已经说过,本方案可视为一种反向计算方案。此外,由于目标节点是否应被激活的决定因素之一是其父节点是否被激活,父节点是否被激活的决定因素之一是其父节点(目标节点的祖父节点)是否被激活,祖父节点是否被激活的决定因素之一是祖父节点的父节点(目标节点的曾祖父节点)是否被激活,即每级节点是否被激活的决定因素之一取决于上一级节点是否被激活,为一种递归方案。综上,本申请实施例的方案为一种反向递归方案,可减少计算工作量,降低自动问题系统的开发工作量。此外,依据判断结果确定输出内容,与相关技术中需要按照预先设置的问答模板进行问题输出的方案相比,灵活性较好。其中输出内容也是结合用户输入信息而确定的,可大大自动问题系统输出的内容如问题不符合实际问答情况的情形。
前述方案中依据用户输入信息判断某个节点(如父节点、祖父节点、曾祖父节点等)是否被激活意在判断用户输入信息中是否存在有可匹配于节点对应的问题的信息。在用户层面上来看,用户是否已经对该节点对应的问题给出了答案。依据用户给出的实际输入实现对某个节点识别已被激活的判断,可大大提高判断准确性,从而确保输出内容的确定准确性。
下面结合附图4(a)-(d)和图5及具体实施例对本申请作进一步详细的说明。
本应用场景中,以参考图为图4(a)~图4(d)所示的问诊示意图为例,图4(a)~图4(d)为一个完整的呼吸科预问诊示意图,考虑到如果将四个图放在同一图中显示将会造成不清晰的问题,本应用场景中将该完整的预问诊图分到四个图中去显示。可以理解,在这四个图中,下一个图可视为上一个图的接续图,下一个图中用于接续上个图的部分用虚线表示。在图4(a)~(d)中每个方框可视为一个节点,节点可包括起始节点如表征为主诉的节点、问题节点如表征为“请问您发热持续了多久”、逻辑节点如表征为或(OR)或异或运算(XOR)的节点、运算节点如表征为大于(>)或小于(<)的节点、以及结束节点如问诊小结节点(表征为线上自动问诊结束的节点)。图中各节点之间的连接关系具体如图所示。在以上图中,部分节点具有一个输入端,部分节点具有两个输入端(如逻辑节点OR、AND及XOR)。部分节点存在有两个或两个以上的输出端,不同的输出端可连接着后续不同的节点,以此来构成不同的问答(预问诊)过程。逻辑节点和运算节点出现在这个参考图中的原因是:在实际应用中,因为存在有年龄和性别的不同,所以同一种疾病可能会存在有不同的问诊过程。示例性地,以性别这一项为例,假定数字1代表男性,数字2代表女性,自动问答系统根据用户输入的性别这个信息去识别当前用户为男性还是女性,在某种场景下如果问诊用户为男性,用户勾选“男性”这一选项,性别这一项取值为1,则系统可能直接为
其显示问题1;如果问诊用户为女性,用户勾选“女性”这一选项,性别这一项取值为2,则系统先为其显示问题2(是否处于备孕状态、或哺乳期),在用户回答为否的情况下,可能才会为其显示与为男性患者直接推送的问题1;在用户回答为是的情况下,可能为其显示问题3(如果处于备孕状态,那么需要做个花费昂贵的项目去做检查)等。其中,在图4(a)中,可用等于(=)、不等于(!=)等运算逻辑去表示性别为男还是女。输入至某个运算节点(该节点表征为性别)不等于(!=)1,意味着为等于2,则性别为女。以AND逻辑节点为例,输入至AND逻辑节点的一输入为年龄大于24,另一输入为性别为女,则经过AND之后输出的是年龄大于24的女性。
需要说明的是,
相关技术中,互联网线上问诊的预问诊模板,一般是有医生或产品设计人员制定好规则,包含预问诊中所问问题的先后、选项、分支,然后再由软件工程师配合开发为代码形式,再发布到线上。而在本申请实施例中,图4(a)~(d)所示的预问诊示意图可由用于编辑预问诊模板的编辑器对该图进行设计并绘制。由编辑器对预问诊示意图进行绘制可大大缩短绘制时长、缩短自动问答系统的开发时间。由编辑器绘制出的图4(a)~图4(d)可在编辑器中进行可视化显示,这种显示是直观的,可供开发人员或其他非专业人员进行编辑操作。其中,编辑器可以是拖曳式预问诊模板的编辑器。
在实际应用中,采用线上预问诊的患者(用户)的数量可能为多个,自动问答系统需要能够同时支持多个用户调用预问诊服务。在这种情况下,要对自动问答系统为每个用户呈现过哪些问诊问题(如图4(b)中的“请问咳嗽持续了多久”)和用户对该问题做出的答案进行存储,还要对用户的姓名、年龄、性别、症状等进行记录。在技术层面上,用户向自动问答系统输入其姓名、年龄、性别、症状等信息(用户主诉信息),以及对系统为其呈现的“购药”或“看病”等意图做出选择,为选择“购药”,如上信息均作为用户输入信息。可以理解,本应用场景中对于在预问诊服务中自动问答系统为用户确定并显示的问题,均可以采用选项的形式进行呈现,以令用户进行选择。如针对图4(a)中的“请问您是要开处方买药吗”,选项中存在有“疾病已确诊直接开处方”和“先看病再按需开处方”,用户需要在这两个选项中做出选择。本应用场景中,称已为用户显示并且用户已经作答过的问题节点为被激活的问题节点。对于OR、AND、XOR三个逻辑节点,这几个逻辑节点均为2个输入,当逻辑节点的所有输入都为None(没有值)时,则认为该逻辑节点没有被激活,只有存在有一个输入则认为被激活。对于IF_ELSE节点,当输入为True,其输入的第一个端口为True,第二个端口为False;当输入为False(错误值),其输出的第一个端口为False,第二个端口为True。同样,如果输入是None,则认为该IF_ELSE结点没有被激活,输出均为None。
为实现本方案,需要对用户输入信息、以及如图4(a)~图4(d)所示的参考图中的各节点是否被激活、每个节点为何种类型、每个问题节点所对应的问题进行记录。考虑到问诊对象不同,可以以问诊对象为单位,对以上需要记录的信息进行记录。在技术层面上,针对每个问诊对象需要记录的信息为其创建一个字典对象去存储,为每个问诊用户记录的信息均可以键值对的形式出现。示例性地,用户1的字典为{‘年龄’:30,’性别’:’男’},其中年龄和性别两个字符串可以作为字典的键(key),“30”、“男”是字典对应键的值(value)。相当于使用键值对的形式对用户输入的年龄、性别等信息进行存储。此外,用户1的字典还可以记录针对用户1的问诊服务参考图中的各节点的状态,如问题节点对应的问题、该问题节点在用户1的问诊下是否被激活、用户1针对问题做出的选项等。
需要记录的信息可以采用系统内存或数据库进行存储。数据库可以是键值型数据库如Redis数据库。此外,为避免系统内存或数据库存储的信息存在过期的情况,每隔一段时间(为预设值),可对存储的信息进行清理。示例性地,每隔2分钟对字典对象进行扫描一次,判断在内存或数据库中对该信息的记录时间是否超过1小时,如果超过则删除该数据。以避免过期数据对内存或数据库的空间占用。
本应用场景中,自动问答系统为用户输出一个问题(问题节点对应的问题),用户通过选项的形式对这个问题作答,然后为用户输出下一个问题。可以理解,在某个问题为用户提供的选项过多的情况下,由于用户所选择的选项不同,结合图4(a)-(d)所示,为用户输出的下一道问题也许会存在不同。本应用场景意在解决如何根据用户输入的诸如姓名、年龄、性别等信息以及对已经作答过的问题和答复(历史信息)使得自动问答系统为该用户确定并输出适宜的问题。
在技术实现上,从如图4(a)~(d)的参考图中,查找出出度为0的节点作为目标节点。在图论中,出度表示的是从该节点指向其他节点的有向边的数量,出度为0表示该节点没有指向其它任何节点。在图4(a)~(d)所示的参考图中,“请问呼吸困难什么时候加重”、“请问发热温度”、“问诊小结”等为出度为0的节点,将这些出度为0的节点进行记录。
对于每个记录下来的出度5为0的节点(当前目标节点),
检测当前目标节点的属性update的取值,如果其取值为True,则跳过,选取下一个未被计算过是否应被激活的出度为0的节点进行其是否应该被激活的计算。预先为每个出度为0的节点设置一个属性(update),如果其被计算过是否应该被激活,则将update赋值为True。
如果当前目标节点的属性取值不为Ture,依据当前用户的输入信息,判断该节点是否应该被激活。具体的,
计算当前目标节点是否应该被激活,即依据当前用户的输入信息判断当前目标节点的父节点是否被激活、以及判断父节点连接到当前目标节点的输出端是否存在第一预定输出(如是否输出True)。
其中,从用户层面上来看,判断父节点是否被激活意在判断父节点对应的问题是否为当前用户呈现过且用户对其做出过答案,即依据为当前用户记录的字典信息,判断字典信息中是否存在有父节点对应的问题为当前用户呈现过的标识、以及用户对其做出的答案。如果有,则判断为父节点被激活过,否则判断为否。判断父节点连接到当前目标节点的输出端是否存在第一预定输出意在判断用户对父节点做出的答案是否经与当前目标节点的输入端连接的输出端输出至当前目标节点。如果字典信息中记载有用户对父节点对应的问题做出的选择经由与当前目标节点的输入端连接的输出端输出,则判断为是,否则判断为否。在以上两个判断均成立即判断为父节点被激活过以及父节点连接到当前目标节点的输出端存在第一预定输出的情况下,且当前目标节点为问题节点,确定当前目标节点对应问题为输出内容,将该输出内容作为一个问诊问题进行输出,并获取用户针对这一问题而给出的答案。将系统为该用户呈现过该问题以及用户针对这个问题给出的答案等信息记录到字典中。可以理解,在没有为该用户输出过该问题之前,字典信息中某项信息指示的是该问题未输出过给该用户。而在为该用户输出过该问题之后,需要更新该问题节点的状态,如更新为该问题节点对应的问题已输出至该用户并且该用户已作答。基于此,在为用户输出某个问题节点对应的问题之后,将保存或记录这些更新信息。在实际应用中,针对每个用户创建的字典对象中的每项内容因为带有相应用户的标识如用户姓名均可作为唯一信息记录到内存或数据库中。如果将为各个用户创建的字典对象视为一个全局变量,则需要将更新的数据记录到全局变量中。如果当前目标节点不是问题节点如为逻辑节点,则将其属性update赋值为True,寻找下一个未被计算过是否应被激活的出度为0的节点,将其作为当前目标节点,按照如上方案继续进行计算。如果以上两个判断中的其中一个判断不成立,则寻找下一个未被计算过是否应被激活的出度为0的节点,将其作为当前目标节点,按照如上方案继续进行计算。
上述方案中,判断当前目标节点的父节点是否被激活的方案是:寻找参考图中当前目标节点的祖父节点;依据当前用户输入信息,判断祖父节点是否已被激活;以及判断祖父节点的与父节点连接的输出端是否存在第二预定输出(是否输出True);在祖父节点已被激活、以及祖父节点的与父节点连接的输出端为第二预定输出的情况下,判断为父节点已被激活。从用户层面上来看,判断父节点是否被激活意在判断祖父节点对应的问题是否为当前用户呈现过且用户对其做出过答案,即依据为当前用户记录的字典信息,判断字典信息中是否存在有祖父节点对应的问题为当前用户呈现过的标识、以及用户对其做出的答案。如果有,则判断为祖父节点被激活过,否则判断为否。判断祖父节点连接到当前目标节点的父节点的输出端是否存在第二预定输出意在判断用户对祖父节点做出的答案是否经与当前目标节点的父节点的输入端连接的输出端输出至当前目标节点的父节点。判断当前目标节点的祖父节点是否被激活需要判断当前目标节点的曾祖父节点是否已被激活以及判断曾祖父节点与祖父节点连接的输出端是否存在预定输出(存在True的输出)。判断当前目标节点的曾祖父节点是否被激活需要判断当前目标节点的曾祖父节点的父节点是否已被激活以及判断曾祖父节点的父节点与曾祖父节点连接的输出端是否存在预定输出(存在True的输出),以此类推,直到得到目标节点是否应该激活的判断结果。
上述方案中,当前目标节点的祖父节点、曾祖父节点以及曾祖父的父节点是否被激活与前述当前目标节点的父节点是否被激活的方案类似,重复之处不赘述。可以看出,如上方案为一种反向递归方案,依据递归结果确定输出内容,与相关技术中需要按照预先设置的问答模板进行问题输出的方案相比,灵活性较好。其中输出内容也是结合用户输入信息而确定的,可大大自动问题系统输出的内容如问题不符合实际问答情况的情形。
在用户对某个问题做答之后,需要判断当前其作答的问题是否可作为问诊过程的最后一题,如果是,则结束预问诊过程,如果否,则继续依据内存或数据库中为该用户存储的信息进行下一题的确定。本应用场景中方案的整体实现可参见图5所示。
下面结合图4(a)~(d)中的问题节点A(“呼吸困难什么时候加重”)为当前目标节点做如上的反向递归过程进行说明:
问题节点A的父节点为问题节点B(“请问呼吸困难持续多久了”),问题节点B的父节点(问题节点A的祖父节点)为问题节点C(“请问您现在的主要症状有”)。判断问题节点A是否应该被激活,需要依据当前用户输入信息判断问题节点B是否已被激活,具体方案是:
判断问题节点B对应的问题是否为当前用户呈现过且用户对其做出过答案,即依据为当前用户记录的字典信息,判断字典信息中是否存在有问题节点B对应的问题为当前用户呈现过的标识、以及用户对其做出的答案。如果有,则判断为问题节点B被激活过,否则判断为否。判断问题节点B连接到问题节点A的输出端是否存在第一预定输出,需要判断用户对问题节点B做出的答案是否为2-3天(因为在参考图中2-3天的输出口与问题节点A的输入端连接),如果是2-3天,判断为是,否则判断为否。在以上两个判断均成立的情况下,确定问题节点A对应的问题(“呼吸困难什么时候加重”)为当前需要呈现给用户的内容,将该内容作为一个问诊问题进行输出。
其中,判断问题B是否被激活的方案为:判断问题节点C对应的问题是否为当前用户呈现过且用户对其做出过答案,即依据为当前用户记录的字典信息,判断字典信息中是否存在有问题节点C对应的问题为当前用户呈现过的标识、以及用户对其做出的答案。如果有,则判断为问题节点C被激活过,否则判断为否。判断问题节点C连接到问题节点B的输出端是否存在第二预定输出,需要判断用户对问题节点C做出的答案是否为“呼吸困难”(因为在参考图中呼吸困难”的输出口与问题节点B的输入端连接),如果是,判断为是,否则判断为否。判断问题C是否被激活的方案可按照前述方案进行递归计算,重复之处不赘述。
与相关技术中需要按照预先设置的问答模板进行问题输出的方案存在有输出的问题不够灵活的缺点相比,本申请实施例的这种反向递归方案,可灵活地为用户输出下一题,灵活性较好。输出内容也是结合用户输入信息而确定的,可有效避免自动问题系统输出的内容如问题不符合实际问答情况的情形。
本申请实施例提供一种确定输出内容的设备,如图6所示,所述设备包括:第一获得单元11、第二获得单元12、判断单元13以及确定单元14;其中,
第一获得单元11,用于获得参考图中的目标节点,所述目标节点为参考图中符合预定条件的节点;
第二获得单元12,用于获得用户输入信息;
判断单元13,用于依据所述用户输入信息,判断目标节点是否应被激活;
确定单元14,用于根据判断结果,确定输出内容,其中所述输出内容至少与所述用户输入信息相关联。
在一个可选的方案中,确定单元14,用于在所述判断结果表征为目标节点应被激活的情况下,确定输出内容。
在一个可选的方案中,第一获得单元11,用于获得所述目标节点的节点类型;
相应的,确定单元14,用于根据判断结果和节点类型,确定输出内容。
在一个可选的方案中,确定单元14,用于在判断结果表征所述目标节点应被激活且所述目标节点为问题节点的情况下,获得所述问题节点对应的问题,将所述问题确定为所述输出内容。
在一个可选的方案中,判断单元13,用于获得参考图中所述目标节点的父节点;
依据所述用户输入信息,判断所述父节点是否已被激活;以及判断所述父节点的与所述目标节点连接的输出端是否存在第一预定输出;
在判断为父节点已被激活、以及所述输出端存在第一预定输出的情况下,判断为目标节点应被激活。
在一个可选的方案中,判断单元13,用于获得参考图中所述目标节点的祖父节点;
依据所述用户输入信息,判断所述祖父节点是否已被激活;以及判断所述祖父节点的与所述父节点连接的输出端是否存在第二预定输出;
在祖父节点已被激活、以及所述输出端为第二预定输出的情况下,判断为所述父节点已被激活;
其中,所述祖父节点在所述目标节点的曾祖父已被激活以及所述曾祖父节点与祖父节点连接的输出端存在预定输出的情况下被激活;所述曾祖父节点在所述目标节点的曾祖父的父节点已被激活以及所述曾祖父的父节点与曾祖父节点连接的输出端存在预定输出的情况下被激活;以此类推,以得到目标节点是否应该激活的判断结果。
在一个可选的方案中,所述参考图中符合预定条件的节点为出度为零的节点。
可以理解,前述的确定输出内容的设备可以为前述的自动问答系统,还可以是内置有自动问答系统的设备。
可以理解,所述设备中的第一获得单元11、第二获得单元12、判断单元13以及确定单元14在实际应用中均可由中央处理器(CPU,Central Processing Unit)、数字信号处理器(DSP,Digital Signal Processor)、微控制单元(MCU,Microcontroller Unit)或可编程门阵列(FPGA,Field-Programmable Gate Array)实现。
需要说明的是,本申请实施例的确定输出内容的设备,由于该设备解决问题的原理与前述的确定输出内容的方法相似,因此,设备的实施过程及实施原理均可以参见前述确定输出内容的方法的实施过程及实施原理描述,重复之处不再赘述。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时至少用于执行图1至图5任一所示方法的步骤。所述计算机可读存储介质具体可以为存储器。所述存储器可以为如图7所示的存储器62。
图7为本申请实施例的确定输出内容的设备的硬件结构示意图,如图7所示,确定输出内容的设备包括:用于进行数据传输的通信组件63、至少一个处理器61和用于存储能够在处理器61上运行的计算机程序的存储器62。终端中的各个组件通过总线系统64耦合在一起。可理解,总线系统64用于实现这些组件之间的连接通信。总线系统64除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线系统64。
其中,所述处理器61执行所述计算机程序时至少执行图1至图5任一所示方法的步骤。
可以理解,存储器62可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器62旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器61中,或者由处理器61实现。处理器61可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器61中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器61可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器61可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器62,处理器61读取存储器62中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,确定输出内容的设备可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice)、FPGA、通用处理器、控制器、MCU、微处理器(Microprocessor)、或其他电子元件实现,用于执行前述的确定输出内容的方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。