发明内容
本发明提供一种智能问答方法、装置及计算机可读存储介质,以提高识别用户需求及智能问答系统答复的正确率。
为实现上述目的,本发明提供一种智能问答系统,应用于一种电子装置,该系统包括:
知识库构建模块:用于构建问答库及知识库;
问题理解模块:用于接收并解析用户输入的自然语言问句,以识别用户意图和相关参数;及
对答模块:用于根据用户意图和相关参数查询问答库及知识库,得到符合用户意图的答案,并将答案反馈给用户。
优选地,所述知识库中每个资源描述由多个语句构成,每个语句是由资源、属性类型、属性值构成的三元组。
优选地,所述问题理解模块包括:
参数提取单元:用于从用户输入的自然语言问句中提取参数,并将提取的参数转换成标准格式的参数;及
意图识别单元:根据上述标准格式的参数生成代表用户意图的一个或多个数据结构。
优选地,所述意图识别步骤包括:利用机器学习模型从所述自然语言问句所有的数据结构中筛选出一个最符合用户意图的数据结构。
优选地,所述対答模块包括:
基于知识库的问答单元:用于根据最符合用户意图的数据结构生成查询语句查询知识库,如果查询知识库得到匹配的答案,则将答案反馈给用户;
基于上下文的问答单元:用于如果查询知识库没有得到匹配的答案,但查询得到知识库有与该查询语句相关联的属性,则根据该相关联的属性生成一个三元组查询反问语句,根据该三元组查询反问语句从知识库中查询答案,将答案反馈给用户;及
基于检索的问答单元:用于如果查询知识库没有得到匹配的答案或与该查询语句相关联的属性,则对用户输入的自然语言问句执行分词、去停用词后,通过统计自然语言问句中关键词的词频及其逆向文件频率,得到一个结构化的数据表,之后将该结构化的数据表导入利用问答库训练的贝叶斯分类器,抽取出候选答案,将答案反馈给用户。
另外,本发明还提供了一种智能问答方法,该方法包括以下步骤:
知识库构建步骤:构建问答库及知识库;
问题理解步骤:接收并解析用户输入的自然语言问句,以识别用户意图和相关参数;及
对答步骤:根据用户意图和相关参数查询问答库及知识库,得到符合用户意图的答案,并将答案反馈给用户。
优选地,所述问题理解步骤包括:
参数提取步骤:从用户输入的自然语言问句中提取参数,并将提取的参数转换成标准格式的参数;及
意图识别步骤:根据上述标准格式的参数生成代表用户意图的一个或多个数据结构。
优选地,所述意图识别步骤包括:利用机器学习模型从所述自然语言问句所有的数据结构中筛选出一个最符合用户意图的数据结构。
优选地,所述対答步骤包括:
基于知识库的问答步骤:根据最符合用户意图的数据结构生成查询语句查询知识库,如果查询知识库得到匹配的答案,则将答案反馈给用户;
基于上下文的问答步骤:如果查询知识库没有得到匹配的答案,但查询得到知识库有与该查询语句相关联的属性,则根据该相关联的属性生成一个三元组查询反问语句,根据该三元组查询反问语句从知识库中查询答案,将答案反馈给用户;及
基于检索的问答步骤:如果查询知识库没有得到匹配的答案或与该查询语句相关联的属性,则对用户输入的自然语言问句执行分词、去停用词后,通过统计自然语言问句中关键词的词频及其逆向文件频率,得到一个结构化的数据表,之后将该结构化的数据表导入利用问答库训练的贝叶斯分类器,抽取出候选答案,将答案反馈给用户。
另外,本发明还提供一种电子装置,该电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的智能问答系统,所述智能问答系统被所述处理器执行,可实现如下步骤:
知识库构建步骤:构建问答库及知识库;
问题理解步骤:接收并解析用户输入的自然语言问句,以识别用户意图和相关参数;及
对答步骤:根据用户意图和相关参数查询问答库及知识库,得到符合用户意图的答案,并将答案反馈给用户。
优选地,所述知识库中每个资源描述由多个语句构成,每个语句是由资源、属性类型、属性值构成的三元组。
优选地,所述问题理解步骤包括:
参数提取步骤:从用户输入的自然语言问句中提取参数,并将提取的参数转换成标准格式的参数;及
意图识别步骤:根据上述标准格式的参数生成代表用户意图的一个或多个数据结构。
优选地,所述意图识别步骤包括:利用机器学习模型从所述自然语言问句所有的数据结构中筛选出一个最符合用户意图的数据结构。
优选地,所述対答步骤包括:
基于知识库的问答步骤:根据最符合用户意图的数据结构生成查询语句查询知识库,如果查询知识库得到匹配的答案,则将答案反馈给用户;
基于上下文的问答步骤:如果查询知识库没有得到匹配的答案,但查询得到知识库有与该查询语句相关联的属性,则根据该相关联的属性生成一个三元组查询反问语句,根据该三元组查询反问语句从知识库中查询答案,将答案反馈给用户;及
基于检索的问答步骤:如果查询知识库没有得到匹配的答案或与该查询语句相关联的属性,则对用户输入的自然语言问句执行分词、去停用词后,通过统计自然语言问句中关键词的词频及其逆向文件频率,得到一个结构化的数据表,之后将该结构化的数据表导入利用问答库训练的贝叶斯分类器,抽取出候选答案,将答案反馈给用户。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有智能问答系统,所述智能问答系统被处理器执行,可实现上述智能问答方法中的任一步骤。
本发明提出的智能问答方法、装置及计算机可读存储介质,通过接收并解析用户输入的自然语言问句,从该自然语言问句里识别用户意图并提取参数,根据提取的参数生成代表用户意图的一个或多个数据结构,从该一个或多个数据结构中筛选出一个最符合用户意图的数据结构,再根据最符合用户意图的数据结构生成查询语句查询知识库,以将查询到的结果反馈至客户端,提高了识别用户需求及智能问答系统答复的准确率。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,是本发明智能问答系统10较佳实施例的应用环境图。
在本实施例中,所述智能问答系统10应用于一种电子装置1,所述电子装置1通过网络2连接一个或多个客户端3。
其中,网络2可以为局域网,广域网,城域网等等类型的网络,可以为有线网络,也可以为无线网络。
客户端3可以为桌上型计算机、笔记本、平板电脑、手机,或其它可以通过网络与电子装置进行通信的终端设备。
如图2所示,是本发明电子装置较佳实施例的示意图。
在本实施例中,电子装置1可以是服务器、智能手机、平板电脑、个人电脑、便携计算机以及其他具有运算功能的电子设备。
所述电子装置1包括:存储器11、处理器12及存储在所述存储器11上并可在所述处理器12上运行的智能问答系统10。该电子装置1通过网络2连接一个或多个客户端3,所述电子装置1还可与数据库4通信连接。在本实施例中,数据库4中存有问答库及知识库。
存储器11可以是高速RAM存储器,也可以是稳定的存储器(non-volatilememory),例如磁盘存储器。存储器11可以是该终端的内部存储单元,例如终端的硬盘或者内存,可选的还可以是独立于前述处理器12的存储装置。
存储器11在一些实施例中可以是电子装1的内部存储单元,例如该电子装置1的硬盘或内存。存储器11在另一些实施例中也可以是电子装置1的外部存储器,例如电子装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字卡(SecureDigital,SD),闪存卡(Flash Card)等。进一步地,存储器11还可以既包括电子装置1的内部存储单元也包括外部存储器。存储器11不仅可以用于存储安装于电子装置1的应用软件及各类数据,例如智能问答系统10的代码、问答库及知识库等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行智能问答程序等。
优选地,该电子装置1还可以包括用户接口,包括标准的有线接口、无线接口。可选的用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)、语音输入装置比如麦克风(microphone)等具有语音识别功能的设备、语音输出装置比如音响、耳机等,可选的用户接口还可以包括标准的有线接口、无线接口。
优选地,该电子装置1还可以包括显示器,在一些实施例中可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。显示器用于显示在电子装置1中处理的信息以及可视化的用户界面。
优选地,当电子装置1为移动电子装置,例如手机时,还可以包括至少一种传感器,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板的亮度,接近传感器可在电子装置1移动到耳边时,关闭显示面板和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
图2仅示出了具有组件11-12以及智能问答系统10的电子装置1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
如图3所示,是本发明智能问答系统10较佳实施例的功能模块图。
在本实施例中,所述智能问答系统10包括知识库构建模块110、问题理解模块120及对答模块130。
知识库构建模块110,用于构建问答库及知识库。
优选地,所述问答库由问题及对应的答案组成;所述知识库中每个资源描述由多个语句构成,每个语句是由资源、属性类型、属性值构成的三元组。例如,定义一个资源“人”,人有相关的属性类型,姓名、证件号、家庭地址、联系方式等,这些都是“人”这个资源的属性,家庭地址或者是联系方式中所添加的文本地址信息和手机号码是属性的值。知识库的构建就是用网络或者图的方式构建不同的资源(故知识库也称作图数据库),人,自行车、房子等。然后不同资源之间有关联关系,人可以骑自行车,人居住在房子里面。再例如,定义与贷款相关的资源,并给所有的资源定义相关的属性。对贷款的产品,公司,还款,逾期等做了资源的定义,并对部分资源定义了与之相关联的属性。通过这样的方式定义了贷款场景中所有相关的资源,资源的属性,资源与资源的关系。
问题理解模块120,用于接收并解析用户输入的自然语言问句,以识别用户意图和相关参数。
进一步地,所述问题理解模块120包括参数提取单元121及意图识别单元122。
参数提取单元121,用于从用户输入的自然语言问句中提取参数,并将提取的参数转换成标准格式的参数。例如,参数提取单元121应用一个正则表达式及预设的语法结构,利用该正则表达式从用户输入的自然语言问句所包含的字符串中提取参数,并将提取的参数解析成预设的语法结构输出。正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。例如,用户输入“两天后”,参数提取单元121会将其解析如下。
意图识别单元122,用于根据上述标准格式的参数生成代表用户意图的一个或多个数据结构。例如,对于一个给定的自然语言问句,意图识别单元122生成所有可能的数据结构d(x)。图4展示了两个数据结构d1和d2。d(x)是所有满足字法规则和语法规则的数据结构。字法规则声明了如何将自然语言问句中的字映射为一个符号,例如:“三”映射为“(number 3)”,“乘以”映射为“*”。语法规则声明了如何将符号进行组合,例如,(number3)、*、(number 4)三个相邻的符号可以记为“(call*3 4)”。
对答模块130,用于根据用户意图和相关参数查询问答库及知识库,得到符合用户意图的答案,并将答案反馈给用户。
优选地,所述対答模块130包括基于知识库的问答单元131、基于上下文的问答单元132及基于检索的问答单元133。
基于知识库的问答单元131,用于根据最符合用户意图的数据结构生成查询语句查询知识库,如果查询知识库得到匹配的答案,则将答案反馈给用户。例如,对于基于知识库的问句,用户提问:“保单贷的利率是多少?”生成的数据结构为“(loan.BDDproperty.context.ApplyCondition)”,対答步骤生成的sparql查询语句为“sparqlselect?x where{loan.BDD property.context.ApplyCondition?x}”,基于知识库的问答单元131对知识库进行查询后得到的查询结果为一个日期实体,(number0.06)。
基于上下文的问答单元132,用于如果查询知识库没有得到匹配的答案,但查询得到知识库有与该查询语句相关联的属性,则根据该相关联的属性生成一个三元组查询反问语句,根据该三元组查询反问语句从知识库中查询答案,将答案反馈给用户。例如,用户提问:“申请条件是什么?”这个提问是不明确的,但在知识库中,有“贷款产品”、“额度”、“申请条件”的三元关系,可以查询到与该模糊问题相关联的属性,故基于上下文的问答单元132会反问“你问的是哪款产品?我们有保单贷、房屋贷”,通过这样的反问系统得到一个准确的三元组查询语句,某贷款的申请条件是什么,进而系统返回给用户一个针对具体问题的答案。
基于检索的问答单元133,用于如果查询知识库没有得到匹配的答案或与该查询语句相关联的属性,则对用户输入的自然语言问句执行分词、去停用词后,通过统计自然语言问句中关键词的词频及其逆向文件频率,得到一个结构化的数据表,之后将该结构化的数据表导入利用问答库训练的贝叶斯分类器,抽取出候选答案,将答案反馈给用户。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不容易明白“学”、“生”两个字合起来才表示一个词,那么中文的分词结果是:我/是/一个/学生。在这两句话中,“I,am,我,是”这种使用频繁但实际意义不大的词则为停用词,执行完分词、去停用词后,再执行后续动作并将答案反馈给用户。
如图5所示,是本发明智能问答方法较佳实施例的流程图。
在本实施例中,所述智能问答方法包括:步骤S10、S20及S30。
步骤S10,知识库构建模块110构建问答库及知识库。
优选地,所述问答库由问题及对应的答案组成;所述知识库中每个资源描述由多个语句构成,每个语句是由资源、属性类型、属性值构成的三元组。以申请条件为例:申请条件本身是一个虚拟资源,它有相应的虚拟属性,年龄条件、职业条件、月收入等。申请条件又是和贷款产品资源是关联资源,因为每个贷款产品的申请条件都有所不同。
步骤S20,问题理解模块120接收并解析用户输入的自然语言问句,以识别用户意图和相关参数。
进一步地,如图6所示,所述步骤S20包括:
步骤S21,参数提取单元121从用户输入的自然语言问句中提取参数,并将提取的参数转换成标准格式的参数。例如,参数提取单元121应用一个正则表达式及预设的语法结构,利用该正则表达式从用户输入的自然语言问句所包含的字符串中提取参数,并将提取的参数解析成预设的语法结构输出。
步骤S22,意图识别单元122根据上述标准格式的参数生成代表用户意图的一个或多个数据结构。在本实施例中,所述代表用户意图的一个或多个数据结构为派生的数据结构(例如:树),针对用户输入的每一个自然语言问句,意图识别步骤生成该自然语言问句所有的数据结构,每一个数据结构包括字法规则和语法规则,字法规则声明了如何将自然语言问句中的字映射为一个符号,语法规则声明了如何将符号进行组合。
进一步地,意图识别单元122利用机器学习模型从所述自然语言问句所有的数据结构中筛选出一个最符合用户意图的数据结构。例如,该机器学习模型可以为基于朴素贝叶斯分类模型,朴素贝叶斯分类模型基于大量的自然语言问句与数据结构训练语料的训练得到。例如,用户输入问题:"贷10万XXXX银行个人购车贷款每月要还多少钱"。意图识别步骤得到用户意图为“利息计算”,参数提取步骤提取参数“XXXX银行”、“个人购车贷款”、“月”、“10万”。生成的数据结构可能包括:
数据结构1:(!fb:property.context.LoanAmountRange(argmax(number 1)(number 10)(and(fb:type.loan.loanN fb:loanN.gerengouchedaikuan1)(fb:type.loan.company fb:company.XXXX))(reverse(lambda x(!fb:rank.entity.rank(varx))))))
数据结构2:(!fb:property.context.MonthFeeRate(!fb:property.context.LoanAmountRange fb:company.XXXX))
数据结构3:fb:company.XXXX
数据结构4:(*(!fb:attribute.attribute.MonthFeeRateD(!fb:property.context.MonthFeeRate(and(and(fb:type.loan.loanNfb:loanN.gerengouchedaikuan1)(fb:type.loan.company fb:company.XXXX))(fb:property.context.LoanAmountRange(fb:attribute.attribute.MaxLoanAmountRange(>=(number 100000)))))))(number100000))
该4个数据结构经过朴素贝叶斯分类模型后,从中筛选出一个数据结构作为最能代表用户意图的数据结构。
步骤S30,对答模块130根据用户意图和相关参数查询问答库及知识库,得到符合用户意图的答案,并将答案反馈给用户3。
优选地,如图7所示,所述步骤S30包括:
步骤S31,基于知识库的问答单元131根据最符合用户意图的数据结构生成查询语句查询知识库,如果查询知识库得到匹配的答案,则将答案反馈给用户。例如,对于基于知识库的问句,用户提问:“奥巴马的生日是多少?”生成的数据结构为“(birthplaceObama)”,対答步骤生成的sparql查询语句为“sparql select?x where{Obamabirthplace?x}”。基于知识库的问答单元131对知识库进行查询后得到的查询结果为一个日期实体,(date 1961 08 04)。
步骤S32,如果查询知识库没有得到匹配的答案,但查询得到知识库有与该查询语句相关联的属性,则基于上下文的问答单元132根据该相关联的属性生成一个三元组查询反问语句,根据该三元组查询反问语句从知识库中查询答案,将答案反馈给用户。例如,用户提问:“申请条件是什么?”这个提问是模糊的,但在知识库中,有“贷款产品”、“额度”、“申请条件”的三元关系,可以查询到与该模糊问题相关联的属性,故基于上下文的问答单元132会反问“你问的是哪款产品?我们有保单贷、房屋贷”,通过这样的反问系统得到一个准确的三元组查询语句,某贷款的申请条件是什么,进而系统返回给用户一个针对具体问题的答案。
步骤S33,如果查询知识库没有得到匹配的答案或与该查询语句相关联的属性,则基于检索的问答单元133对用户输入的自然语言问句执行分词、去停用词后,通过统计自然语言问句中关键词的词频及其逆向文件频率,得到一个结构化的数据表,之后将该结构化的数据表导入利用问答库训练的贝叶斯分类器,抽取出候选答案,将答案反馈给用户。例如,英文句子I am a student,用中文则为:“我是一个学生”。计算机可以很简单通过空格知道student是一个单词,但是不容易明白“学”、“生”两个字合起来才表示一个词,那么中文的分词结果是:我/是/一个/学生。在这两句话中,“I,am,我,是”这种使用频繁但实际意义不大的词则为停用词,执行完分词、去停用词后,再执行后续动作并将答案反馈给用户。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有所述智能问答系统10,所述智能问答系统10被处理器执行时,可实现上述智能问答方法。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。