一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于自然语言的任务驱动系统的制作方法

2021-10-20 00:19:00 来源:中国专利 TAG:自然语言 人工智能 驱动 特别 是基于


1.本发明涉及人工智能领域,特别是涉及一种基于自然语言的任务驱动系统。


背景技术:

2.主流的信息系统目前仍然采用以键盘和鼠标为主的传统交互模式。很多大型系统包含成百上千个功能,用户往往需要经过多次点击、查找才能获取到想要的功能,有时候还需要手工输入参数,不仅学习周期较长,而且效率较低。近年来,苹果siri、亚马逊echo、微软敦煌小冰等任务型人机对话系统开始步入应用阶段,其以个人助手的形式存在于用户的手机或其他智能设备中,用户只需要通过语音就能够便捷地处理常见任务,减轻了人工负担。任务型人机对话技术的发展为提升传统信息系统访问效率带来了新的机遇,如何使用户通过自然语言快速、准确的驱动传统信息系统,完成复杂任务,是一项技术挑战。


技术实现要素:

3.发明目的:提出一种基于自然语言的任务驱动系统,能够理解用户通过语音发出的指令,解析后对信息系统中的任务进行驱动。
4.本发明定义如下概念:
5.任务:是信息系统的一部分,负责执行一到多项功能。例如在地图系统中,地图缩放、地图搜索、地图导航都可以被认为是任务。在本发明中,任务特指需要通过语音或自然语言指令进行驱动的信息系统功能,通常情况下具有表述简单、参数较少的特点。
6.领域:是指任务所属的功能大类,例如“地图搜索”任务对应的功能大类为“地图服务”,“查询温度”任务对应的功能大类为“气象服务”。
7.意图:指用户提问所要表达的目的,可以对应到特定任务。例如“南京市明天的气温是多少?”对应的用户意图为“查询温度”。
8.槽位:将某项意图转化为可执行任务所必须获取到的信息。例如“查询温度”任务执行需要获取到“地点”和“时间”信息,则槽位为“地点”和“时间”两个。
9.槽值:槽位的取值被称为槽值。例如对于问题“南京市明天的气温是多少”,槽位“地点”的取值为“南京市”,槽位“时间”的取值为“明天”。
10.参数:由槽值经过规范化得到的具有一定类型的、能够作为服务接口输入的数据,例如,槽值“明天”对应的参数为“2020

11

16”。
11.对话保留字段:一些预先定义的,与待驱动的任务无关的命令,通常用于控制对话过程或者获取一些常见问题的答案,如“跳出”、“再见”、“你好”、“功能”等。
12.本发明具体提供了一种基于自然语言的任务驱动系统,包括人机交互模块、问题理解模块、多轮对话模块和信息系统主体;
13.所述人机交互模块用于人机交互,是直接面向用户的模块,其软件形态可以是无界面的后台程序(类似siri),也可以是对话客户端(类似微软小冰、阿里小蜜),硬件载体可以是普通的pc机,也可以是智能音箱、智能手机等智能设备。
14.所述问题理解模块是本发明的核心,它接收用户的问题,并将其解析为由“领域”、“意图”、“槽位列表”、“参数列表”构成的结构化表示,使得机器能够理解自然语言。
15.所述多轮对话模块负责维护与用户的对话状态,并根据用户的输入做出正确的响应,例如驱动任务、对缺失的内容进行反问、回答常用话术等。
16.所述信息系统主体是待驱动的软件。
17.所述人机交互模块包含语音识别子模块、语音合成子模块、会话管理子模块,其中,语音识别子模块将用户用语音输入的命令转换成文本,语音合成子模块则将多轮对话模块生成的话术转换为音频为用户播报,会话管理子模块维护并记录用户与系统的默认变量,所述默认变量包括交互过程、管理时间、空间、用户。
18.所述问题理解模块包含意图识别子模块、槽位提取子模块、参数规范化子模块;
19.其中,意图识别子模块从用户的问题中提取词、词性、句法等特征,并通过预先定义的模式或机器学习模型进行领域和意图分类。
20.所述槽位提取子模块通过模式匹配、序列标注等技术,从问题中提取如时间、空间、人物等值,并通过参数规范化模块将提取的时间、空间、人物等值转换成标准参数形式。
21.所述问题理解模块对所有待驱动的任务进行可扩展的描述,并定义了问题模型,问题模型包括全局问题模型以及局部问题模型两部分;
22.全局问题模型是对需要驱动的任务的总体描述,形态为json格式的配置文件。
23.文件中描述的内容包括:
24.1.定义挂载的领域,确定进行领域之间划分的分类器;
25.2.定义槽位全集,对于每种类型的槽位,定义槽位提取所依赖的词典文件、模式文件集合,定义进行槽值提取的槽位提取器(通常是机器学习模型);
26.3.定义参数全集,对于每种参数类型,定义进行参数规范化所采用的规范化引擎;
27.4.为每个领域定义一些内部属性,包括在领域内进行意图分类所采用的分类器,执行领域内任务所对应的行动模块,领域关注的槽位全集。
28.局部问题模型用来定义每一类任务的细节,包括:
29.1.定义任务所对应的服务名称;
30.2.定义槽位的类型及属性,包括能否为空、默认取值、反问话术;
31.3.定义参数的类型及属性,包括数据类型(例如string、integer、point、date等)、来源槽位、能否为空、数值范围等。
32.所述问题理解模块,为提升对短文本问题理解的准确性,充分利用用户对同一任务描述往往符合某些特定模式这一特征,采用了规则与机器学习相结合的方法。用户的问题首先通过规则进行匹配,如果匹配不上再通过机器学习模型进行处理。
33.由于同一个实体有多种描述方式,而同一种描述方式也可能指代不同实体,实体名称规范化面临挑战。本发明提出一种基于实体链接的实体规范化方法,通过将问题中的实体名称映射到知识图谱中,获取实体的标准名称和id。知识图谱可以根据业务需求构建,也可以采用开源的知识图谱,如wikidata等。以基于wikidata的实体规范化为例,假如问题中提到的实体是“某a”,实体规范化组件将返回其在wikidata中的唯一id:q22686,以及标准名称“某某
·
某”。在实体链接的过程中,考虑五个维度的特征,分别打分后再进行加权平均。这五个维度包括流行度(对节点的入度和出度进行归一化)、词表相似度(计算名称的编
辑距离)、语义相似度(采用预训练好的bert 模型获取向量表示,计算相似度)、性质相似度(实体类型与候选实体性质标签的相似度)、上下文特征(上下文实体与候选实体邻居的重合程度)。
34.所述多轮对话模块包含常用话术管理子模块、对话状态跟踪子模块、行动策略选择子模块;
35.其中,所述常用话术管理子模块用于对“打招呼”、“结束对话”、“查询可用功能”等任务无关的通用指令进行管理;
36.所述对话状态跟踪子模块维持着一个状态机,并根据问题解析结果进行状态转移;
37.所述行动策略选择子模块管理所有注册在所述系统上的任务,根据当前状态选择下一步要执行的动作,并生成话术。
38.所述系统能够同时连接一到两个以上信息系统主体,信息系统主体仅需将待驱动的任务的服务地址注册到所述行动策略选择子模块,并在全局问题模型、局部问题模型的配置文件中添加相应的意图,创建意图规则文件并添加规则,即能够使服务地址已注册到所述系统的任务能够通过统一的人机交互入口被执行。
39.所述系统具体执行如下步骤:
40.步骤1:用户通过人机交互模块的会话管理子模块与系统进行交互,通过语音输入命令,语音识别子模块将命令转换为文本;
41.步骤2:多轮对话模块中的常用话术管理子模块判断用户的命令是否触发了对话保留字段。如果触发,则进入步骤3,否则进入步骤4;
42.步骤3:对话状态跟踪子模块负责更新对话状态,由行动策略选择子模块根据预先构建的默认话术表生成返回话术。例如当用户输入为“跳出”时,清空当前的对话状态,并返回话术“跳出当前任务,请重新提问”。当输入为“功能”时,返回话术“请尝试向我提问:1.今天天气如何?2.帮我把地图聚焦到南京;3.搜索一下与某a有关的新闻”;
43.步骤4:对话状态跟踪子模块判断当前的对话状态,以进行进一步的问题理解。当对话状态为“等待补全槽位”时,进入步骤5;当对话状态为“新对话”时,进入步骤 6;
44.步骤5:行动策略选择子模块判断用户的输入是否满足当前等待槽位的模式。例如,当前等待槽位为时间,用户的输入为“今天”、“三天内”、“2020年6月16日”等时间则为合法,为地点、数值、人物等其他类型则为不合法。如果用户的输入合法,则进入步骤9;如果用户的输入不合法,则维持当前状态不变,生成追问槽值的话术,进入步骤11;
45.步骤6:问题理解模块中的意图识别子模块对转换成命令的文本进行意图识别,包括对任务所处的领域和具体意图进行识别;例如,对于命令“南京明天风力几级?”,可识别领域为“气象问答”,意图为“问风力”。如果意图能够识别,则进入步骤7;如果意图无法被识别,则生成默认话术,如“我无法理解您的问题,请试试重新向我提问”,进入步骤11;
46.步骤7:确定了意图后,槽位提取子模块获取到意图对应的槽位类型,运用序列标注、模式匹配等技术对于期望的槽值进行提取。例如,对于“问风力”意图,需要提取地点、时间两个槽位;对于“缩放地图”意图,需要提取倍数槽位。如果能够提取到槽值,进入步骤8,否则进入步骤9;
47.步骤8:参数规范化子模块对于提取到的槽值进行规范化,包括:对时间、空间、数
量、人物名称规范化,将字符串转换为满足待驱动任务参数需求的数据格式;将不同表述的空间(地名、经纬度)统一转换为坐标点、圆形区域、多边形区域;将数量按照量词进行规范化,例如将距离统一转换为以米为单位,将速度单位统一转换为km/h。经过规范化,用户命令被转换为结构化的问题解析结果,进入步骤9。
48.步骤9:对话状态跟踪子模块将问题解析结果合并入当前对话状态,检查是否有槽位缺失。如果有槽位缺失,则设置对话状态为“询问槽位”,由行动策略选择子模块生成反问话术,回到步骤1;如果槽位已全,则说明任务执行条件已满足,进入步骤10;
49.步骤10:行动策略选择子模块根据意图查找到对应的任务接口,并用规范化后的槽值生成访问请求,驱动任务,并为任务执行结果生成话术,对话状态跟踪子模块更新对话状态为“新对话”,进入步骤11;
50.步骤11:人机交互模块中的语音合成子模块将话术进行语音合成,并播报给用户。
51.本发明与现有技术相比,显著优点是:1.提供了一种可行的、具有良好可扩展性的架构,仅需少量的配置和规则,就能够对现有信息系统进行扩充,实现自然语言交互;2.本发明提出了一种规则与机器学习相结合的问题理解方法,并定义了一种简单、表达性强的规则语法,相比于现有研究中单纯采用有监督机器学习算法,在实际应用中能够以更少的人力代价,达到更高的准确率;3.相比于经典的对话模型,本发明在问题理解过程中增加了参数规范化模块,将任务共用的参数进行抽象,实现了从槽值到参数值的灵活映射,提升了对不同语义表达方式的支持程度。综上,本发明所提出的方法较以往的方法在处理流程、系统架构等方面均存在不同,且相比于现有的方法在准确性、可扩展性上具有一定的优势。
附图说明
52.下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/ 或其他方面的优点将会变得更加清楚。
53.图1为本发明流程图。
54.图2为系统框架图。
55.图3为槽位提取流水线。
56.图4为实体规范化流程。
57.图5为状态转移过程。
具体实施方式
58.如图1、图2所示,本发明提供了一种基于自然语言的任务驱动系统,能够与用户进行多轮交互,接收用户语音输入的命令,并对传统信息系统中的复杂任务进行驱动,从而提升系统访问的效率。下面结合具体的实施例对本发明进行详细说明,应理解本实施例仅用于解释本发明,并不限于本发明的范围。
59.在本实施例中,选择气象问答、地图操作作为待驱动的两个领域,对应两个不同的信息系统。对于气象问答,包括“问天气属性”、“判断某天气会不会发生”等子意图。对于地图操作意图,包括“聚焦某目标”、“移动地图”、“地图缩放”、“绘制警戒圈”等子意图。
60.构建本发明所述的基于自然语言的任务驱动系统,需要经历问题模型构建、人机交互模块构建、问题理解模块构建、多轮对话模块构建等步骤。在本实施例中,将对以上步
骤构建的方案进行逐一说明。
61.(1)问题模型构建
62.首先确定待驱动的任务集合,对任务的参数进行归纳,并定义问题模型。问题模型包括全局问题模型以及局部问题模型两部分。
63.全局问题模型是对需要驱动的任务的总体描述,包括:1.定义挂载的领域,用哪个分类器进行领域之间的划分;2.定义槽位全集,对于每种类型的槽位,定义槽位提取所依赖的词典文件、模式文件集合,进一步定义用哪些槽位提取器进行槽值的提取; 3.定义参数全集,对于每种参数类型,定义进行参数规范化所采用的规范化引擎;4.定义领域内的一些属性,包括在领域内进行意图分类所采用的分类器,执行该领域任务所对应的行动模块,该领域关注的槽位全集。
64.在本实施例中,全局问题模型以json文件的形式定义,表1所示是全局问题模型配置文件的一个示例:
65.表1
66.[0067][0068]
以下对全局问题模型配置文件的字段进行解释。
[0069]
domainclassifier:用于领域之间分类的分类器,是一个java类的路径。
[0070]
domains:挂载的领域,例子中挂载了map(地图服务)和weather(气象服务)两个领域。
[0071]
allslots:配置所有的槽位。在例子中,time、location、batchnum、device都是槽位名称。对于每一个槽位,定义其词典(dictionaries)、模式文件(patterns)、机器学习槽位提取器(slotextractor)。
[0072]
allparams:定义所有的参数规范化类。例如,对于distance类型的参数,用 "intention.slots.normalizer.distancenormalizer"这个类来将提取的槽值字符串转换成 distance类型的参数,它所做的工作包括统一距离单位、转换数字大小写等。
[0073]
intentions:为每一个领域定义领域内的一些关键共性属性,其中,classifier定义在领域内部对意图进行分类的分类器,actionclass定义领域对应的任务应答类,fullslots 定义领域内有效的所有槽位名称,slotscommonextractor定义采用通用槽位提取器的槽位名称,slotsmoreextractors定义采用独立槽位提取器的槽位名称。
[0074]
局部问题模型用来定义每一个任务的细节,包括定义例句、任务的槽位及属性,参数的类型及属性。在本实施例中,局部问题模型以json文件的形式定义,表2所示是局部问题模型配置文件中对“显示x目标航行轨迹”任务定义的模式。
[0075]
表2
[0076]
[0077]
[0078][0079]
以下对局部问题模型配置文件的格式进行解释。
[0080]
desc字段为该任务的调用示例。
[0081]
service字段为目标服务名称。
[0082]
slots定义了该任务所需提取的槽位,对于slots中的每个槽位,各属性字段含义如下:
[0083]
desc:描述槽位含义;
[0084]
notnull:是否能够为空;
[0085]
botaction:当该槽位无法提取时,返回给用户的话术;
[0086]
default:当该槽位为空时,默认采用该值,不再反问用户。
[0087]
params定义了该任务的调用参数,对于params中定义的每个参数,各属性字段含义如下:
[0088]
type:参数的类型,取值范围为全局问题模型中allparams字段定义的类型,以及 java的基础数据类型。
[0089]
infini:是否有无限的取值。
[0090]
values:如果infini为false,代表该参数只能有有限的取值,在本字段中穷举。
[0091]
slot:以哪个slot的值作为输入进行计算。
[0092]
notnull:是否可以为空。
[0093]
default:在参数为空的时候,指定默认值。
[0094]
(2)人机交互模块构建
[0095]
人机交互模块的核心是语音识别与语音合成组件,因这两项技术业界已经较为成熟,且在众多领域得到广泛应用,因此不作为本发明的重点。在本实施例中,通过集成科大讯飞的成熟产品来实现。
[0096]
(3)问题理解模块构建
[0097]
问题理解模块是本系统中内容和结构最复杂的部分,本实施例仍然以气象问答、地图操作为例,给出本发明的一种实施方案。
[0098]
1、构建意图识别子模块。
[0099]
意图识别子模块以文本为输入,输出该文本所对应的领域及意图。例如,对于命令“显示1101号目标的行动轨迹”,该模块输出领域为“地图操作”,意图为“显示目标航迹”。
[0100]
识别命令所属的领域和意图属于典型的文本分类问题,针对分类问题,目前业界已经有较多成熟的算法。例如传统的统计学习算法最大熵、支持向量机、朴素贝叶斯,以及深度学习算法textcnn、textrnn等。本实施例中,采用斯坦福大学发布的 stanfordnlp工具进行文本分类,选择最大熵分类算法,并定义了词、词性、句法等特征作为分类依据。
[0101]
由于用户所输入的命令大多是短文本,而短文本所包含的语义信息较少,单纯依靠机器学习模型难以像长文本一样达到较高的准确率水平。幸运的是,用户对同一任务的
描述往往符合某些特定的模式,因此可以通过规则的方式加以补充。
[0102]
本实施例定义了一套具有良好可扩展性的规则语法,并在此基础上实现了规则的解析、应用引擎,构建了基于规则的意图识别功能模块。规则定义如下。
[0103]
本实施例中,意图识别规则分为全局变量规则、领域规则、意图规则。规则被写在json文件中。
[0104]
全局变量规则文件定义会被其他规则重复引用的一些变量,表3给出了全局变量规则文件的一个片段,在该示例中,对数字(number)、倍率(rate)、距离(distance)、经度(longitude)、纬度(latitude)这几类常用变量进行了定义,其中每个常用变量由一到多个正则表达式构成,正则表达式之间是或的关系。
[0105]
表3
[0106]
[0107][0108]
领域规则文件定义属于该领域的一些模式,任意一条模式匹配则说明命令属于该领域。表4所示是领域规则文件的一个片段。
[0109]
表4
[0110][0111]
对于每一个意图,定义一个意图规则文件。在该文件中定义属于该意图的所有的模式。表5所示是意图“查询天气属性”的一个片段。以第一条规则为例,pattern代表用户命令需要满足的模式,规则中的“(?<weatherprop>温度|湿度|风力|风向)”代表提取名称为weatherprop,且满足(温度|湿度|风力|风向)这一模式的槽位。这条规则可以匹配“南京的温度如何?”、“北京的风力有几级?”等问题,并将其中的“温度”、“风力”提取出来作为槽值。在有些情况下,槽值可能没有在句子中明确表达,本实施例定义了action字段,能够指定一个问句中不存在的槽值。例如,在第二条规则中,问句中没有显式的说明查询哪一个属性,但在action中指定了属性值为“温度”。
[0112]
表5
[0113][0114]
在有些情况下,槽值的模式很复杂,这时候就可以在全局变量规则文件中定义全局变量,并且在意图规则文件中进行引用。表6展示了意图“绘制警戒区”的规则文件片段。第一条规则中,为distance槽位定义了约束条件,即其模式需要满足全局变量 distance的定义。第二条规则中,又分别为longitude槽位和latitude槽位定义了约束,即经度和纬度需要同时满足条件该模式才能够被匹配。
[0115]
表6
[0116][0117][0118]
2、构建槽位提取子模块
[0119]
槽位提取本质上属于序列标注问题,旨在识别句子中的语义槽和其对应的值。目前,以bi

lstm crf为代表的序列标注模型在最经典的实体识别任务中已经可以达到90%以上的准确率,说明序列标注技术已经相对成熟。但深度学习模型往往要求大量的数据标注,这一条件在任务众多、槽位类型众多时往往难以满足。基于这一考虑,本实施例将规则与传统的统计机器学习相结合,实现在小样本条件下槽位的提取。
[0120]
本实施例将槽位提取实现为可扩展的流水线。如图3所示,该流水线包括词典提取器、模式提取器、通用机器学习提取器、专用槽位提取器四部分。具体到每一种槽位类型,流
水线中包含哪些组件动态可配置。如果流水线中任意节点抽取到了槽值,则不再执行下游任务。
[0121]
词典组件针对每一种槽位类型定义了一系列词表,并进行完全匹配。例如,对于“国家”槽位类型,定义的词典中包括“中国”、“美国”等。对于“时间”槽位类型,定义的词典中包括“今天”、“明天”等。需要注意的是,词典定义的过于丰富容易引起误匹配,在实际操作中,应该尽量避免定义具有歧义的、较短的槽值,将其抽取任务交给下游的考虑上下文的机器学习模型。
[0122]
模式组件针对每一种槽位类型定义了一系列正则表达式。需要注意的是,这里的每一个正则表达式需要指明适用的对话状态。表7给出了“目标批号”槽位类型模式文件的一个片段。
[0123]
表7
[0124][0125]
其中第1列代表需要匹配的正则表达式,第2列代表槽值在正则表达式中命名捕获组的序号,第三列代表对话状态标签。其中,标注了“all_states”的正则表达式在系统处于任何对话状态的时候都可以被加载应用,而其他的标签则仅在特定的对话状态下才能应用。例如,用户当前的输入为“1101”,假设系统当前所处的状态为“ask_slots”,则能够匹配到第一条模式,“1101”被用来填充槽值。如果系统处于其他状态,则无法匹配当前输入。而如果用户输入为“1101号目标”,则无论处于任何状态都可以匹配到第二条规则,并将1101抽取为槽值。之所以设定这种机制,是为了防止由于过度宽松的条件导致的错误匹配。在不考虑系统的状态,仅凭用户输入的“1101”,无法判断用户到底是在指代编号、距离还是数量,只有知道了系统在上一轮对用户发起了提问“请给定目标的编号”,才能够知道用户输入的确切含义。
[0126]
通用机器学习提取器是基于历史标记样本学习出的机器学习模型,适用于组织机构名称、武器装备名称等难以穷尽且不具有明显模式的槽位类型。对于每一个领域,标记一批训练样本,并应用结构化感知机算法进行训练。在构建结构化感知机模型的时候,本实施例充分考虑了待抽取槽位的特性,选取的特征包括:词表特征、词性特征、数字组合特征、字母组合特征、关键词特征,以及左右各两个窗口内的以上特征。
[0127]
以上三个组件都属于通用组件,能够解决大部分连续、较短槽位的提取问题,但对于槽值不连续、槽值过长、槽位匹配规则过于复杂等情况的处理效果不好。需要为有特殊需求的槽位类型构建专用提取器,以解决以上问题。此类问题没有通用的解决方法,本实施例提供了一种可扩展的机制,开发者只需继承基类,并在全局配置文件中添加配置项,就可以将该组件添加至流水线。因时间区间表述复杂且有时候不连续,难以用通用的提取器进行识别,例如“从2020年1月1日至今”、“从2020年1月1 日开始,到2020年6月21日这段时间”,
在本实施例中为时间区间的识别定义了专用的提取器,从句子中分别识别出开始时间和结束时间,并合并成一个槽值,送入参数规范化模块进行进一步处理。
[0128]
3、构建参数规范化子模块
[0129]
参数规范化子模块用于将提取的槽值进行转换。由于从文本中提取而来,槽值全部为字符串类型,但参数具有不同的数据类型(日期、整数、浮点数甚至是自定义类型),且对规范度要求较高,从槽值到业务可用的参数需要经历很复杂的过程。规范化子模块管理一系列规范化组件,例如时间规范化组件、空间规范化组件、实体名称规范化组件等。组件能够被动态的添加,开发者只需继承基类,并在全局配置文件中添加配置项,就可以将该组件注册至规范化子模块。在应用的时候,用户只需在“局部问题模型配置文件”中为意图定义相应的参数及类型,系统会结合参数类型和槽位类型,自动选择规范化组件将槽值转换为参数。
[0130]
表8列出了几种槽位类型的不同表达方式及规范化需求。所述组件能够被动态的添加,开发者只需继承基类,并在全局问题模型配置文件中添加配置项,就能够将该组件注册至参数规范化子模块。
[0131]
表8
[0132][0133][0134]
本实施例针对参数规范化需求,定义了时间、空间、实体名称、距离、速度等规范化组件。距离和速度规范化组件主要完成了数值和单位的识别、数字转换、单位转换等工作,不在文中赘述。以下仅对时间、空间、实体名称规范化组件的实现方式进行描述。
[0135]
1)时间规范化组件
[0136]
时间规范化组件能够根据某个基准时间,将以字符串描述的时间转换为时间点、时间区间或时间长度。针对同一个时间字符串,当期望的参数类型不同时会转换出不同的结果。为实现时间的规范化,定义了一种规则语法。表9列出了规则的三个示例,并以2020年6月22日为基准时间,给出了不同的时间字符串应用规则后的规范化结果。timestring字段
代表待转换的字符串,timeperiod、timelength、timepoint分别代表将其转换为时间区间、时间长度、标准日期所需进行的操作。
[0137]
timestring是一个带命名捕获组的表达式,其可选的命名捕获组名称有表示点、长度、区间三类。表示点的有效名称有year(年)、month(月)、day(日)。表示区间的有效名称有daystart(起始日)、monthstart(起始月份)、yearstart(起始年份)、dayend (结束日)、monthend(结束月份)、yearend(结束年份)。表示长度的有效名称有dyear (年数)、dmonth(月数)、dlength(天数)。命名捕获组可以在同一个规则中通过$符号来引用。
[0138]
timeperiod字段中,start定义了获取开始时间的方法,end定义了获取结束时间的方法。例如,对于第一条规则,"start":{"year":"

1","day":"1"}代表在基准时间的基础上,将年份减1,日设置为1作为开始日期;"end":{"year":"

1","month":" 1","day":"1"}代表在基准时间的基础上,将年份减1,月份加1,日设置为1作为开始日期。因此,在基准时间为2020年6月22日时,通过计算得出起始时间为2019

01

01,结束时间为 2019

07

01。第二条规则的timeperiod字段同理。而第三条规则的timeperiod字段则引用了命名捕获组dlength的值,表示将基准时间的天数向前减dlength天作为开始时间。在未定义end的情况下,默认以基准时间作为结束时间。
[0139]
timelength字段定义时间长度,可以选择year、month、day作为长度单位,并且组合使用。在第一条规则中,"month":"$monthend

$monthstart 1"表示将monthend的取值(本例中是“6月”)和monthstart的取值(本例中是“1月”)通过计算获得月的数量,即6m。而第二条规则通过"timelength":{"day":1}直接定义了长度为1d。
[0140]
timepoint字段定义一个精确到天的时间点。在第三条规则中,"timepoint":{"day":" 1"}表示在基准时间上将日期加1,作为规范化后的时间。
[0141]
时间规范化组件通过规则引擎,将字符串与timestring所定义的规则相匹配,,并根据所定义的timeperiod、timelength、timepoint等操作对参数进行变换,以获取规范化后的时间。
[0142]
表9
[0143][0144][0145]
2)空间规范化组件
[0146]
空间规范化组件将地名转换为一个坐标点或一个区域。本实施例所驱动的信息系统提供了完整的地理信息表,包括从地名到经纬度点的映射,以及从地名到区域的映射。在本实施例中,将地理信息表存储在solr中以建立快速地名索引。详细实现过程不再赘述。
[0147]
3)实体名称规范化组件
[0148]
实体名称规范化组件用来找到人物、武器装备、组织机构等实体的正式名称,并赋
予实体全局唯一的id。例如,将某a、某某统一转化为某某
·
某a,将某号、某某航母统一转换为某某号航空母舰,将第七舰队、某国第七舰队统一转换为某国海军第七舰队。由于同一个实体有多种描述方式,而同一种描述方式也可能指代不同实体,实体名称规范化面临挑战。例如,“b”在不考虑上下文时很难确定指代的是哪个实体,在时政类新闻中可能指代的是某国首相b,在体育类新闻中可能指代的是篮球运动员b,在娱乐新闻中可能指代的是演员b。
[0149]
本实施例基于开源的wikidata数据构建千万级节点的知识图谱,并采用实体链接技术将实体名称映射到知识图谱的具体节点。实体链接的具体流程如图4所示。首先,将待规范化的实体及上下文输入至实体规范化组件,上下文包括实体的类型、共现的其他实体等。其次,基于实体名称对知识图谱中的所有名称和别称进行模糊搜索,获取前50个作为候选实体集合。然后,获取各维度得分之后,计算加权平均,并按照分值由高到低排列,选取第一个作为规范化的结果。
[0150]
(4)多轮对话模块构建
[0151]
多轮对话模块包含常用话术管理、对话状态跟踪、行动策略选择、任务驱动引擎等子模块。其负责维护与用户的对话状态,并根据用户的输入做出正确的响应。
[0152]
表10是常用话术配置文件的一个片段:
[0153]
表10
[0154][0155]
本实施例定义了打招呼(say_hi)、再见(say_bye)、询问功能(ask_functions)等常用话术。常用话术管理子模块解析该配置文件并建立映射表,如果输入匹配到queryset 中的任意一项,则从对应的answerset中随机选择一条作为返回话术。常用话术管理子模块不影响对话状态。
[0156]
对话状态跟踪模块维护了一个有限状态机,针对一次完整任务执行过程的状态转移图如图5所示。初始阶段,处于新对话状态。首先经意图识别模块处理,然后检查意图分类的结果,如果意图分类失败,则向用户发起反问。假如用户再次输入触发了重置热词,则转
移到新对话状态。如果未触发热词,则再度进行意图识别,跳转回检测意图分类结果状态。在此状态下,假如意图分类成功,则检查槽位和参数提取结果。假如所有槽位已经提取完全,则生成请求执行任务,任务执行结束后进入结束状态。如槽位不全,则针对缺失的槽位发起反问,直到所有槽位都获取到为止。
[0157]
行动策略选择根据对话所处的状态执行不同的动作,并对对话状态进行修改,这些动作包括:反问意图、反问槽位,根据问题理解结果生成任务调用请求、执行任务并向用户返回执行结果。
[0158]
至此,本实施例已经展示了一种基于自然语言的任务驱动系统的构建方法。该方法能够作用于各类信息系统,为传统信息系统的智能化改造提供了一种可行的思路,且具备良好的可扩展性。该方法所实现的规则与机器学习相结合的问题理解方法,仅需要少量的样本和配置就可以实现多种任务的驱动,且随着样本和规则不断完善准确率能够达到很高的水平。
[0159]
本发明提供了一种基于自然语言的任务驱动系统,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜