具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一提供的一种语义解析方法的流程示意图,本实施例可适用于语义解析的情况,该方法可以由本发明实施例提供的装置来执行,该装置可采用软件和/或硬件的方式实现,该装置可集成于计算设备中,也可独立作为一个设备。参见图1,具体包括如下步骤:
步骤110,根据语义操作符序列中各语义操作符的解析顺序,对原始自然语言语句进行语义解析,得到语义解析记录序列。
本实施例中,语义是指将语句中某一部分转化后的形式,一般来说,在编写语法时语义以“#”开头,示例性的,“#play”。语义操作符是能够将语句进行抽象的工具,将语句进行语义解析的操作符。指令系统的每一条指令都有一个操作符,它表示该指令应进行什么性质的操作。不同的指令用操作符这个字段的不同编码来表示,每一种编码代表一种指令。组成操作符字段的位数一般取决于计算机指令系统的规模。其中,语义操作符分为以下几类:分别是正则语义操作符,词表语义操作符,序列选择语义操作符,js语义操作符,复杂语义操作符。
多个语义操作符组成语义操作符序列,语义操作符序列中各语义操作符的解析顺序不是固定不变的,能够依据不同的情况设定不同的语义操作符序列。
其中,语义操作符序列中的语义操作符包括如下至少一项:播放语义操作符、用于将中文数字解析成阿拉伯数字的基础数字语义操作符、用于将阿拉伯数字解析成通用数字语义的通用数字语义操作符、用于解析表示集数数字的集数数字语义操作符、用于解析集数和集数数字的集语义操作符、逆序语义操作符、随机语义操作符、正序语义操作符、词表语义操作符、专辑语义操作符和删除语义操作符。其中,词表语义操作符用于将原始自然语言语句中的词表词语解析为该词表词语关联的词表语义;词表语义包括如下至少一项:播放语义、类别语义、随机语义、逆序语义和正序语义;删除语义操作符用于删除语气助词和/或非词表词语的语义。
具体的,播放语义操作符、用于将中文数字解析成阿拉伯数字的基础数字语义操作符、用于将阿拉伯数字解析成通用数字语义的通用数字语义操作符、用于解析表示集数数字的集数数字语义操作符、用于解析集数和集数数字的集语义操作符、逆序语义操作符、随机语义操作符、正序语义操作符、专辑语义操作符和删除语义操作符属于正则语义操作符。
其中,正则语义操作符是利用正则表达式将语句中与正则表达式匹配的部分替换成相应的语义,包括:字符串替换,组替换和函数替换。字符串替换是用字符串替换通过正则表达式匹配的语句部分;组替换是指用字符串替换或函数替换正则表达式中指定的组,示例性的,格式为“组名:替换值;组名:替换值;”,以“:”来表示某一组的替换规则,以“;”来表示不同组的替换规则;函数替换是通过指定函数来处理正则表达式所匹配到的语句部分,并将函数的返回值用来替换匹配语句部分,示例性的,函数替换表示形式为“$函数名”,以“$”开头。具体的,“$ChineseNum2Digit”是指将中文数字转化成阿拉伯数字表示的形式,“$Time2Sec”是指将时间转化成秒表示的形式。
词表语义操作符是检测原始自然语言语句中是否有该词表中的词,如果有词表中的词,则用该词的词表语义替换该词。特别地,如果该词的词表语义为空,则表示将该词删除。在使用词表语义操作符时,任意长度的、未出现在词表中的字符串称为该操作符的未登录词,对于未登录词,若选择关闭替换,则这些词会保持原样,若选择开启替换,则会将这些词换成统一的表达式,特别地,如果开启替换并设置为空,则会将这些词全部删除。
通过语义操作符序列中语义操作符的解析顺序,将原始自然语言语句中的某一部分转换成另一种语义字符串,并用该语义字符串替换原语义字符串,得到新的语句,新的语句所形成的解析过程就是语义解析记录序列,其中,原始自然语言语句是指输入系统需要进行语义解析的原始语言。具体的,语义解析是指通过学习与理解一段文本所表示的语义内容。
步骤120,基于所述语义解析记录序列,采用目标语义序列中目标语义的解析顺序信息,确定目标语义指代的自然语言内容。
本实施例中,多个目标语义组成目标语义序列。其中,目标语义序列中的目标语义包括如下至少一项:专辑语义、集数数字语义、类别语义、正序语义和随机语义。示例性的,专辑语义为“#content”,集数数字语义为“#seqnum”,类别语义为“#category”,正序语义为“#direct”,随机语义为“#random”。
示例性的,原始自然语言语句为“我想听郭德纲相声第一百二十八集”,通过语义操作符的解析,示例性的,通过用于将中文数字解析成阿拉伯数字的基础数字语义操作符、用于将阿拉伯数字解析成通用数字语义的通用数字语义操作符、用于解析表示集数数字的集数数字语义操作符、用于解析集数和集数数字的集语义操作符、播放语义操作符的解析,具体的语义操作符序列如表1所示:
表1语义操作符序列
其中,在原始自然语言语句依据语义操作符进行语义解析的过程中,各语义操作符的解析顺序是可以自行设定的,但是若语义操作符序列中任一语义操作符的解析对象中包括另一语义操作符解析得到的语义,则该语义操作符的解析顺序位于另一语义操作的解析顺序之后。示例性的,如用于解析集数和集数数字的集语义操作符“seq”,当“seq”进行语义解析的对象为“我想听郭德纲相声第#seqnum集”时,由于解析对象中包含“#seqnum”,其中,“#seqnum”是用于解析表示集数数字的集数数字语义操作符,那么用于解析集数和集数数字的集语义操作符“seq”的解析顺序就位于用于解析表示集数数字的集数数字语义操作符“#seqnum”之后。
依据表1将原始自然语言语句“我想听郭德纲相声第一百二十八集”进行语义解析,得到的语义解析记录序列为:
“我想听郭德纲相声第一百二十八集
我想听郭德纲相声第128集,
我想听郭德纲相声第#cnum集,
我想听郭德纲相声第#seqnum集,
我想听郭德纲相声#seq,
我想听郭德纲相声#seq,
我想听郭德纲相声#seq,
#play#Other#category#seq,
#play#Other#category#seq,
#play#content#seq,
#play#content#seq,
#play#content#seq”
再依据上述目标语义序列得到指代的自然语言内容,示例性的,“#content”指代“郭德纲相声”,“#category”指代“相声”,“#seqnum”指代“128”。
本发明实施例提供的技术方案,通过语义操作符序列中各语义操作符的解析顺序,对原始自然语言语句进行语义解析,得到语义解析记录序列,再通过语义解析记录序列,采用目标语义序列中目标语义的解析顺序信息,确定目标语义指代的自然语言内容。通过多种语义操作符的结合,扩展了语义规则的表示能力,以及采用目标语义序列中目标语义的解析顺序信息,确定自然语言内容,解决了当前语义解析方案文法撰写复杂,表达能力有限,泛化和扩展能力弱的问题。
实施例二
图2为本发明实施例二提供的一种语义解析方法的流程示意图,本实施例在上述实施例一的基础上,进一步对基于语义解析记录序列,采用目标语义序列中目标语义的解析顺序信息,确定目标语义指代的自然语言内容进行详细解释说明。参见图2,该方法具体可以包括:
步骤210,根据语义操作符序列中各语义操作符的解析顺序,对原始自然语言语句进行语义解析,得到语义解析记录序列。
步骤220,将所述语义解析记录序列中的尾部语义解析记录与候选合法语义记录进行匹配,确定语义解析是否合法。若语音解析是合法的,则执行步骤230,否则执行步骤240。
上述尾部语义解析记录是指位于语义解析记录序列最后面的语义解析记录,候选合法语义记录为预设的合法序列,用于检验语义解析记录序列中的尾部语义解析记录是否与预设的合法序列相匹配。示例性的,当语义解析记录序列为:
“我想听郭德纲相声第一百二十八集
我想听郭德纲相声第128集,
我想听郭德纲相声第#cnum集,
我想听郭德纲相声第#seqnum集,
我想听郭德纲相声#seq,
我想听郭德纲相声#seq,
我想听郭德纲相声#seq,
#play#Other#category#seq,
#play#Other#category#seq,
#play#content#seq,
#play#content#seq,
#play#content#seq。”
对应上述语义解析记录序列中的尾部语义解析记录为:
“#play#content#seq”
示例性的,合法序列为:“#play#content#seq”,“#play#content”,“#random#content”,“#content#random”,“#random”。判断得出上述语义解析记录序列中的尾部语义解析记录“#play#content#seq”与合法序列“#play#content#seq”相匹配,则执行步骤230。
步骤230,判断语义解析记录序列中是否存在目标语义,若是,则执行步骤250,否则,执行步骤260。
其中,目标语义序列中的目标语义包括如下至少一项:专辑语义、集数数字语义、类别语义、正序语义和随机语义。示例性的,专辑语义为“#content”,集数数字语义为“#seqnum”,类别语义为“#category”,正序语义为“#direct”,随机语义为“#random”。在语义解析记录序列中寻找是否存在上述目标语义,如语义解析序列:
“我想听郭德纲相声第一百二十八集
我想听郭德纲相声第128集,
我想听郭德纲相声第#cnum集,
我想听郭德纲相声第#seqnum集,
我想听郭德纲相声#seq,
我想听郭德纲相声#seq,
我想听郭德纲相声#seq,
#play#Other#category#seq,
#play#Other#category#seq,
#play#content#seq,
#play#content#seq,
#play#content#seq”
中的目标语义有:专辑语义“#content”、类别语义“#category”和集数数字语义“#seqnum”。
步骤240,停止对自然语言内容的确定。
若语义解析记录序列中不存在目标语义,则说明语义解析的过程中出现错误,则停止对自然语言内容的确定。
步骤250,根据目标语义的解析顺序和目标语义所指代自然语言内容的解析顺序,分别从所述语义解析记录序列中获取首次出现所述目标语义的第一语义解析记录和目标语义所指代自然语言内容所属的第二语义解析记录;
依据所述第一语义解析记录和所述第二语义解析记录之间的解析记录确定目标语义指代的自然语言内容。
示例性的,语义解析序列为:
“我想听郭德纲相声第一百二十八集
我想听郭德纲相声第128集,
我想听郭德纲相声第#cnum集,
我想听郭德纲相声第#seqnum集,
我想听郭德纲相声#seq,
我想听郭德纲相声#seq,
我想听郭德纲相声#seq,
#play#Other#category#seq,
#play#Other#category#seq,
#play#content#seq,
#play#content#seq,
#play#content#seq”
当目标语义为集数数字语义“#seqnum”时,则第一语义解析记录为“我想听郭德纲相声第#seqnum集”,则目标语义所指代的自然语言内容所属的第二语义解析记录为“我想听郭德纲相声第#cnum集”,则依据“我想听郭德纲相声第#cnum集”和“我想听郭德纲相声第#seqnum集”之间的逻辑关系以及标注确定目标语义集数数字语义“#seqnum”在上述语义解析序列中所指代的自然语言内容。
步骤260,将目标语义的默认内容作为目标语义指代的自然语言内容。
示例性的,当目标语义序列中出现正序语义“#direct”、随机语义“#random”,则将正序语义“#direct”的默认内容“#order”,以及随机语义“#random”的默认内容“#false”作为目标语义指代的自然语言内容。
示例性的目标语义序列如表2所示:
表2目标语义序列
名字 |
出现步骤 |
返回步骤 |
默认值 |
#content |
9 |
0 |
- |
#seqnum |
3 |
2 |
- |
#category |
7 |
0 |
- |
#direct |
7 |
7 |
#order |
#random |
6 |
6 |
#false |
本发明实施例提供的技术方案,通过对语义解析记录序列中的尾部语义解析记录与候选合法语义记录进行匹配,确定语义解析是否合法以及根据目标语义的解析顺序和目标语义所指代自然语言内容的解析顺序确定自然语言内容,能够解决目前文法规则中存在的泛化能力弱和扩展能力弱的问题。
实施例三
图3为本发明实施例三提供的一种语义解析装置的结构示意图,该装置可执行本发明任意实施例所提供的语义解析方法,具备执行方法相应的功能模块和有益效果。如图3所示,该装置可以包括:
语义解析模块301,用于根据语义操作符序列中各语义操作符的解析顺序,对原始自然语言语句进行语义解析,得到语义解析记录序列;
自然语言内容确定模块302,用于基于所述语义解析记录序列,采用目标语义序列中目标语义的解析顺序信息,确定目标语义指代的自然语言内容。
语义解析模块301,具体用于:
通过如下方式确定所述语义操作符序列中各语义操作符的解析顺序:
若所述语义操作符序列中任一语义操作符的解析对象中包括另一语义操作符解析得到的语义,则该语义操作符的解析顺序位于另一语义操作的解析顺序之后。
其中,所述语义操作符序列中的语义操作符包括如下至少一项:
播放语义操作符、用于将中文数字解析成阿拉伯数字的基础数字语义操作符、用于将阿拉伯数字解析成通用数字语义的通用数字语义操作符、用于解析表示集数数字的集数数字语义操作符、用于解析集数和集数数字的集语义操作符、逆序语义操作符、随机语义操作符、正序语义操作符、词表语义操作符、专辑语义操作符和删除语义操作符;
所述词表语义操作符用于将所述原始自然语言语句中的词表词语解析为该词表词语关联的词表语义;所述词表语义包括如下至少一项:播放语义、类别语义、随机语义、逆序语义和正序语义;
所述删除语义操作符用于删除语气助词和/或非词表词语的语义。
所述装置还包括语义解析合法确定模块,用于:
将所述语义解析记录序列中的尾部语义解析记录与候选合法语义记录进行匹配,确定语义解析是否合法。其中,所述目标语义序列中的目标语义包括如下至少一项:专辑语义、集数数字语义、类别语义、正序语义和随机语义。
自然语言内容确定模块302,具体用于:
根据目标语义的解析顺序和目标语义所指代自然语言内容的解析顺序,分别从所述语义解析记录序列中获取首次出现所述目标语义的第一语义解析记录和目标语义所指代自然语言内容所属的第二语义解析记录;
依据所述第一语义解析记录和所述第二语义解析记录之间的解析记录确定目标语义指代的自然语言内容。
自然语言内容确定模块302,具体还用于:
若所述语义解析记录序列中不存在目标语义,则将目标语义的默认内容作为目标语义指代的自然语言内容。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
实施例四
图4为本发明实施例四提供的一种设备的结构示意图,图4示出了适于用来实现本发明实施例实施方式的示例性设备的结构示意图。图4显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明实施例各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明实施例所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的语义解析方法。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序(或称为计算机可执行指令),该程序被处理器执行时可实现上述任意实施例所述的语义解析方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。