发明内容
有鉴于此,本发明实施例提供了一种自然语言的语义解析方法及装置,目的在于解决现有的自然语言的语义解析方法不能准确解析用户的自然语言的问题。
为了实现上述目的,本发明实施例提供了以下技术方案:
一种自然语言的语义解析方法,包括:
判断接收到的自然语言是否为预设类型的自然语言,所述预设类型的自然语言为在预设的数据库中对应至少两种语义的自然语言;
如果所述接收到的自然语言为预设类型的自然语言,则依据历史解析结果,从所述预设的数据库中解析出所述自然语言的语义。
优选地,所述预设的数据库采用树状分类网络实现,所述树状分类网络具有至少一个根节点,每个根节点具有至少一级分支,每一级分支包括至少一个子节点,其中,每个节点与其指示的类型一一对应。
优选地,所述依据历史解析结果,从预设的数据库中解析出所述自然语言的语义包括:
从预设的数据库中获取所述自然语言对应的至少两个语义;
按照与历史解析结果在预设的数据库中对应的类型的相关程度,对所述至少两个语义进行排序;
将排序结果确定为所述自然语言的解析结果。
优选地,所述依据历史解析结果,从预设的数据库中解析出所述自然语言的语义包括:
依据历史解析结果在预设的数据库中的对应的类型,确定所述自然语言在预设的数据库中对应的类型;
依据所述自然语言在预设的数据库中对应的类型解析所述自然语言对应的语义。
优选地,所述判断接收到的自然语言是否为预设类型的自然语言包括:
依据预设的正则表达式,确定接收到的自然语言在预设的数据库中对应的根节点,所述预设的正则表达式与所述至少一个根节点一一对应;
如果所述接收到的自然语言对应的根节点下至少存在两个子节点,则确定所述自然语言为预设类型的自然语言。
优选地,所述方法还包括:
将当前解析结果及其在所述预设的数据库中对应的类型作为历史解析结果对应存储。
一种自然语言的语义解析装置,包括:
判断模块,用于判断接收到的自然语言是否为预设类型的自然语言,所述预设类型的自然语言为在预设的数据库中对应至少两种语义的自然语言;
解析模块,用于如果接收到的自然语言为预设类型的自然语言,则依据历史解析结果,从预设的数据库中解析出所述自然语言的语义。
优选地,所述解析模块包括:
第一语义解析单元,用于从预设的数据库中获取所述自然语言对应的至少两个语义;
排序单元,用于按照与历史解析结果在预设的数据库中对应的类型的相关程度,对所述至少两个语义进行排序;
确定单元,用于将排序结果确定为所述自然语言的解析结果。
优选地,所述解析模块包括:
类型确定单元,用于依据历史解析结果在预设的数据库中的对应的类型,确定所述自然语言在预设的数据库中对应的类型;
第二语义解析单元,用于依据所述自然语言在预设的数据库中对应的类型解析所述自然语言对应的语义。
优选地,所述判断模块包括:
匹配单元,用于依据预设的正则表达式,确定接收到的自然语言在预设的数据库中对应的根节点,所述预设的正则表达式与所述至少一个根节点一一对应;
判断单元,用于如果所述接收到的自然语言对应的根节点下至少存在两个子节点,则确定所述自然语言为预设类型的自然语言。
优选地,所述装置还包括:
存储模块,用于将当前解析结果及其在所述预设的数据库中对应的类型作为历史解析结果对应存储。
本发明实施例提供的一种自然语言的语义解析方法及装置,当接收到的自然语言在预设的数据库中对应至少两种语义时,依据历史解析结果,确定出所述自然语言的语义,也就是说,将历史解析结果作为参考,解析当前自然语言的语义。通常,用户的使用习惯具有延续性,所以,历史解析结果能够反映用户本次操作的意图,因此,在自然语言对应的语义不唯一时,本实施例所述的自然语言的语义解析方法及装置能够通过推断用户的意图,而非仅仅依赖预设的数据库确定解析结果,因此,能够提高对自然语言解析的准确性。
具体实施方式
本发明实施例公开了一种自然语言的语义解析方法及装置,其核心发明点在于,当接收到的自然语言的在预设的数据库中对应至少两种语义时,依据历史解析结果,确定所述自然语言的语义,其目的在于使得解析出的语义更加贴近用户的意图。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开的一种自然语言的语义解析方法,如图1所示,包括:
S101:接收用户输入的自然语言;
本实施例中,所述自然语言即用户习惯使用的语言,接收到的自然语言的形式可以为文本,所述文本由接收到的用户输入的语音转换得到。
S102:判断所述自然语言是否为预设类型的自然语言,如果是,执行S103,如果否,结束;
所述预设类型的自然语言为在预设的数据库中,对应至少两种语义的自然语言。
例如,在预设的数据库中“苹果”既对应水果中的苹果,也对应苹果电脑。
S103:从所述预设的数据库中获取所述自然语言对应的至少两个语义;
S104:按照与历史解析结果在预设的数据库中对应的类型的相关程度,对所述至少两个语义进行排序;
S105:将排序结果确定为所述自然语言的解析结果。
通常,自然语言解析领域中的数据库中包括若干类型,在进行自然语言解析时,先确定自然语言对应的类型,再根据自然语言的内容确定在此类型中的语义,例如,“苹果”对应类型“水果”,则解析出的语义为“水果中的苹果”。
本实施例中,按照与历史结果在预设的数据库中对应的类型的相关程度对语义进行排序,具体地,可以按照高相关性到低相关性的顺序排序,即,将最接近历史结果的类型的语义排在最前面。
例如,对于自然语言“苹果”,在预设的数据库中,既对应类型“水果”,可以解析出语义“水果中的苹果”,也对应类型“电子设备”,可以解析出语义“苹果电脑”,还对应“机构”,可以解析出语义“苹果公司”,如果历史解析结果中存在语义“香蕉”,则其在预设的数据库中对应的类型为“水果”,那么在本次对“苹果”的解析中,将“水果中的苹果”排在解析结果的首位。
需要说明的是,在排序时,可以以历史解析结果中出现次数最多的类型为依据,也可以以类型出现的先后顺序为依据,还可以依据其它方式,这里不做限定。
例如,在历史解析结果中,类型“电子设备”出现的次数最多,则将“苹果电脑”排在首位。
又例如,如果在上一次历史解析结果中存在“香蕉”,在更早的历史解析结果中存在“手机”,其对应类型“电子设备”,则将“水果中的苹果”排在解析结果的首位,将“苹果电脑”排在第二位,将“苹果公司”排在末位。
可见,本实施例所述的自然语言的语义解析方法,依据历史解析结果,将自然语言的至少两个语义进行排序,实现依据历史结果推断用户的习惯及本次意图,从而使得解析出的语义更为贴近用户的需求。也就是说,本实施例所述的方法,不仅仅将预设的数据库作为解析依据,还将历史解析结果作为本次解析的限制条件,所以,得到的结果更为准确。
并且,本实施例所述的方法与现有技术相比,给出多个解析结果,进一步地,可以将所述多个解析结果呈现给用户,用户可以从中选择最接近自己意图的结果。
本发明实施例公开的又一种自然语言的语义解析方法,如图2所示,包括:
S201:接收用户输入的自然语言;
S202:判断所述自然语言是否为预设类型的自然语言,如果是,执行S203,如果否,结束;
所述预设类型的自然语言为在预设的数据库中对应至少两种语义的自然语言。
S203:依据历史解析结果在预设的数据库中的对应的类型,确定所述自然语言在预设的数据库中对应的语义类型;
本实施例中,与上一实施例相似,可以将历史解析结果中出现次数较多的类型确定为本次自然语言对应的类型,也可以将距离本次解析最近的上一次解析结果对应的类型确定为本次解析中自然语言的类型,还可以依据其它规则确定本次解析的类型,这里不做限定。
例如,自然语言“苹果”,可以对应类型“水果”,同时还对应类型“电子设备”,查询历史解析结果对应的类型,如果类型“电子设备”的出现的次数大于类型“水果”出现的次数,则将本次解析的类型确定为“电子设备”。
需要说明的是,上一实施例及本实施例中的历史解析结果可以为本地存储的历史解析结果,也可以为云端存储的历史解析结果,当本地的历史解析结果为空时,可以查询云端存储的数据。
在本实施例所述的方法实施之前,也可以预先设置历史解析结果,使得其不为空。
S204:依据所述自然语言在预设的数据库中对应的类型解析所述自然语言对应的语义。
具体地,确定自然语言在预设的数据库中对应的类型后,以自然语言的内容确定在此类型中的语义。
如上,将“苹果”的类型确定为“电子设备”后,可以解析出“苹果”的语义为“苹果电脑”或“苹果手机”等以“苹果”为品牌的电子设备。
需要说明的是,本实施例中,当自然语言在预设的数据库中对应两个以上类型时,可以确定一个类型,也可以确定两个或多个类型,这里不做限定。
当将自然语言进行解析后,可以将解析结果呈现给用户。当呈现一个解析结果时,与现有技术相比,其结果更为贴近用户的习惯,当呈现两个或多个解析结果时,可以依据用户的选择,确定一个结果作为最终的解析结果。
本实施例所述的方法,先确定自然语言对应的类型,再确定语义,而不需要解析出自然语言的全部语义,对于自然语言对应但没有包括在解析范围内的类型,可以不进行解析,例如,在历史解析结果中对应的类型中,未出现“水果”,那么只针对“电子设备”进行自然语言的解析,而不进行在“水果”这一类型下的解析,可见,本实施例所述的方法能够减少资源的消耗。
本发明实施例公开的又一种自然语言的语义解析方法,如图3所示,包括:
S301:依据预设的正则表达式,确定接收到的自然语言在预设的数据库中对应的根节点;
本实施例中,预设的数据库可以具体采用树状分类网络,所述树状分类网络具有至少一个根节点,每个根节点具有至少一级分支,每一级分支包括至少一个子节点,其中,每个节点与其指示的类型一一对应。
其中,可以使用正则表达式表示每个根节点,则正则表达式与根节点一一对应,正则表达式与每个根节点指示的类型也一一对应。
如图4所示,树状网络中的一个根节点指示“城市名称”类型,可以使用正则表达式“^%CITY%$”表示,其中“^”是正则表达式的句首匹配符号,“$”是正则表达式的句尾匹配符号,“%CITY%”是类别标签,表示城市名称。如果自然语言为“北京市”,就能和正则表达式匹配;“从北京到上海”就可以和正则表达式“^从%CITY%到%CITY%$”匹配。此根节点下具有一级分支,包括“天气”、“地图”等子节点。
S302:如果所述接收到的自然语言对应的根节点下至少存在两个子节点,则确定所述自然语言为预设类型的自然语言;
例如自然语言“北京”,按照图4所示的数据库,“北京”属于预设类型的自然语言。
S303:如果所述自然语言为预设类型的自然语言,从预设的数据库中获取所述自然语言对应的至少两个语义;
在使用上述数据库进行自然语言的解析时,可以先确定自然语言对应的根节点,再确定下一级子节点,最终由根节点及子节点共同指示自然语言的类型,再依据自然语言的内容,确定在此类型下的语义。
例如,接收到用户的自然语言“北京”,在图4中,此自然语言对应的根节点为“城市名称”,即其类型为城市名称,在此根节点下,包括至少两个子节点,即“天气”、“地图”等类型,因此,在“天气”类型下,此自然语言的语义为“北京的天气”,在“地图”类型下,此自然语言的语义为“北京的地图”。
S304:按照与历史解析结果在预设的数据库中对应的类型的相关程度,对所述至少两个语义进行排序;
S305:将排序结果确定为所述自然语言的解析结果。
此步骤的具体过程与图1所示的实施例相同,例如,如果历史解析结果中“天气”类型相比于“地图”类型出现的次数较多,则将语义“北京的天气”排在“北京的地图”之前。
本实施例所述的自然语言的语义解析方法,预设的数据库中具有树状结构,并且使用正则表达式表示每个根节点对应的类型,从而有利于自然语言的分类,在所述树状结构及历史解析数据的限定下,确定出的语义能够更准确地反应用户的意图。
本发明实施例公开的又一种自然语言的语义解析方法,如图5所示,包括:
S501:接收用户输入的自然语言;
S502:判断所述自然语言在预设的数据库中是否对应至少两种语义,如果是,执行S503,如果否,则结束;
所述预设的数据库采用树状分类网络,所述树状分类网络具有至少一个根节点,每个根节点具有至少一级分支,每一级分支包括至少一个子节点,其中,每个节点与其指示的类型一一对应。
S503:依据历史解析结果在预设的数据库中的对应的类型,确定所述自然语言在预设的数据库中对应的类型;
具体地,依据所述预设的数据库,确定所述自然语言的根节点,查询历史解析结果中根节点与自然语言数据的根节点相同的解析结果,依据所述解析结果的子节点,确定所述自然语言的子节点,即可确定自然语言对应的类型。
例如,在图4中所示的数据库中,对于自然语言“北京”,确定其根节点为“城市名称”,查询历史解析结果,在历史解析结果中“上海的天气”这一语义与“北京”具有相同的根节点,“上海的天气”的子节点的类型为“天气”,则确定“北京”的子节点为指示“天气”的子节点。也就是说,在“城市名称”的下一级子节点指示的类型“天气”、“地图”中,选择“天气”类型。
S504:依据所述自然语言在预设的数据库中对应的语义类型解析所述自然语言对应的语义;
上例中,“北京”对应的类型为“城市名称”--“天气”,则解析出的语义为“北京的天气”。
S505:将当前解析结果及其在所述预设的数据库中对应的语义类型作为历史解析结果对应存储。
对历史解析结果的存储,有利于为后续的自然语言的解析提供更多的参考依据,因此,对自然语言的解析过程会随着用户的使用而越来越“了解”用户的使用习惯,从而提供越发准确的解析结果。
本实施例所述的方法中,先确定类型再进行解析的优点在于,仅在相关类型下解析,而不考虑无关领域,因而能够减少程序的运行负担。
与上述方法实施例相对应地,本发明实施例还提供了一种自然语言的语义解析装置,包括:
判断模块,用于判断接收到的自然语言是否为预设类型的自然语言,所述预设类型的自然语言为在预设的数据库中对应至少两种语义的自然语言;
解析模块,用于如果接收到的自然语言为预设类型的自然语言,则依据历史解析结果,从预设的数据库中解析出所述自然语言的语义。
具体地,如图6所示,所述自然语言的语义解析装置的一种具体实现结构可以包括:
匹配单元,601,用于依据预设的正则表达式,确定接收到的自然语言在预设的数据库中对应的根节点;
其中,所述预设的正则表达式与所述至少一个根节点一一对应。本实施例中,所述数据库与上述实施例相同。
判断单元602,用于如果所述接收到的自然语言对应的根节点下至少存在两个子节点,则确定所述自然语言为预设类型的自然语言,所述预设类型的自然语言为在预设的数据库中对应至少两种语义的自然语言。
第一语义解析单元603,用于从预设的数据库中解析出所述自然语言数据对应的至少两个语义;
排序单元604,用于按照与历史解析结果在预设的数据库中对应的类型的相关程度,对所述至少两个语义进行排序;
确定单元605,用于将排序结果确定为所述自然语言的解析结果;
存储模块606,用于将当前解析结果及其在所述预设的数据库中对应的类型作为历史解析结果对应存储。
或者,如图7所示,所述装置另一种具体形式包括:
匹配单元701,用于依据预设的正则表达式,确定接收到的自然语言在预设的数据库中对应的根节点;
所述预设的正则表达式与所述至少一个根节点一一对应。
判断单元702,用于如果所述接收到的自然语言对应的根节点下至少存在两个子节点,则确定所述自然语言为预设类型的自然语言。
类型确定单元703,用于依据历史解析结果在预设的数据库中的对应的类型,确定所述自然语言在预设的数据库中对应的类型;
第二语义解析单元704,用于依据所述自然语言在预设的数据库中对应的类型解析所述自然语言对应的语义;
存储模块705,用于将当前解析结果及其在所述预设的数据库中对应的类型作为历史解析结果对应存储。
本实施例所述的自然语言的语义解析装置及其具体实现方式进行自然语言解析的方法如上述方法实施例所述,这里不再赘述。
本实施例所述的自然语言的语义解析装置,与现有技术相比,能够在预设的数据库的基础上,将历时解析结果作为限定条件之一,使得解析得到的语义能遵循用户的使用习惯,也就是说,本实施例所述的自然语言的语义解析装置“懂得”用户的真实意图,从而给出用户希望的结果。
本实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本发明实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。