一种信息推荐方法及装置与流程

文档序号:18900266发布日期:2019-10-18 21:50阅读:231来源:国知局
一种信息推荐方法及装置与流程

本申请涉及人工智能领域,尤其涉及一种信息推荐方法及装置。



背景技术:

现有自然语言理解技术,在知识库的配置方案下,分为两种情况创建知识点。第一,单独创建常见问题解答(frequentlyaskedquestions,faq)知识库,创建标准问题、相似问法以及对应答案。但是,如果需要准确解析给出用户明确答案,需要创建更多的相似问法才能保障用户输入的多样化询问(query)可以被精准命中。第二,在意图实体创建知识库方面,意图库和实体库分别的单独独立建立。这种方法仅仅通过意图实体的搭建方案组合生成了更多的faq知识,从效率上有所提升,但是,并没有充分考虑到意图实体搭建知识过程中对于解析方案的价值和推荐策略的价值,无法提升数据解析的准确性以及相关知识点推荐的能力。



技术实现要素:

本申请实施例提供一种信息推荐方法及装置。可以提升数据解析准确率和相关知识点推荐的能力。

第一方面,本申请实施例提供了一种信息推荐方法,包括:获取实体意图表,所述实体意图表包括每个应用领域的多个实体和多个意图;根据所述多个实体中的每个实体以及所述多个意图中的每个意图,创建字典文件和扩展文件,所述字典文件用于表示所述每个意图或所述每个实体的不同表达方式,所述扩展文件用于表示所述每个意图或所述每个意图的其他不同表达方法;根据所述字典文件以及所述扩展文件,创建图谱文件,所述图谱文件包括多个节点以及所述多个节点之间的相互关系;根据所述字典文件、扩展文件以及所述图谱文件进行信息推荐。

其中,所述扩展文件包括运算符,所述运算符包括选择符、可选符、分组符以及语义符中的至少一种,其中,所述选择符表示多条并行路径,所述可选符表示路径可选,所述分组符表示多个单元封装为一个整体单元,所述语义符表示所述每个实体的所有语义值。

其中,所述根据所述字典文件以及所述扩展文件,创建图谱文件包括:

根据所述多个节点中每个节点的属性、所述每个节点的意图、所述每个节点所引用的所述字典文件以及所述扩展文件,创建所述图谱文件中的所述每个节点。

其中,所述每个节点的属性包括动作、实体、属性以及抽象属性中的一种,所述动作表示执行的动作,所述实体表示对应不同服务端接口的变量,所述属性用于描述实体的变量,所述抽象属性表示属性的抽象集合。

其中,所述多个节点之间的相互关系包括动宾关系、描述关系和从属关系中的至少一种。

其中,所述根据所述多个实体中的每个实体以及所述多个意图中的每个意图,创建字典文件和扩展文件之后,还包括:

执行脚本文件对所述扩展文件进行检查。

第二方面,本申请实施例提供了一种信息推荐装置,包括:

获取模块,用于获取实体意图表,所述实体意图表包括每个应用领域的多个实体和多个意图;

处理模块,用于根据所述多个实体中的每个实体以及所述多个意图中的每个意图,创建字典文件和扩展文件,所述字典文件用于表示所述每个意图或所述每个实体的不同表达方式,所述扩展文件用于表示所述每个意图或所述每个意图的其他不同表达方法;

所述处理模块,还用于根据所述字典文件以及所述扩展文件,创建图谱文件,所述图谱文件包括多个节点以及所述多个节点之间的相互关系;

推荐模块,用于根据所述字典文件、扩展文件以及所述图谱文件进行信息推荐。

其中,所述扩展文件包括运算符,所述运算符包括选择符、可选符、分组符以及语义符中的至少一种,其中,所述选择符表示多条并行路径,所述可选符表示路径可选,所述分组符表示多个单元封装为一个整体单元,所述语义符表示所述每个实体的所有语义值。

其中,所述处理模块,还用于根据所述多个节点中每个节点的属性、所述每个节点的意图、所述每个节点所引用的所述字典文件以及所述扩展文件,创建所述图谱文件中的所述每个节点。

其中,所述每个节点的属性包括动作、实体、属性以及抽象属性中的一种,所述动作表示执行的动作,所述实体表示对应不同服务端接口的变量,所述属性用于描述实体的变量,所述抽象属性表示属性的抽象集合。

其中,所述多个节点之间的相互关系包括动宾关系、描述关系和从属关系中的至少一种。

其中,所述处理模块,还用于执行脚本文件对所述扩展文件进行检查。

实施本申请实施例,获取实体意图表,所述实体意图表包括每个应用领域的多个实体和多个意图;根据所述多个实体中的每个实体以及所述多个意图中的每个意图,创建字典文件和扩展文件,所述字典文件用于表示所述每个意图或所述每个实体的不同表达方式,所述扩展文件用于表示所述每个意图或所述每个意图的其他不同表达方法;根据所述字典文件以及所述扩展文件,创建图谱文件,所述图谱文件包括多个节点以及所述多个节点之间的相互关系;根据所述字典文件、扩展文件以及所述图谱文件进行信息推荐。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提出的一种信息推荐方法的流程示意图;

图2是本申请实施例提供的一种闹钟领域的意图实体表;

图3是本申请实施例提供的一种字典文件的示意图;

图4是本申请实施例提供的一种扩展文件的示意图;

图5是本申请实施例提供的一种预置实体的示意图;

图6是本申请实施例提供的一种图谱文件的示意图;

图7是本申请实施例提供的一种取消意图的示意图;

图8是本申请实施例提供的一种信息推荐装置的结构示意图;

图9是本申请实施例提出的一种信息推荐设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

如图1所示,图1是本申请实施例提供的一种信息推荐方法的流程示意图,本申请实施例中的步骤至少包括:

s101,获取实体意图表,所述实体意图表包括每个应用领域的多个实体和多个意图。

其中,应用领域可以表示自然语言表达涉及到的对象,比如音乐领域、闹钟领域、提醒领域等。可以根据应用领域派生结构化数据。意图可以表示完成事情的目的,例如:“设定闹钟”就是一个意图。实体可以表示完成一件事所需要的元素,可以理解为变量,例如设定闹钟,需要“时间”元素。实体包括可穷举实体和不可穷举实体,比如“闹钟”为可穷举实体,表达方式存在“闹钟、闹铃”,“时间”是不可穷举实体。

例如,如图2所示,图2是本申请实施例提供的一种闹钟领域的意图实体表。闹钟领域的意图包括取消闹钟、关闭闹钟、查询闹钟以及设置闹钟。处理完成意图后,接着处理每个意图所需要的实体。闹钟领域的实体包括时间(8点)、最近、所有(所有、一切)、循环日期(周一至周五、每周一)、闹钟以及顺序(第一个、第二个、第三个)。对于“设置闹钟”的意图,可以首先拆分“设置”意图对应的情况包括:第一,设置某个时间点的闹钟,这里用户指定设置闹钟的时间,所以涉及到的实体有“时间”,包括“明天早上8点”、“下午6点”、“6号早上8点”等时间实体。第二,设置闹钟循环。这里用户指定循环的时间,所以涉及到的实体有“循环日期”,包括“周一到周五”“每天”“周末”等循环日期实体。

需要说明的是,一个意图可以应用于多个领域,可以对意图进行进一步的划分。例如“关闭”意图可以应用于闹钟领域,也可以应用于提醒领域,存在关闭闹钟功能,也存在关闭提醒功能,因此命名“关闭”意图时,需要进一步划分为“close_alarm(关闭提醒)”和“close_clock(关闭闹钟)”。

s102,根据所述多个实体中的每个实体以及所述多个意图中的每个意图,创建字典文件和扩展文件,所述字典文件用于表示所述每个意图或所述每个实体的不同表达方式,所述扩展文件用于表示所述每个意图或所述每个意图的其他不同表达方法。

其中,字典文件的格式可以为dic,字典文件为全局通用,意图和实体(可穷举实体)的穷举都可以通过dic文件实现。dic文件名为意图或实体的英文名称。例如,如图3所示,图3是本申请实施例提供的一种字典文件的示意图。“查询”对应的是inquire.dic文件,文件内容顶格写,列举“查询”的不同说法,包括“找”、“查”、“搜”、“搜寻”、“查询”、“看”等等,其中用“|”分隔,表示可选。

对于不可穷举或者穷举起来繁琐的意图或实体,可以创建扩展文件,扩展文件可以采用abnf文法的方式。如图4所示,图4是本申请实施例提供的一种扩展文件的示意图。扩展文件的后缀名为abnf,文件名对应意图名称,第一行为root+文件名,第二部分为文法需要用到的变量,用$符号表示,最后一部分是该意图下的所有文法,用“()”表示每一句陈述,“[]”表示该变量可选,“|”表示内容可选,结尾用“;”结束。

其中,所述扩展文件包括运算符,所述运算符包括选择符、可选符、分组符以及语义符中的至少一种,其中,所述选择符表示多条并行路径,所述可选符表示路径可选,所述分组符表示多个单元封装为一个整体单元,所述语义符表示所述每个实体的所有语义值。

例如,运算符如下:选择符可以表示为‘|’,选择表示匹配用户输入时,经过几条并行路径中的一条路径。不同的选择分支使用英文半角|来分隔。可选符可以表示为‘[’‘]’,可选表示匹配用户输入时,可以经过一条路径也可以不经过此路径,可选部分由英文半角中括号[]来标记,[]之间的部分为可选。分组符可以表示为小括号‘(’‘)’,通过英文半角小括号()可以将若干个文法单元封装界定为一个结构,()以内的部分为一个整体单元,可避免文法在阅读上产生歧义。语义符可以表示为‘{’‘}’,用于实体表示,例如@datetime{param:datetime}表示实体datetime的所有语义值。变量则无需使用语义符号。

对于扩展文件中第二部分自定义的变量。可以引用dic变量。格式为$xx{param:xx},表示对应实体xx,添加param的目的是使算法解析输出实体xx。也可以引用预置实体,预置实体为数据库中原来就存在的实体,不需要另外编写,格式为@xx{param:xx}。如图5所示,图5是本申请实施例提供的一种预置实体的示意图。一般使用到的预置实体只有datetime(时间),引用时可以使用@datetime{param:datetime}表示。

需要说明的是,abnf编写的基本原则:第一,准确,能匹配文法的一定是这个意图。第二,编写一定要在输入法为英文的状态下,括号用英文括号()。第三,[]不能乱用,如果加了[]导致出现的错误组合太多,则不能用可选符号,单独再写一句文法。第四,引号括号要配对。另外,可以按照领域划分分别创建文件夹,并且该文件夹下,字典文件放在一个文件夹,扩展文件放在另一个文件夹。

可选的,可以执行脚本文件对所述扩展文件进行检查。首先,安装git,用gitpull拉取资源后,本地获取远程的脚本文件,使用脚本文件检查,检查过程如下:切换到当前工程目录下,用cd命令。执行脚本:pythoncheck-abnf-new.py--pre[预置实体名文件路径]--dir[abnf文法所在目录]--dic[dict类型实体所在目录]。如在nluresource目录下pythoncheck-abnf-new.py--preprebuild_entity.dic--dirmusic/abnf--dicmusic/dic。

其中,在运行过程中可以提示信息,如果检查扩展文件不存在问题,则输出两行信息,包括:“开始检查文件:%s…%file_path”、和“文件%s检查通过\n%file_path”。如果存在错误,会显示相应的错误提示,例如“请根据提示信息修改”。其中,错误提示可以包括错误类型、错误发生在文件的行号、错误行的原始字符或者具体哪些词语引起的错误等等。检查到扩展文件存在错误时会立即停止检查。最后如果整个文件夹下的abnf文件全部通过检查时输出提示信息:“文件夹%s下的abnf文法文件检查完成!”、或者“共有%d个abnf文法文件。”

s103,根据所述字典文件以及所述扩展文件,创建图谱文件,所述图谱文件包括多个节点以及所述多个节点之间的相互关系。

具体实现中,可以根据所述多个节点中每个节点的属性、所述每个节点的意图、所述每个节点所引用的所述字典文件以及所述扩展文件,创建所述图谱文件中的所述每个节点。其中,所述每个节点的属性包括动作、实体、属性以及抽象属性中的一种,所述动作表示执行的动作,所述实体表示对应不同服务端接口的变量,所述属性用于描述实体的变量,所述抽象属性表示属性的抽象集合。进一步的,所述多个节点之间的相互关系包括动宾关系、描述关系和从属关系中的至少一种。

例如,如图6所示,图6是本申请实施例提供的一种图谱文件的示意图。每个节点就是一个意图或者实体,对应一个字典(dic)文件或者abnf文件。节点和节点之间存在关系,当算法解析到某些节点时,可以确认是什么意图、涉及什么实体、以及需要调取什么接口。例如,算法解析到用户表达中符合“播放”和“每日推荐”两个节点(表达可能有“播放每日推荐”、“给我播放每日推荐”、“播放每日推荐好吗”、“放一下每日推荐”等),服务端则返回“每日推荐”接口。

其中,图谱文件中的各个节点的属性有以下几类:动作(action):用于表示执行的动作,比如“播放”、“暂停”等动作。实体(entity):用于表示能对应服务端不同接口的变量,比如“歌曲”、“专辑”、“每日推荐”等实体。属性(attribute):用于描述实体的变量,比如描述“我的歌单”实体的属性有“喜欢的”、“创建的”、“收藏的”。抽象属性(abstractattribute):属性的抽象集合,比如“中文”“日文”“欧美”等属性可以概括成一个“语言”抽象属性。

其中,节点之间存在的关系有三种:动宾关系(action_of):比如“播放”和“歌曲”之间的关系描述关系(describe):比如“收藏的”描述“我的歌单”。从属关系(sub_of):比如“游戏”这个标签从属于音乐“主题”。

其中,图谱文件(graph.txt)基本规范包括:创建节点时,使用create开头,后加英文(),具体示例如下:create(该节点的中文拼音:该节点对应的属性{title:"该节点的中文名称",intent:"该节点对应的意图",pattern:"该节点引用的dic或abnf文件名"})。例如,创建一个“播放”节点时,格式如下:create(bofang:action{title:"播放",intent:"play",pattern:"play"})。创建关系时,也使用create开头,具体示例如下:create(节点a中文拼音)-[:节点之间关系]->(节点b中文拼音),例如“收藏的”节点和“我的歌单”节点之间存在的描述关系创建:create(shoucangde)-[:describe]->(wodegedan)。

其中,图谱文件中的节点的匹配利用pattern属性标注(引用abnf或者dic)。intent对应意图实体表中的意图,entity对应意图实体表中的实体。如果意图实体表的entity中包含多个取值,则需要增加entityvalue,表示该实体的取值。例如,梳理实体时将“每日推荐”和“私人fm”等合并为一个“musicfunction”实体,在创建节点时则要增加entityvalue表明该实体的具体值:create(meirituijian:entity{title:"每日推荐",entity:"musicfunction",entityvalue:"每日推荐",pattern:"recommenddaily"})。

需要说明的是,图谱文件以gragh.txt命名,与abnf以及dic文件同级存放。所有开发完成后,一同上传到git项目中,文件夹包括意图实体表、abnf文件、dic文件、图谱文件。命令行如下:gitpull:每次操作前都先从远程拉取内容,以达到同步。gitadd–a:将当前所有的修改添加到暂存区。gitaddcommit-m"简要的修改描述":将当前暂存区的修改提交到本地分支。gitpush:将本地分支合并到远程分支。

s104,根据所述字典文件、扩展文件以及所述图谱文件进行信息推荐。

例如,对于匹配闹钟领域用户的输入。首先,闹钟领域用户需要的操作有取消闹钟、关闭闹钟、查询闹钟、设置闹钟,因此确定四个意图cancel_clock、close_clock、inquire_clock、set_clock,根据意图梳理相应的实体,取消闹钟意图下面有取消最近的闹钟,取消所有闹钟,取消第一第二个闹钟,因此实体有recent、all、order(第一个、第二个、第三个)、clock。设置闹钟意图下面有设置某个时间点的闹钟,所以包含实体datetime(具体的时间,如18点、明天下午五点、11月1号等,还包括延时时间如15分钟后)、clock。查询闹钟意图下面有查询近期的闹钟,查询所有的闹钟,所以包含实体recent和all。关闭闹钟意图包含的实体有clock。因此梳理出意图实体表如图2所示。

然后,针对各个意图,创建字典文件和扩展文件。例如,如图7所示,图7是本申请实施例提供的一种取消意图的示意图。取消意图可以列举,创建cancle.dic文件,包括“取消”、“删除”、“删”、“取出”、“去”等。在闹钟领域,“有没有”这个意图和“查询”意图表达的意思相同,但由于“有没有”会涉及不同领域,比如问百科知识时“有没有七里香”,用户希望返回的可能是是七里香的百科,因此“有没有”意图需要单独列出。检查意图和实体结合是否完全覆盖用户的所有问法,由于仅仅通过close.dic和clock.dic的组合没有完全覆盖到用户想关闭闹钟时所有的说法,用户可能会说“别哔哔”、“别响了”,这时就需要用abnf文件来进行补充。创建close_clock.abnf的文件,文件内容如图4所示。

接着,创建完成abnf和dic文件后,创建图谱文件gragh.txt,可以在图谱生成软件neo4j中输入以上代码,生成图谱。

最后,上述文件全部整理完成之后,进行脚本检查,脚本检查通过后,脚本检查命令为:pythoncheck-abnf-new.py--preprebuild_entity.dic--dirclock/abnf--dicclock/dic,检查无误后,先gitpull,再gitadda,gitcommitm“修改描述”,最后gitpush上传到项目分支。

在本申请实施例中,通过创建所述字典文件、扩展文件以及所述图谱文件,可以使得人工智能人机对话在传统faq的编辑方法之上的意图实体编辑知识的方法效率和智能性大大提高。同时在自然理解的准确率方面有所提升,区别于对于场景下的faq搭建,通过扩展的巴科斯范式(augmentedbackus-naurform,abnf)语法扩展搭建,各个应用领域下的知识可以得到非常大的数量扩展。并且在解析过程中,能够通过生成的图谱表进行关联实体和意图的进一步挖掘,对于用户query不明确的情况下,可通过知识图谱进行进一步的用户反问挖掘用户的进一步需求,且挖掘用户需求时更加明确,根据相关联的意图实体节点,即可实现对相关邻近节点的挖掘,助于提升解析准确率,同时在关联知识推荐上下文对话过程中,该种知识表达方式,同样可以通过关联系实体意图的关系进行相关意图和实体的推荐,无论是从本质的解析上还是未来的推荐和知识扩展上都大有增益。

如图8所示,图8是本申请实施例提供的一种信息推荐装置的结构示意图。本申请实施例中的装置包括:

获取模块801,用于获取实体意图表,所述实体意图表包括每个应用领域的多个实体和多个意图。

其中,应用领域可以表示自然语言表达涉及到的对象,比如音乐领域、闹钟领域、提醒领域等。可以根据应用领域派生结构化数据。意图可以表示完成事情的目的,例如:“设定闹钟”就是一个意图。实体可以表示完成一件事所需要的元素,可以理解为变量,例如设定闹钟,需要“时间”元素。实体包括可穷举实体和不可穷举实体,比如“闹钟”为可穷举实体,表达方式存在“闹钟、闹铃”,“时间”是不可穷举实体。

例如,如图2所示,图2是本申请实施例提供的一种闹钟领域的意图实体表。闹钟领域的意图包括取消闹钟、关闭闹钟、查询闹钟以及设置闹钟。处理完成意图后,接着处理每个意图所需要的实体。闹钟领域的实体包括时间(8点)、最近、所有(所有、一切)、循环日期(周一至周五、每周一)、闹钟以及顺序(第一个、第二个、第三个)。对于“设置闹钟”的意图,可以首先拆分“设置”意图对应的情况包括:第一,设置某个时间点的闹钟,这里用户指定设置闹钟的时间,所以涉及到的实体有“时间”,包括“明天早上8点”、“下午6点”、“6号早上8点”等时间实体。第二,设置闹钟循环。这里用户指定循环的时间,所以涉及到的实体有“循环日期”,包括“周一到周五”“每天”“周末”等循环日期实体。

需要说明的是,一个意图可以应用于多个领域,可以对意图进行进一步的划分。例如“关闭”意图可以应用于闹钟领域,也可以应用于提醒领域,存在关闭闹钟功能,也存在关闭提醒功能,因此命名“关闭”意图时,需要进一步划分为“close_alarm(关闭提醒)”和“close_clock(关闭闹钟)”。

处理模块802,用于根据所述多个实体中的每个实体以及所述多个意图中的每个意图,创建字典文件和扩展文件,所述字典文件用于表示所述每个意图或所述每个实体的不同表达方式,所述扩展文件用于表示所述每个意图或所述每个意图的其他不同表达方法。

其中,字典文件的格式可以为dic,字典文件为全局通用,意图和实体(可穷举实体)的穷举都可以通过dic文件实现。dic文件名为意图或实体的英文名称。例如,如图3所示,图3是本申请实施例提供的一种字典文件的示意图。“查询”对应的是inquire.dic文件,文件内容顶格写,列举“查询”的不同说法,包括“找”、“查”、“搜”、“搜寻”、“查询”、“看”等等,其中用“|”分隔,表示可选。

对于不可穷举或者穷举起来繁琐的意图或实体,可以创建扩展文件,扩展文件可以采用abnf文法的方式。如图4所示,图4是本申请实施例提供的一种扩展文件的示意图。扩展文件的后缀名为abnf,文件名对应意图名称,第一行为root+文件名,第二部分为文法需要用到的变量,用$符号表示,最后一部分是该意图下的所有文法,用“()”表示每一句陈述,“[]”表示该变量可选,“|”表示内容可选,结尾用“;”结束。

其中,所述扩展文件包括运算符,所述运算符包括选择符、可选符、分组符以及语义符中的至少一种,其中,所述选择符表示多条并行路径,所述可选符表示路径可选,所述分组符表示多个单元封装为一个整体单元,所述语义符表示所述每个实体的所有语义值。

例如,运算符如下:选择符可以表示为‘|’,选择表示匹配用户输入时,经过几条并行路径中的一条路径。不同的选择分支使用英文半角|来分隔。可选符可以表示为‘[’‘]’,可选表示匹配用户输入时,可以经过一条路径也可以不经过此路径,可选部分由英文半角中括号[]来标记,[]之间的部分为可选。分组符可以表示为小括号‘(’‘)’,通过英文半角小括号()可以将若干个文法单元封装界定为一个结构,()以内的部分为一个整体单元,可避免文法在阅读上产生歧义。语义符可以表示为‘{’‘}’,用于实体表示,例如@datetime{param:datetime}表示实体datetime的所有语义值。变量则无需使用语义符号。

对于扩展文件中第二部分自定义的变量。可以引用dic变量。格式为$xx{param:xx},表示对应实体xx,添加param的目的是使算法解析输出实体xx。也可以引用预置实体,预置实体为数据库中原来就存在的实体,不需要另外编写,格式为@xx{param:xx}。如图5所示,图5是本申请实施例提供的一种预置实体的示意图。一般使用到的预置实体只有datetime(时间),引用时可以使用@datetime{param:datetime}表示。

需要说明的是,abnf编写的基本原则:第一,准确,能匹配文法的一定是这个意图。第二,编写一定要在输入法为英文的状态下,括号用英文括号()。第三,[]不能乱用,如果加了[]导致出现的错误组合太多,则不能用可选符号,单独再写一句文法。第四,引号括号要配对。另外,可以按照领域划分分别创建文件夹,并且该文件夹下,字典文件放在一个文件夹,扩展文件放在另一个文件夹。

可选的,可以执行脚本文件对所述扩展文件进行检查。首先,安装git,用gitpull拉取资源后,本地获取远程的脚本文件,使用脚本文件检查,检查过程如下:切换到当前工程目录下,用cd命令。执行脚本:pythoncheck-abnf-new.py--pre[预置实体名文件路径]--dir[abnf文法所在目录]--dic[dict类型实体所在目录]。如在nluresource目录下pythoncheck-abnf-new.py--preprebuild_entity.dic--dirmusic/abnf--dicmusic/dic。

其中,在运行过程中可以提示信息,如果检查扩展文件不存在问题,则输出两行信息,包括:“开始检查文件:%s…%file_path”、和“文件%s检查通过\n%file_path”。如果存在错误,会显示相应的错误提示,例如“请根据提示信息修改”。其中,错误提示可以包括错误类型、错误发生在文件的行号、错误行的原始字符或者具体哪些词语引起的错误等等。检查到扩展文件存在错误时会立即停止检查。最后如果整个文件夹下的abnf文件全部通过检查时输出提示信息:“文件夹%s下的abnf文法文件检查完成!”、或者“共有%d个abnf文法文件。”

处理模块802,还用于根据所述字典文件以及所述扩展文件,创建图谱文件,所述图谱文件包括多个节点以及所述多个节点之间的相互关系。

具体实现中,可以根据所述多个节点中每个节点的属性、所述每个节点的意图、所述每个节点所引用的所述字典文件以及所述扩展文件,创建所述图谱文件中的所述每个节点。其中,所述每个节点的属性包括动作、实体、属性以及抽象属性中的一种,所述动作表示执行的动作,所述实体表示对应不同服务端接口的变量,所述属性用于描述实体的变量,所述抽象属性表示属性的抽象集合。进一步的,所述多个节点之间的相互关系包括动宾关系、描述关系和从属关系中的至少一种。

例如,如图6所示,图6是本申请实施例提供的一种图谱文件的示意图。每个节点就是一个意图或者实体,对应一个字典(dic)文件或者abnf文件。节点和节点之间存在关系,当算法解析到某些节点时,可以确认是什么意图、涉及什么实体、以及需要调取什么接口。例如,算法解析到用户表达中符合“播放”和“每日推荐”两个节点(表达可能有“播放每日推荐”、“给我播放每日推荐”、“播放每日推荐好吗”、“放一下每日推荐”等),服务端则返回“每日推荐”接口。

其中,图谱文件中的各个节点的属性有以下几类:动作(action):用于表示执行的动作,比如“播放”、“暂停”等动作。实体(entity):用于表示能对应服务端不同接口的变量,比如“歌曲”、“专辑”、“每日推荐”等实体。属性(attribute):用于描述实体的变量,比如描述“我的歌单”实体的属性有“喜欢的”、“创建的”、“收藏的”。抽象属性(abstractattribute):属性的抽象集合,比如“中文”“日文”“欧美”等属性可以概括成一个“语言”抽象属性。

其中,节点之间存在的关系有三种:动宾关系(action_of):比如“播放”和“歌曲”之间的关系描述关系(describe):比如“收藏的”描述“我的歌单”。从属关系(sub_of):比如“游戏”这个标签从属于音乐“主题”。

其中,图谱文件(graph.txt)基本规范包括:创建节点时,使用create开头,后加英文(),具体示例如下:create(该节点的中文拼音:该节点对应的属性{title:"该节点的中文名称",intent:"该节点对应的意图",pattern:"该节点引用的dic或abnf文件名"})。例如,创建一个“播放”节点时,格式如下:create(bofang:action{title:"播放",intent:"play",pattern:"play"})。创建关系时,也使用create开头,具体示例如下:create(节点a中文拼音)-[:节点之间关系]->(节点b中文拼音),例如“收藏的”节点和“我的歌单”节点之间存在的描述关系创建:create(shoucangde)-[:describe]->(wodegedan)。

其中,图谱文件中的节点的匹配利用pattern属性标注(引用abnf或者dic)。intent对应意图实体表中的意图,entity对应意图实体表中的实体。若意图实体表的entity中包含多个取值,则需要增加entityvalue,表示该实体的取值。例如,梳理实体时将“每日推荐”和“私人fm”等合并为一个“musicfunction”实体,在创建节点时则要增加entityvalue表明该实体的具体值:create(meirituijian:entity{title:"每日推荐",entity:"musicfunction",entityvalue:"每日推荐",pattern:"recommenddaily"})。

需要说明的是,图谱文件以gragh.txt命名,与abnf以及dic文件同级存放。所有开发完成后,一同上传到git项目中,文件夹包括意图实体表、abnf文件、dic文件、图谱文件。命令行如下:gitpull:每次操作前都先从远程拉取内容,以达到同步。gitadd–a:将当前所有的修改添加到暂存区。gitaddcommit-m"简要的修改描述":将当前暂存区的修改提交到本地分支。gitpush:将本地分支合并到远程分支。

推荐模块803,用于根据所述字典文件、扩展文件以及所述图谱文件进行信息推荐。

例如,对于匹配闹钟领域用户的输入。首先,闹钟领域用户需要的操作有取消闹钟、关闭闹钟、查询闹钟、设置闹钟,因此确定四个意图cancel_clock、close_clock、inquire_clock、set_clock,根据意图梳理相应的实体,取消闹钟意图下面有取消最近的闹钟,取消所有闹钟,取消第一第二个闹钟,因此实体有recent、all、order(第一个、第二个、第三个)、clock。设置闹钟意图下面有设置某个时间点的闹钟,所以包含实体datetime(具体的时间,如18点、明天下午五点、11月1号等,还包括延时时间如15分钟后)、clock。查询闹钟意图下面有查询近期的闹钟,查询所有的闹钟,所以包含实体recent和all。关闭闹钟意图包含的实体有clock。因此梳理出意图实体表如图2所示。

然后,针对各个意图,创建字典文件和扩展文件。例如,如图7所示,图7是本申请实施例提供的一种取消意图的示意图。取消意图可以列举,创建cancle.dic文件,包括“取消”、“删除”、“删”、“取出”、“去”等。在闹钟领域,“有没有”这个意图和“查询”意图表达的意思相同,但由于“有没有”会涉及不同领域,比如问百科知识时“有没有七里香”,用户希望返回的可能是是七里香的百科,因此“有没有”意图需要单独列出。检查意图和实体结合是否完全覆盖用户的所有问法,由于仅仅通过close.dic和clock.dic的组合没有完全覆盖到用户想关闭闹钟时所有的说法,用户可能会说“别哔哔”、“别响了”,这时就需要用abnf文件来进行补充。创建close_clock.abnf的文件,文件内容如图4所示。

接着,创建完成abnf和dic文件后,创建图谱文件gragh.txt,可以在图谱生成软件neo4j中输入以上代码,生成图谱。

最后,上述文件全部整理完成之后,进行脚本检查,脚本检查通过后,脚本检查命令为:pythoncheck-abnf-new.py--preprebuild_entity.dic--dirclock/abnf--dicclock/dic,检查无误后,先gitpull,再gitadda,gitcommitm“修改描述”,最后gitpush上传到项目分支。

在本申请实施例中,通过创建所述字典文件、扩展文件以及所述图谱文件,可以使得人工智能人机对话在传统faq的编辑方法之上的意图实体编辑知识的方法效率和智能性大大提高。同时在自然理解的准确率方面有所提升,区别于对于场景下的faq搭建,通过扩展的巴科斯范式(augmentedbackus-naurform,abnf)语法扩展搭建,各个应用领域下的知识可以得到非常大的数量扩展。并且在解析过程中,能够通过生成的图谱表进行关联实体和意图的进一步挖掘,对于用户query不明确的情况下,可通过知识图谱进行进一步的用户反问挖掘用户的进一步需求,且挖掘用户需求时更加明确,根据相关联的意图实体节点,即可实现对相关邻近节点的挖掘,助于提升解析准确率,同时在关联知识推荐上下文对话过程中,该种知识表达方式,同样可以通过关联系实体意图的关系进行相关意图和实体的推荐,无论是从本质的解析上还是未来的推荐和知识扩展上都大有增益。

请继续参考图9,图9是本申请实施例提出的一种信息推荐设备的结构示意图。如图9所示,该信息推荐设备可以包括:至少一个处理器901,至少一个通信接口902,至少一个存储器903和至少一个通信总线904。

其中,处理器901可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。通信总线904可以是外设部件互连标准pci总线或扩展工业标准结构eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信总线904用于实现这些组件之间的连接通信。其中,本申请实施例中设备的通信接口902用于与其他节点设备进行信令或数据的通信。存储器903可以包括易失性存储器,例如非挥发性动态随机存取内存(nonvolatilerandomaccessmemory,nvram)、相变化随机存取内存(phasechangeram,pram)、磁阻式随机存取内存(magetoresistiveram,mram)等,还可以包括非易失性存储器,例如至少一个磁盘存储器件、电子可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、闪存器件,例如反或闪存(norflashmemory)或是反及闪存(nandflashmemory)、半导体器件,例如固态硬盘(solidstatedisk,ssd)等。存储器903可选的还可以是至少一个位于远离前述处理器901的存储装置。存储器903中可选的还可以存储一组程序代码,且处理器901可选的还可以执行存储器903中所执行的程序。

获取实体意图表,所述实体意图表包括每个应用领域的多个实体和多个意图;

根据所述多个实体中的每个实体以及所述多个意图中的每个意图,创建字典文件和扩展文件,所述字典文件用于表示所述每个意图或所述每个实体的不同表达方式,所述扩展文件用于表示所述每个意图或所述每个意图的其他不同表达方法;

根据所述字典文件以及所述扩展文件,创建图谱文件,所述图谱文件包括多个节点以及所述多个节点之间的相互关系;

根据所述字典文件、扩展文件以及所述图谱文件进行信息推荐。

其中,所述扩展文件包括运算符,所述运算符包括选择符、可选符、分组符以及语义符中的至少一种,其中,所述选择符表示多条并行路径,所述可选符表示路径可选,所述分组符表示多个单元封装为一个整体单元,所述语义符表示所述每个实体的所有语义值。

可选的,处理器901还用于执行如下操作:

根据所述多个节点中每个节点的属性、所述每个节点的意图、所述每个节点所引用的所述字典文件以及所述扩展文件,创建所述图谱文件中的所述每个节点。

其中,所述每个节点的属性包括动作、实体、属性以及抽象属性中的一种,所述动作表示执行的动作,所述实体表示对应不同服务端接口的变量,所述属性用于描述实体的变量,所述抽象属性表示属性的抽象集合。

其中,所述多个节点之间的相互关系包括动宾关系、描述关系和从属关系中的至少一种。

可选的,处理器901还用于执行如下操作:

执行脚本文件对所述扩展文件进行检查。

进一步的,处理器还可以与存储器和通信接口相配合,执行上述申请实施例中信息推荐设备的操作。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1