一种时间解析方法与流程

文档序号:16134787发布日期:2018-12-01 00:48阅读:151来源:国知局

本发明涉及计算机技术领域,尤其涉及一种时间解析方法。

背景技术

现在随着移动终端的普及和语音识别、语音合成技术日益成熟,越来越多的移动应用可以通过语音人机对话进行操控,在用户语音输入中,会包含大量与时间相关的信息,如何正确的提取与解析时间信息将直接影响语音对话系统的效果。

在中文里,时间相关的表达方式十分丰富,除了单个时间词语的表达,还有各种时态的表达。在移动应用的多轮对话系统中,还存在大量的上下文的关联、口语化的非规范格式时间,多种语言表达方式上并不一定遵循确定的规律,导致对时间的识别提取以及解析的难度进一步增加。传统的时间解析,大都是针对独立的时间词汇,通过在日历中进行年、月、日的转换和时、分解析。例如,用户提问:“我想要下周礼拜五的机票”,假定没有合适的机票选择,下文中用户再次提问:“那礼拜六的呢”。在传统的时间解析中,对于用户的第一次提问,一般都能根据当前时间得到“下周礼拜五”的正确解析,但是对于用户第二次提问中的“礼拜六”,却只能解析成相对当前时间的礼拜六的日期。根据对话内容,这明显是不正确的。除此类问题之外,还有大量的复杂的时间类型,例如时间段的判断:“元旦1号到4号”,“下个月9号之后”;时间的组合与省略:“大后天的晚上9点”,“10号去日本,下午5点出发”,“元月1号去北京,3号回”等。

因此,如何准确解析多轮语音对话中的时间,成为了本技术领域需要解决技术问题之一。



技术实现要素:

为了克服现有技术的不足,本发明所解决的技术问题是提供一种能解析多轮语音对话中时间的时间解析方法;进一步地,本发明还能解决提高时间解析的解析效率;更进一步地,本发明还能解决提高时间解析的解析准确率。

为解决上述技术问题,本发明所采用的技术方案内容具体如下:

一种时间解析方法,所述方法包括以下步骤:

s1:构建时间表达集并存储于系统中;

s2:获取语音信息,将所述语音信息转换成文本数据;对所述文本数据进行预处理的前或后提取所述文本数据中的第一时间特征;提取所述文本数据中的介词特征和代词特征;

s3:对上述所得的代词特征进行指代消解;根据所述指代消解的结果与第一时间特征恢复所述代词特征对应的第二时间特征;

s4:根据所得时间特征进行解析处理。

为实现解析多轮语音对话中时间的技术目的,发明人在本技术方案中在对语音信息完成预处理形成第一时间特征、介词特征和代词特征的基础之上,加入了对代词特征的指代消解步骤,从而达到了结合上下文理解时间信息,实现对上下文时间信息的综合解析,解决了多轮对话对时间信息难以识别解析的技术问题。指代消解是自然语言处理的一个重要分支,其解决的主要问题是找出出现在文本中的指代现象。

需要说明的是,所述第一时间特征指的是时间短语中的时间信息,如“明天”“5月4日”“下周一”等;介词特征指的是“之前”“之后”等介词信息;“代词特征”指的是“那天”“这”等代词信息;第二时间特征指的是经指代消解步骤后代词所被替换形成的时间信息。

另外,由于后续需要语音信息内的时间信息进行解析,因此为提高后续提取第一时间特征的速度和效率,发明人在获取语音信息前还加入了构建时间表达集的步骤,通过利用时间表达集,匹配语音信息中的时间短语从而形成第一时间特征,相较于直接获取第一时间特征而言,借助预先设置好的时间表达集,能更迅速地形成时间表达的第一时间特征,无需重新进行学习获取,能充分提高显著提高语音对话系统中对时间的识别和解析的效率;另外,由于预先设置的时间表达集具有统一性,后续获取的第一时间特征在表达形式上也更加统一,这样更加提高后续时间解析的准确性。

需要说明的是,s4为根据所得时间特征进行解析处理。即将上述所得的所有时间特征,包括第一时间特征和第二时间特征进行结构化处理,并得出相关时间顺序,根据这些处理结果定位用户需求。具体来说,时间解析包括但不限于以下步骤:将时间特征进行时间点和时间段的分离;将时间特征进行绝对时间和相对时间的分类;将时间特征进行结构化;将所处理的时间特征信息进行顺序组合与后续处理。

所述s2中的预处理包括但不限于分词和阿拉伯与中文数字转换。

优选地,所述s1中所述时间表达集的构建方法是对时间表达词建立trie树。

更优选地,所述trie树的建立方法包括以下步骤:

s11:读取时间表达词的词条首字,作为一颗子树的头节点插入首字哈希表,继续状态;

s12:读取时间表达词的下个字符,若所述子树中没有该字符,则插入该字符,继续状态;若父节点是终结状态,修改父节点成延伸状态;

s13:重复步骤s12,直至时间表达词的最后一个字符;

s14:如果最后一个节点是新插入的节点,状态为终结状态,否则状态为延伸状态;

s15:重复步骤s11,直至所有的时间表达词的词条插入完。

需要说明的是,使用trie树(字典树)的高效存储和检索方法对语句中的时间表达进行提取,结合特有的指代消解方法对时间进行解析,能显著提高语音对话系统中对时间的识别和解析的效率和准确性。

传统的时间表达式的识别提取一般是通过正则表达式的方式进行识别,用于检查一个字符串是否含有某种子串,或者从某个字符串中提取符合某个条件的子串。对字符串进行时间识别时,需要对所有的正则规则进行遍历,直到匹配到固定的模式,该方式效率低下,时间复杂度为o(n*len(ni)),n为规则库中的规则总数,len(ni)为每一个规则序列的长度。

而在本技术方案中应用了trie树协助匹配判断,能有效减少无谓的遍历和匹配,提高匹配的速度和效率。trie树又叫字典树,本质上是一个多叉树,每一个节点就是一个多叉的结构,广泛用于搜索引擎中,它的优点是最大限度地减少无谓的字符串比较。在本方案中,首先预先完成对trie树的构建,形成相对完整的时间表达规则,由于其独特的树状结构,所形成的规则需要占用的字符串数量相对较少,只需要通过有限的节点分布即可表达更多的字符串规则,一方面能提高匹配效率,另一方面也能有效减少系统占用内存,提高系统的运行效率。

更优选地,利用所述时间表达集提取所述时间短语中的第一时间特征的方法是利用正向最大匹配算法进行匹配提取;具体方法包括:

s21:从第一时间特征的目标串s读取字符ci;从首字哈希表查找ci,形成当前节点;

s22:从s读取下一个字符ci+1,从当前节点哈希查找子节点中的ci+1;若子节点中没有ci+1,则停机,否则形成新的当前节点,读取字符状态;

s23:若停机转步骤s26,若是继续状态转步骤s22,若是延伸状态转步骤s24,若是终止状态转步骤s25;

s24:标记延伸状态,转步骤s22;

s25:提取词语,转步骤s21;

s26:判断前一状态是否延伸状态,如果是,转步骤s27,否则转步骤s28;

s27:提取词语,转步骤s21;

s28:索引回溯到i+1,转步骤s21。

需要说明的是,在提取第一时间特征时采用正向最大匹配算法进行匹配提取,由于查询过程只需要对字典树中前缀出现的节点进行查找,不需要做无谓的遍历,查找的时间复杂度为o(length),此处length为输入的时间表达式的长度,为一个常数项,而通过遍历查找的方法进行查询,时间复杂度为n*o(length),n为所有可能时间表达式的数量,因此能够显著提高匹配效率,从而能够有效提高本方案时间解析的效率。

优选地,所述s1中将所述第一时间特征转换为历法一致的第二时间特征的方法是将第一时间特征统一为公历历法时间的第二时间特征。

需要说明的是,将所提取的第一时间特征统一历法和时间,形成第二时间特征,能够方便后续的解析计算。

优选地,所述s1中介词特征包括“之前”、“之间”和“之后”三类。

更优选地,其中,“之前”标记为“before”,“之间”标记为“middle”,“之后”标记为“after”。

优选地,所述s3中指代消解的具体步骤包括:

s31:对所述代词特征进行二分类,判断所述代词特征是否为名词性代词,若否则离开指代消解;

s32:选择与s31中所得的代词特征构成指代关系的先行词,并将所述先行词作为指代消解结果。

更优选地,所述s32中选择先行词的方法是:比较候选先行词多个特征的线性加权权重之和的大小进行选择。

更进一步地,所述候选先行词总权重weight的计算公式为:

weight=λ1nu+λ2r+λ3sy+λ4mc+λ5se,

其中,nu为单复数一致性权重;r为距离特征权重;sy为语法特征权重;mc为提及率;se为语义特征权重;λi为(1≤i≤5)为调整值,由用户输入。

需要说明的是,对代词特征进行二分类,判断代词特征是否是为名词性代词,因为指代时间的代词属于名词性代词,如果为非名词性代词,说明此处的时间表达式没有上下文联系,不需要进行指代消解。分类方法有很多种,可采用且不限于机器学习的分类方法,此处可以优选svm的分类算法,分类需要进行特征收集,此处的分流特征包括但不限于:单复数一致性,距离,依存语法,提及率等。

需要说明的是,权重及赋予方法具体方法如下:

单复数一致性权重nu,一致为1,不一致为-1;

距离特征权重r,r为代词和候选先行词之间有多少话语;

语法特征权重sy,该特征表示候选先行词是否在介词特征短语中,在为1,不在为0;

提及率mc:在语料的训练部分上统计被指代的词的频率;

语义特征权重se:通过语法解析器对训练语料表达式进行解析,获得的同时包含名词性指代词和先行词的三元组的频率。

λi(1≤i≤5)可以根据经验赋予初值,然后通过训练语料手工调整获得。

选择权重最大的候选先行词作为消解结果。

需要说明的是,在现有的一些技术中,如中国发明专利申请cn107729314a,所公开的一种中文时间识别方法、装置及存储介质中,其上下文解析的方法是通过使用svm这样的机器学习分类方法将时间分类为“第一时间表达式”,“第二时间表达式”,“第三时间表达式”,然后以基础词和触发词为主要特征,对第一时间表达式和第二时间表达式进行转化,从而上下文解析的效果,但是这篇专利也提到:“用于训练svm模型的时间表达式语料越多,越有利于提高svm模型的准确率,对时间表达式分类的效果也越好。”这就是在使用机器学习方法时会遇到的训练样例不平横问题,而本申请中的“多个特征的线性加权权重之和”的方法可以解决训练样例不平衡的问题,且结合多特征,准确率也较高。

优选地,所述s32中还包括判断所选择的先行词是否为时间名词,若是则将所述先行词作为指代消解结果。

更进一步地,判断所述选择所得的先行词是否为时间名词,能够提高解析的准确率。

与现有技术相比,本发明的有益效果在于:

1、本发明的时间解析方法,通过利用时间表达集,匹配语音信息中的时间短语从而形成第一时间特征,能更迅速地形成时间表达的第一时间特征,充分提高显著提高语音对话系统中对时间的识别和解析的效率;由于预先设置的时间表达集具有统一性,这样更加提高后续时间解析的准确性;

2、本发明的时间解析方法,优选使用trie树(字典树)的高效存储和检索方法对语句中的时间表达进行提取,结合特有的指代消解方法对时间进行解析,能显著提高语音对话系统中对时间的识别和解析的效率和准确性;

3、本发明的时间解析方法,提取第一时间特征时采用正向最大匹配算法进行匹配提取,能够有效提高本方案时间解析的效率;

4、本发明的时间解析方法,在指代消解步骤中采用个特征的线性加权权重之和的方案,可以解决训练样例不平衡的问题,且结合多特征,准确率也较高,从而提高时间解析的准确率。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。

附图说明

图1为本发明的时间解析方法一种基础实施方式的流程示意图;

图2为本发明的时间解析方法构建trie树的一种优选实施方式的示意图;

图3为本发明的时间解析方法中指代消解的一种优选实施方式的示意图;

图4为本发明的时间解析方法一种优选实施方式的示意图。

具体实施方式

为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的具体实施方式、结构、特征及其功效,详细说明如下:

实施例1

如图1所示是一种时间解析方法的一种基础实施方式,所述方法包括以下步骤:

s1:构建时间表达集并存储于系统中;

s2:获取语音信息,将所述语音信息转换成文本数据;对所述文本数据进行预处理的前或后提取所述文本数据中的第一时间特征;提取所述文本数据中的介词特征和代词特征;

s3:对上述所得的代词特征进行指代消解;根据所述指代消解的结果与第一时间特征恢复所述代词特征对应的第二时间特征;

s4:根据所得时间特征进行解析处理。

发明人在本技术方案中在对语音信息完成预处理形成第一时间特征、介词特征和代词特征的基础之上,加入了对代词特征的指代消解步骤,从而达到了结合上下文理解时间信息,实现对上下文时间信息的综合解析,解决了多轮对话对时间信息难以识别解析的技术问题。

另外,由于后续需要语音信息内的时间信息进行解析,因此为提高后续提取第一时间特征的速度和效率,发明人在获取语音信息前还加入了构建时间表达集的步骤,通过利用时间表达集,匹配语音信息中的时间短语从而形成第一时间特征,相较于直接获取第一时间特征而言,借助预先设置好的时间表达集,能更迅速地形成时间表达的第一时间特征,无需重新进行学习获取,能充分提高显著提高语音对话系统中对时间的识别和解析的效率;另外,由于预先设置的时间表达集具有统一性,后续获取的第一时间特征在表达形式上也更加统一,这样更加提高后续时间解析的准确性。

实施例2

本实施例是在上述基础实施例1的基础之上的,结合具体实施方式的优选实施方式,以下所列举的方式仅用于说明优选实施方式的实施过程和例子,并不代表保护范围仅限于此。

(1)构建时间表达集。

s11:读取时间表达词的词条首字,作为一颗子树的头节点插入首字哈希表,继续状态;

s12:读取时间表达词的下个字符,若所述子树中没有该字符,则插入该字符,继续状态;若父节点是终结状态,修改父节点成延伸状态;

s13:重复步骤s12,直至时间表达词的最后一个字符;

s14:如果最后一个节点是新插入的节点,状态为终结状态,否则状态为延伸状态;

s15:重复步骤s11,直至所有的时间表达词的词条插入完。

作为一个示例,我们举例说明如何通过trie树对时间表达进行存储。假设在构建时通过以下三种表达:“明天/下午/3点”、“下周三/晚上”、“下周五早上五点二十分”。

通过预处理,我们得到时间表达的最小单位为词,其中把阿拉伯数字和中文数字等表达进行统一标签替换。例子中的三种表达,可以用图2的trie树结构进行存储。可以看到,如果时间表达正向有相同的单位,在结构中可以使用同一个存储节点,可以节省计算机存储空间。建立trie树的过程可以离线提前完成,时间复杂度为o(n*len)。len为时间表达的长度。需要对时间进行匹配提取时,我们可以采用正向最大匹配算法,因为只需要考虑从最上层的匹配节点一层层往下,时间复杂度为o(len),在该例子中,最大长度为4,相比其他技术方案,利用本trie树结构,在后续的时间短语提取步骤时,能极大的提高匹效率。

(2)提取时间特征、介词特征和代词特征。

trie树离线建立好之后,在新的输入时间短语中的字符串进行时间识别,此处优选的使用基于trie树的正向最大匹配算法步骤,具体方法为:

s21:从第一时间特征的目标串s读取字符ci;从首字哈希表查找ci,形成当前节点;

s22:从s读取下一个字符ci+1,从当前节点哈希查找子节点中的ci+1;若子节点中没有ci+1,则停机,否则形成新的当前节点,读取字符状态;

s23:若停机转步骤s26,若是继续状态转步骤s22,若是延伸状态转步骤s24,若是终止状态转步骤s25;

s24:标记延伸状态,转步骤s22;

s25:提取词语,转步骤s21;

s26:判断前一状态是否延伸状态,如果是,转步骤s27,否则转步骤s28;

s27:提取词语,转步骤s21;

s28:索引回溯到i+1,转步骤s21。

步骤还包括将介词进行分类,比如时间文本:“12月6号之后”中出现了“之后”,根据其对应的时间模板序列,可将其分类为“after”,而“这个月2号到6号之间”出现了“之间”,可将其分类为“middle”。该步骤一共可将时间介词分为三类,其集合为[before,middle,after]。

选取在步骤中提取的位置处于时间之前与时间介词之前的代词,即在介词中筛选出时间代词,从而完成代词特征的提取。

对时间文本中的农历日期通过调用万年历,进行公历日期转换。将时间文本中的中国传统节假日,包括西方的节假日,进行公历日期转换,从而完成对文本数据的预处理。

通过上述步骤,能够对时间短语中的第一时间特征、介词特征和代词特征完成提取。

(3)指代消解。

在指代消解步骤中,大致分为两个子步骤:1:代词分类筛选2:先行词选择(代词消解),将上文中选择到的正确先行词对后面代词进行替换,从而达到指代消解的目的。

1)代词分类筛选:目的是因为代词指代的可能是名词性或非名词性的,而本方法需要的只是时间,属于名词,需要进行粗筛选,只有属于符合名词性的代词才需要我们进行后面的指代消解任务。此处问题也是一个二分类问题,我们可以采用各种分类算法进行分类,此处优选的采用svm的机器学习分类方法进行分类,分类之前,需要手机代词的各种特征,包括且不限于:单复数,是否有介词,距离,依存语法,性别词等。

2)先行词选择,仍然是一个分类问题,不同于代词分类,此处为一个多分类问题,传统方案可以使用机器学习的分类算法,但是在此处会遇到训练样本不平衡的问题,我们提出了另一种基于不同特征权重累加的方法。消解时通过比较候选先行词多个特征的线性加权权重之和的大小来选择最有可能被指代的那个。

所述候选先行词总权重weight的计算公式为:

weight=λ1nu+λ2r+λ3sy+λ4mc+λ5se,

其中,nu为单复数一致性权重;r为距离特征权重;sy为语法特征权重;mc为提及率;se为语义特征权重;λi为(1≤i≤5)为调整值,由用户输入。

其中,单复数一致性权重nu,一致为1,不一致为-1;

距离特征权重r,r为代词和候选先行词之间有多少话语;

语法特征权重sy,该特征表示候选先行词是否在介词特征短语中,在为1,不在为0;

提及率mc:在语料的训练部分上统计被指代的词的频率;

语义特征权重se:通过语法解析器对训练语料表达式进行解析,获得的同时包含名词性指代词和先行词的三元组的频率。

λi(1≤i≤5)可以根据经验赋予初值,然后通过训练语料手工调整获得。

选择权重最大的候选先行词作为消解结果。

更优选地,所述s32中还包括判断所选择的先行词是否为时间名词,若是则将所述先行词作为指代消解结果。判断所述选择所得的先行词是否为时间名词,能够提高解析的准确率。

结合上述各优选方式,其中一种指代消解的过程如图3所示。

(4)时间解析。

在得到具体的时间特征后,进行时间解析处理,所述时间解析的流程可以如下例子所示:

先将时间信息进行时间点与时间段的分类。比如:“今天下午三点半”,为一个具体的时间点,其标志位“istimepoint”可置为“true”;“这周五之后”,为一个从周五为起始点的时间段,对应标志位为“false”。

后将时间信息进行绝对时间与相对时间的分类。比如,时间“12月6号下午”,为一个绝对时间,其标志位“isrelativetime”设置为“false”;时间“三天后”为相对当前时间的三天之后,是一个相对时间,其标志位应设置为“true”。

再将之前步骤所处理的时间做进行结构化,包含以下字段:对话id(sessionid)、相对时间(isrelativetime)、年(year)、月(month)、日(day)、小时(hour)、分(minute)、时间点(istimepoint)。

对于诸如:上文中出现“一月一号”,下文中只有“三号”的情况,下文中省略了时间“一月”,但是在解析的过程中,需要将在上述步骤中进行的结构化中的缺失部分“月”,按照上文中出现的“月”字段中的信息进行补全,将“三号”处理为“一月三号”,这个过程叫做省略恢复。

由上述步骤得到的结果按照时间顺序进行组合。

判断会话是否结束,如果结束则保存本次会话的时间解析结果,如果没有结束,则跳转到上述指定消解步骤,继续对下面的其他时间进行预处理。

判断时间是否为周期性时间,并结合当前业务场景,使用时间推荐规则,进行输出结果推荐。比如,“周三”为一个周期性时间,周期性意思为某个时间可能在一段时间内会循环出现。在上面步骤中,识别解析的时间结果有多个选项。在用户定义的特定场景中,结合推荐规则引擎,对输出结果进行排序选择。比如订票场景,假如会话发生的时间已经是周四,会话中提到的周三买票,识别到的时间小于当前时间,而正常情况下我们不能去定过去时间的票,在这个两步骤中,推荐规则引擎会实际场景会对输出结果进行排序与结果输出。

判断会话是否结束,如果结束则保存本次会话的时间解析结果,如果没有结束,则跳转到指代消解步骤,继续对下面的时间进行预处理,直到流程结束,整个过程如图4所示。需要指出的是图4中的时间预处理步骤包括上述(1)(2)步骤。

上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。

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