时间词的抽取方法及装置与流程

文档序号:17478070发布日期:2019-04-20 06:15阅读:190来源:国知局
时间词的抽取方法及装置与流程

本发明涉及信息抽取与处理技术领域,具体涉及一种时间词的抽取方法。此外,本发明还涉及一种时间词抽取装置。



背景技术:

信息抽取是指从自然语言的文本中抽取出信息点的技术,旨在为人们提供更好的信息获取工具,以应对信息爆炸带来的严重挑战。时间信息是自然语言的重要组成部分,是完整理解自然语言语义时不可或缺的要素。因此,信息提取的其中一项重要工作就是从文本中抽取出用于表征时间信息的时间词。

常规的从文本中抽取时间词的方法主要是构建抽取规则,将抽取规则与文本进行匹配,从而提取出时间词。例如,提取出“1999年12月12日”、“星期一”这样表示日期的时间词,或者“8点半”这样表示时刻的时间词。此外,还有表示时间区间的时间词,例如“一月一日到2月15日”、“8点半到15:45”等。表示时间区间的时间词,其中一般包含了起始和结束两个具体的日期或者时刻。时间词的表现形式多样,在构建抽取规则时,假设每个表示日期的时间词具有10种表示形式,每个表示时刻的时间词有10种表示形式,为了能够尽可能全面地抽取出文本中的表示时间区间的区间时间词,就需要预先构建10×10=100个抽取规则,工作量大。而且,构建出的抽取规则不但数量多,而且往往很长,过于复杂,后期需要调整抽取规则时开发人员理解起来就很困难,给后期调整修改带来许多不便。



技术实现要素:

为解决上述技术问题,本申请提出一种时间词的抽取方法,以解决区间时间词抽取规则复杂、不便于后期调整修改,以及规则构建量过大的问题。

第一方面,提供一种时间词的抽取方法,包括以下步骤:

获取待抽取时间词的文本;

在所述文本中抽取出与第一正则匹配的至少一个第一字符串,所述第一正则为用于识别日期/时刻/日期时刻的规则;

如果在所述文本中第一字符串之后的第一预设数量个字符中包含预设的第一概念词,则为抽取出的第一字符串标记起始标签;所述第一概念词至少具有一种语义用于表征从一个日期/时刻/日期时刻到另一个日期/时刻/日期时刻;

如果在所述文本中第一字符串之前的第二预设数量个字符中包含预设的第一概念词,则为抽取出的第一字符串标记终止标签;

将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对,生成区间时间词。

结合第一方面,在第一方面第一种可能的实现方式中,将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对的步骤,包括:

获取标记有起始标签的第一字符串在所述文本中的结束位置;

获取标记有终止标签的第一字符串在所述文本中的开始位置;

如果在所述文本中所述结束位置在所述开始位置之前,则识别出所述结束位置和所述开始位置之间的第二字符串;

如果所述第二字符串包括所述第一概念词,并且总字符数小于第三预设数量个,则确定所述标记有起始标签的第一字符串和所述标记有结束标签的第一字符串相匹配。

结合第一方面的第一种或第二种实现方式,在第一方面第二种可能的实现方式中,在所述文本中抽取出与第一正则匹配的至少一个第一字符串的步骤之后,还包括:

如果在所述文本中第一字符串之前或之后的第四预设数量个字符中包含预设的第二概念词,则为抽取出的第一字符串标记时间关系标签;所述第二概念词至少具有一种语义用于表征与时间之间的顺序关系;

如果第一字符串同时标记有时间关系标签和起始标签/终止标签,并且与标记有终止标签/起始标签的另一个第一字符串相匹配,则利用第二概念词、标记有起始标签/终止标签的所述第一字符串,以及标记有终止标签/起始标签的另一个第一字符串,生成带有关系信息的区间时间词。

结合第一方面及上述可能的实现方式,在第一方面第三种可能的实现方式中,在为抽取出的第一字符串标记时间关系标签的步骤之后,还包括:

如果第一字符串仅标记有时间关系标签,或,如果第一字符串同时标记有时间关系标签和起始标签/终止标签并且不与其他任何一个标记有终止标签/起始标签的第一字符串相匹配,则利用第二概念词和标记有时间关系标签的第一字符串,生成带有关系信息的时间词。

结合第一方面及上述可能的实现方式,在第一方面第四种可能的实现方式中,该方法还包括:

如果一个区间时间词中标记有起始标签的第一字符串与标记有终止标签的第一字符串均为第二时间词,则从标记有起始标签的第一字符串中提取出与所述区间时间词对应的开始时间,从标记有终止标签的第一字符串中提取出与所述区间时间词对应的结束时间;所述第二时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个区间。

结合第一方面及上述可能的实现方式,在第一方面第五种可能的实现方式中,该方法还包括:

如果一个第一字符串与其他任一个第一字符串都不匹配,并且所述第一字符串为第二时间词,则从所述第一字符串中提取出对应的开始时间和结束时间;所述第二时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个区间。

结合第一方面及上述可能的实现方式,在第一方面第六种可能的实现方式中,从所述第一字符串中提取出对应的开始时间和结束时间的步骤,包括:

获取基准时间;

如果所述第一字符串符合预设的第四正则,则利用所述基准时间,以及与所述第四正则对应的提取规则,从所述第一字符串中提取出开始时间和结束时间。

结合第一方面及上述可能的实现方式,在第一方面第七种可能的实现方式中,该方法还包括:

如果一个第一字符串与其他任一个第一字符串都不匹配,并且所述第一字符串为第一时间词,则将所述第一字符串转化为预设的标准格式;所述第一时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个确定的值。

结合第一方面及上述可能的实现方式,在第一方面第八种可能的实现方式中,所述第一正则包括至少一个第五正则,所述第五正则用于识别阴历形式的日期/时间/日期时间;

所述方法还包括:

为利用第五正则从所述文本中抽取出的第一字符串标记阴历标签;

如果区间时间词中的至少一个第一字符串标记有阴历标签,则获取基准时间;

利用所述基准时间将标记有阴历标签的第一字符串转换为预设的阳历格式。

第二方面,提供一种时间词抽取装置,包括:

获取单元,用于获取待抽取时间词的文本;

处理单元,用于在所述文本中抽取出与第一正则匹配的至少一个第一字符串;在所述文本中第一字符串之后的第一预设数量个字符中包含预设的第一概念词的情况下,为抽取出的第一字符串标记起始标签;在所述文本中第一字符串之前的第二预设数量个字符中包含预设的第一概念词的情况下,为抽取出的第一字符串标记终止标签;以及,将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对,生成区间时间词;其中,所述第一正则为用于识别日期/时刻/日期时刻的规则;所述第一概念词至少具有一种语义用于表征从一个日期/时刻/日期时刻到另一个日期/时刻/日期时刻。

本申请的方法中,在获取待抽取时间词的文本之后,首先在所述文本中抽取出与第一正则匹配的至少一个第一字符串,所述第一正则为用于识别日期/时刻/日期时刻的规则,也就是说,抽取出的第一字符串每一个均表示一个日期、时刻或日期时刻。接着,如果在所述文本中第一字符串之后的第一预设数量个字符中包含预设的第一概念词,则为抽取出的第一字符串标记起始标签;如果在所述文本中第一字符串之前的第二预设数量个字符中包含预设的第一概念词,则为抽取出的第一字符串标记终止标签;所述第一概念词至少具有一种语义用于表征从一个日期/时刻/日期时刻到另一个日期/时刻/日期时刻。由于第一概念词除了表征从一个日期/时刻/日期时刻到另一个日期/时刻/日期时刻的语义之外,还可以表征从一个地点到另一个地点、表征动作达到目的等其他的语义,因此,将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对,以排除不是作为区间时间词的组成部分的第一字符串。最后利用配对的第一字符串来生成区间时间词。

通过这样的方法,一方面,避免了构建大量复杂的区间时间词抽取规则,只需要构建相对简单的抽取第一字符串的规则(也就是第一正则)即可,便于开发人员理解和后期调整修改抽取规则。另一方面,通过标记起始标签和终止标签,以及对第一字符串进行配对,排除文本中单个的时间词,从而准确地寻找到能够配对的第一字符串,进而生成区间时间词。

附图说明

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

图1为本申请时间词的抽取方法的第一个实施例的流程图;

图2为本申请时间词的抽取方法的第一个实施例中,s500的步骤的一种实现方式的流程图;

图3为本申请时间词的抽取方法的第一个实施例中,s500的步骤的另一种实现方式的流程图;

图4为本申请时间词的抽取方法的第二个实施例的流程图;

图5为本申请的时间词抽取装置的具体实施方式的结构示意图。

具体实施方式

下面对本申请的实施例作详细说明。

请参考图1,在本申请的第一个具体实施方式中,提供一种时间词的抽取方法,包括以下s100至s500的步骤。

s100:获取待抽取时间词的文本。

s200:在所述文本中抽取出与第一正则匹配的至少一个第一字符串,所述第一正则为用于识别日期/时刻/日期时刻的规则。

在s200的步骤中,在“日期/时刻/日期时刻”中,“/”表示或的关系。通常,日期、日期时刻或时刻可以由一个或多个表征时间的字段构成。例如,“去年一月一日八点”是一个日期时刻形式的时间节点,其中,“去年”是表征年的字段,“一月”是表征月份的字段,“一日”是表征日子的字段,“八点”是表征时刻的字段。这里的日期可以理解为广义的日期,不仅仅包括以年、月、日中一个或多个字段来表示的日期,还可以包括某个季度、某一周、某个节日/节气等字段。例如,“今年第二季度”、“去年除夕”、“今年夏至”等。

第一正则可以有多个,用于识别阳历的日期、阴历的日期(例如三月五号、三月初三等),也可以用于识别时刻(例如一点半、12点10分等),还可以用于识别日期时刻(例如2月1号8点半等)。

例如,在用于识别阳历的日期时,第一正则1可以是“(三十一?|二?十[一二三四五六七八九]?|[一二三四五六七八九]|3[01]|[12][0-9]|0?[1-9])日”,利用该第一正则1,可以从文本中匹配出文字描述的一日至三十一日,以及数字描述的1日至31日。类似地,也可以构建其他的第一正则,以从文本中匹配出类似“x月x日”、“x年x月x日”、“x月”、“上/下周”、“三四号”等表示日期的时间词。

又例如,在用于识别阴历的日期时,第一正则2可以是“初[一二三四五六七八九十]”,利用该第一正则2,可以从文本中匹配出文字描述的初一至初十。

上述的第一正则的例子中,“|”表示逻辑或,“()”表示多元取整,“?”表示非贪婪匹配。“[]”表示匹配方括号内的任意一个字符,如“[一二三四五六七八九]”表示匹配一至九中的任意一个字。“[字符-字符]”表示匹配指定范围内的任意字符,如上述的“[1-9]”表示匹配1至9范围内的任意一个数字。本申请中其他的正则中符号的含义与此相同。

更具体地,在一种实现方式中,第一正则可以包括至少一个第二正则和至少一个第三正则。

其中,第二正则用于识别第一时间词,第一时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个确定的值。例如,利用第二正则可以识别出这样的第一字符串,也就是第一时间词:“x年”、“戊戌年”、“第二季度”、“上个月”、“明年四月”、“x年x月x日”、“去年今天”、“x月x日”、“下个月五号”、“5月的第二个星期天”、“x日”、“明天”、“下周一”、“去年除夕”、“昨天八点半”、“三月五号八点半”等。这些第一时间词中,最下位的表征时间的字段所表征的时间都是一个确定的值。例如,“明年四月”中,最下位的字段是“四月”,是一个确定的值;“三月五号八点半”中,最下位的字段是“八点半”,同样也是一个确定的值;“第二季度”中,仅有一个表征时间的字段,因此最下位的表征时间的字段就是这个第一时间词本身,它也是一个确定的值。

第三正则用于识别第二时间词,第二时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个区间。例如,利用第三正则可以识别出这样的第一字符串,也就是第二时间词:“十一二月”、“下周”、“三四号”、“2月1号十一二点”等。这些第二时间词中,最下位的表征时间的字段所表征的时间都是一个区间,而不是前述那样的确定的值。例如,“2月1号十一二点”中,最下位的字段是“十一二点”,其实际含义是表征了一个区间,即十一点到十二点。此外,第二时间词在组合以后,可以表示另一个时间区间。例如,“下周”表示了下周一到下周日这个时间区间,“这周到下周”则表示了这周一到下周日这个时间区间。

可选地,第一正则还可以包括至少一个第五正则,第五正则用于识别阴历形式的日期/时间/日期时间。例如,利用第五正则可以识别出这样的第一字符串:“三月初三”、“正月十五”、“腊月初八”等。利用第五正则从文本中抽取出的第一字符串,为其标记阴历标签。另外,可选地,采用第五正则以外的其他第一正则识别抽取出的第一字符串,例如采用第二正则、第三正则识别出的第一字符串,可以为其标记阳历标签。

s300:如果在所述文本中第一字符串之后的第一预设数量个字符中包含预设的第一概念词,则为抽取出的第一字符串标记起始标签。

s400:如果在所述文本中第一字符串之前的第二预设数量个字符中包含预设的第一概念词,则为抽取出的第一字符串标记终止标签。

这里,第一概念词至少具有一种语义用于表征从一个日期/时刻/日期时刻到另一个日期/时刻/日期时刻,第一概念词可以是字词或符号,例如“到”、“至”、“——”等。通过第一概念词连接一个日期/时刻/日期时刻和另一个日期/时刻/日期时刻,就构成一个表征时间区间的区间时间词。

在s300的步骤中,第一字符串之后的第一预设数量个字符,具体的数量可以根据待抽取时间词的文本的不同来设定。

在s400的步骤中,第一字符串之前的第二预设数量个字符,具体的数量也可以根据待抽取时间词的文本的不同来设定。第一预设数量和第二预设数量可以设置为相同的数值,也可以设置为不同的数值,本申请对此不做限定。

s500:将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对,生成区间时间词。

在s300和s400的步骤中,从一个文本中提取出的标记有起始标签的第一字符串可能有一个或多个,标记有终止标签的第一字符串也可能有一个或多个。可以将标记起始标签的第一字符串都集合在一起,形成一个起始集合;将标记终止标签的第一字符串都集合在一起,形成一个终止集合。然后执行s500的步骤,将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对。

在一种实现方式中,可以遍历起始集合中的所有第一字符串,对于每一个标记有起始标签的第一字符串而言,遍历终止集合中的所有第一字符串,从终止集合中寻找出与该标记有起始标签的第一字符串匹配的第一字符串,从而完成配对。遍历完起始集合中的所有第一字符串,就表示已经将起始集合和终止集合中能够配对的第一字符串都进行了配对,剩下的则是在文本中单独表示日期或时刻或日期时刻的时间词。最后,利用相匹配的标记有起始标签的第一字符串和标记有终止标签的第一字符串,就可以生成表征时间区间的区间时间词。

这里的区间时间词是指表征时间区间的时间词,例如“10月1日到10月8日”、“3月到5月”、“上周到下周”等。

对于某一个标记有起始标签的第一字符串和某一个标记有终止标签的第一字符串,要判断二者是否匹配,具体地可以通过以下的方式来实现,即,请参考图2,将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对的步骤可以包括:

s501:获取标记有起始标签的第一字符串在所述文本中的结束位置;

s502:获取标记有终止标签的第一字符串在所述文本中的开始位置;

s503:如果在所述文本中所述结束位置在所述开始位置之前,则在所述文本中识别出所述结束位置和所述开始位置之间的第二字符串;

s504:如果所述第二字符串包括所述第一概念词,则确定所述标记有起始标签的第一字符串和所述标记有结束标签的第一字符串相匹配。

在s501和s502的步骤中,获取标记有起始标签的第一字符串在文本中的结束位置,以及获取标记有终止标签的第一字符串在文本中的开始位置,可以用文本中字符的顺序来确定。除了用字符顺序来记录第一字符串的位置之外,还可以采用其他方式,例如采用第一字符串在页面中的x轴位置和y轴位置等。

在s503的步骤中,如果在文本中所述结束位置小于所述开始位置,表示在文本中标记有起始标签的第一字符串处于标记有终止标签的第一字符串的前面,此时再获取二者之间的第二字符串,进而判断两个第一字符串是否匹配。

如果所述结束位置大于所述开始位置,表示在文本中标记有起始标签的第一字符串处于标记有终止标签的第一字符串的后面,此时可以直接确定该标记有起始标签的第一字符串和该标记有终止标签的第一字符串不能匹配。通过先判断结束位置和开始位置的先后顺序,可以减少配对时的计算量,提升配对速度。

在一种实现方式中,如果所述第二字符串包括所述第一概念词,则可以确定标记有起始标签的第一字符串和所述标记有结束标签的第一字符串相匹配。但是,对于两个第一字符串而言,虽然满足结束位置在开始位置的前面这个条件,也满足两个第一字符串之间的第二字符串包含第一概念词这个条件,但两个第一字符串在文本中相隔很远,实际上在文本中二者并不能够配对为一对。

面对这样可能配对错误的情况,为了进一步提高配对的准确率,在第二种实现方式中,请参考图3,上述s504的步骤还可以替换为s505的步骤,即:如果所述第二字符串包括所述第一概念词,并且总字符数小于第三预设数量个,则确定所述标记有起始标签的第一字符串和所述标记有结束标签的第一字符串相匹配。

在s505的步骤中,第三预设数量个,具体的数值可以根据处理的文本的不同来具体设定,例如可以设置为10个、5个或1个等,本申请对具体的数值不做限定。

在采用s505的步骤的抽取方案中,第二字符串包括第一概念词,以及第二字符串的总字符数小于预设的第三数量个,这两个条件仅满足一个,或二者均不满足,则表示当前的这个标记有起始标签的第一字符串和标记有终止标签的第一字符串不相匹配,二者不能配对为一对。每一对相匹配的第一字符串都可以生成一个相应的区间时间词。

此外,在第三种实现方式中,还可以不判断所述文本中结束位置和开始位置的先后顺序,直接识别出所述结束位置和所述开始位置之间的第二字符串,然后判断第二字符串是否包括所述第一概念词,并且总字符数是否小于第三预设数量个,如果是,则确定所述标记有起始标签的第一字符串和所述标记有结束标签的第一字符串相匹配。

本申请的方法中,在获取待抽取时间词的文本之后,首先在所述文本中抽取出与第一正则匹配的至少一个第一字符串,所述第一正则为用于识别日期/时刻/日期时刻的规则,也就是说,抽取出的第一字符串每一个均表示一个日期、时刻或日期时刻。接着,如果在所述文本中第一字符串之后的第一预设数量个字符中包含预设的第一概念词,则为抽取出的第一字符串标记起始标签;如果在所述文本中第一字符串之前的第二预设数量个字符中包含预设的第一概念词,则为抽取出的第一字符串标记终止标签;所述第一概念词至少具有一种语义用于表征从一个日期/时刻/日期时刻到另一个日期/时刻/日期时刻。由于第一概念词除了表征从一个日期/时刻/日期时刻到另一个日期/时刻/日期时刻的语义之外,还可以表征从一个地点到另一个地点、表征动作达到目的等其他的语义,因此,将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对,以排除不是作为区间时间词的组成部分的第一字符串。最后利用配对的第一字符串来生成区间时间词。

通过这样的方法,一方面,避免了构建大量复杂的区间时间词抽取规则,只需要构建相对简单的抽取第一字符串的规则(也就是第一正则)即可,便于开发人员理解和后期调整修改抽取规则。另一方面,通过标记起始标签和终止标签,以及对第一字符串进行配对,排除文本中单个的时间词,从而准确地寻找到能够配对的第一字符串,进而生成区间时间词。

以下通过一个具体的实例来进一步说明。

待抽取时间词的文本1为:今年中秋节假期与国庆节假期重叠,从十月一日放假到十月八日十月九日则正常上班。我坐了两天两夜的火车,至10月2日才抵达拉萨。小a大约在10月4日到拉萨。

假设第一预设数量为3个,第二预设数量为3个,第三预设数量为5个。第一概念词包括“到”和“至”。

首先,利用第一正则抽取出文本1中的5个第一字符串:

第一字符串1“十月一日”;

第一字符串2“十月八日”;

第一字符串3“十月九日”;

第一字符串4“10月2日”;

第一字符串5“10月4日”。

在文本1中,第一字符串1之后的3个字符“放假到”中包含了第一概念词“到”,故而抽取出第一字符串1“十月一日”,为其标记上起始标签。

在文本1中,第一字符串2之前的3个字符“放假到”中包含了第一概念词“到”,故而抽取出第一字符串2“十月八日”,为其标记上终止标签。

在文本1中,第一字符串3之前和之后的3个字符中均没有包含任何一个第一概念词。

在文本1中,第一字符串4之前的3个字符“车,至”中包含了第一概念词“至”,故而抽取出第一字符串4“10月2日”,为其标记上终止标签。

在文本1中,第一字符串5之后的3个字符“也到了”中包含了第一概念词“到”,故而抽取出第一字符串5“10月4日”,为其标记上起始标签。

将标记起始标签的第一字符串都集合在一起,形成一个起始集合a,包括:第一字符串1“十月一日”、第一字符串5“10月4日”。

将标记终止标签的第一字符串都集合在一起,形成一个终止集合b,包括:第一字符串2“十月八日”、第一字符串4“10月2日”。

遍历起始集合a。对于每一个起始集合a中的第一字符串,遍历终止集合b,判断b中的第一字符串是否与之匹配。

首先判断第一字符串1和第一字符串2。第一字符串1在文本1中的结束位置为第21个字符,第一字符串2在文本1中的开始位置为第25个字符,结束位置在开始位置之前。因此,获取二者之间的第二字符串1,即“放假到”。由于第二字符串1包含了第一概念词“到”,并且总字符数为3个,小于第三预设数量个(5个),故而将第一字符串1和第一字符串2配对为一对。

文本1:

此处,由于第一字符串1已经和第一字符串2相匹配,故而此时可以停止遍历终止集合b,而开始针对起始集合a中的下一个第一字符串,即第一字符串5,寻找b中是否存在与之匹配的第一字符串。从而减少配对的计算量,提升配对速度。

另外,即便判断出第一字符串1已经和第一字符串2相匹配,也可以继续遍历终止集合b,确定其中是否还存在其他与第一字符串1相匹配的、标记有终止标签的第一字符串。如果判断出终止集合b中还存在其他与第一字符串1相匹配的第一字符串,则再对这多个第一字符串进行筛选,筛选出一个,将其确定为与第一字符串1相匹配的标记有终止标签的第一字符串,从而提高配对的精准率。

在终止集合b中,一旦某一个第一字符串已经与起始集合a中的第一字符串匹配上,就可以将其从终止集合b中移除,以减少配对的计算量,提升配对速度。

在本例子中,采用一旦配对就停止遍历终止集合b,并将b中已经配对的第一字符串移除的方式来举例。

故而,针对第一字符串1,停止遍历终止集合b,将第一字符串2从终止集合b中移除。然后,针对第一字符串5,再遍历终止集合b,判断第一字符串5和第一字符串4是否能够配对为一对。判断的方法与前述的判断第一字符串1和第一字符串2的方法类似。第一字符串5在文本1中的结束位置为第72个字符。第一字符串4在文本1中的开始位置为第52个字符。这里,可以先判断第一字符串5的结束位置与第一字符串4的开始位置的前后顺序。由于第一字符串5在文本1中的结束位置为第72个字符,第一字符串4在文本1中的开始位置为第52个字符,开始位置小于结束位置,故而可以直接确定第一字符串5和第一字符串4不能配对为一对。另外,如果不判断第一字符串5的结束位置与第一字符串4的开始位置的前后顺序,也可以直接获取二者之间的第二字符串2,即“10月2日才抵达拉萨。小a大约在10月4”。由于第二字符串2中既不包含任一个第一概念词,总字符数也超过了5个,故而二者不能配对为一对。

由于终止集合b中只有第一字符串4一个,故而此时遍历终止集合b完毕。

由于第一字符串5为起始集合a中的最后一个,故而至此,遍历起始集合a也完毕。

通过上述的方法,可以确定,文本1中只有一对相匹配的第一字符串,即标记有起始标签的第一字符串1和标记有终止标签的第一字符串2,最后生成区间时间词。在其中一种实现方式中,可以第一字符串1在前,第一字符串2在后,在二者之间加上预设的字词或符号,例如“到”,从而生成区间时间词“十月一日到十月八日”。

除了从文本中抽取出区间时间词以外,还可以抽取出带有时间关系信息的区间时间词和带有关系信息的普通时间词,从而使得抽取出的时间词更加准确、丰富,便于应用到更多业务场景中。

请参考图4,在本申请的第二个实施例中,提供一种时间词的抽取方法,包括:

s100:获取待抽取时间词的文本;

s200:在所述文本中抽取出与第一正则匹配的至少一个第一字符串,所述第一正则为用于识别日期/时刻/日期时刻的规则;

s300:如果在所述文本中第一字符串之后的第一预设数量个字符中包含预设的第一概念词,则为抽取出的第一字符串标记起始标签;所述第一概念词至少具有一种语义用于表征从一个日期/时刻/日期时刻到另一个日期/时刻/日期时刻;

s400:如果在所述文本中第一字符串之前的第二预设数量个字符中包含预设的第一概念词,则为抽取出的第一字符串标记终止标签;

s510:将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对。

s600:如果在所述文本中第一字符串之前或之后的第四预设数量个字符中包含预设的第二概念词,则为抽取出的第一字符串标记时间关系标签;所述第二概念词至少具有一种语义用于表征与时间之间的顺序关系;

s710:如果第一字符串同时标记有时间关系标签和起始标签/终止标签,并且与标记有终止标签/起始标签的另一个第一字符串相匹配,则利用第二概念词、标记有起始标签/终止标签的所述第一字符串,以及标记有终止标签/起始标签的另一个第一字符串,生成带有关系信息的区间时间词。

s720:如果第一字符串仅标记有时间关系标签,或,如果第一字符串同时标记有时间关系标签和起始标签/终止标签但是不与其他任何一个标记有终止标签/起始标签的第一字符串相匹配,则利用第二概念词和标记有时间关系标签的第一字符串,生成带有关系信息的时间词。

这里,s100-s510的步骤可参考第一个实施例中s100-s500的步骤的相关说明,此处不再赘述。

在s600的步骤中,第二概念词至少具有一种语义用于表征与时间之间的顺序关系,例如,第二概念词可以是“之前”、“之后”、“大约”等。这些第二概念词放在文本中,其可能表示与某个物体之间的空间位置关系,也可能表示与时间之间的顺序关系等。当某个第一字符串的之前或之后的第四预设数量个字符中包含了第二概念词,则认为该第二概念词可能描述了与该第一字符串所表征的时间之间的顺序关系,因此,为该第一字符串标记上时间关系标签。在实际表达中,如果一个时间词的前面或后面具有第二概念词,则会使得该时间词在文本中的语义发生变化,不再与仅仅一个时间词所代表的语义完全相同。即,与“十二点”相比,“十二点之前”的语义已经发生了变化。而对于等于的关系,实际表达时通常不会明确表达出这个关系,即便表达出来,与时间词所代表的语义也是完全相同的。因此,本申请中的第二概念词不包括“等于”等,而是特指那些加在时间词前面或后面会使表征的时间产生变化的字词。也就是说,在本申请中,如果一个时间词的前面或后面不具有第二概念词,通常表示的是等于的关系。

这里,第四预设数量个字符,具体的数量也可以根据待抽取时间词的文本的不同来设定本申请对具体的数值不做限定。

更具体地,时间关系标签还可以根据预设的第二概念词来具体分为第一时间关系标签和第二时间关系标签。例如,如果在所述文本中第一字符串之前的第四预设数量个字符中包含预设的第二概念词,如“大约”、“大概”、“大致”等,则为抽取出的第一字符串标记第一时间关系标签。如果在所述文本中第一字符串之后的第四预设数量个字符中包含预设的第二概念词,如“之前”、“之后”等,则为抽取出的第一字符串标记第二时间关系标签。

在s710和s720的步骤中,判断该标记有时间关系标签的第一字符串是否能够与其他的第一字符串相匹配构成一个区间时间词。如果存在与之相匹配的另一个第一字符串,则表示该第二概念词在文本中描述的是与整个区间时间词之间的关系,而不仅仅是与单个的第一字符串表征的时间之间的关系。如果不存在与之相匹配的另一个第一字符串,则表示该第一字符串在文本中单独表示一个时间,第二概念词描述的是与该第一字符串表征的时间之间的关系。

在s710的步骤中,利用第二概念词、标记有起始标签/终止标签的所述第一字符串,以及标记有终止标签/起始标签的另一个第一字符串,生成带有关系信息的区间时间词。在一种实现方式中,可以使标记有起始标签的第一字符串在前,标记有终止标签的第一字符串在后,二者之前以连接词,例如“到”,来连接,生成区间时间词。根据时间关系标签的种类,将第二概念词放在区间时间词前面或后面,得到带有关系信息的区间时间词。更具体地,第一字符串标记有前述的第一时间关系标签时,则将第二概念词放在区间时间词的前面。当第一字符串标记有前述的第二时间关系标签时,则将第二概念词放在区间时间词的后面。

以下以文本2为例,文本2为:

过几天我可能要出差去上海,8号待到12号。不管项目进行到什么程度,周五肯定会再回一趟北京。

预设的第二概念词为:之前、之后、大约。第四预设数量为5个。

利用类似第一个实施例中的方法,可以确定:

第一字符串6:8号,标记有起始标签。

第一字符串7:12号,标记有终止标签。

第一字符串8:下周五。

经过配对后,确定可以将第一字符串6和第一字符串7配对为一对。

第一字符串6之前包括第二概念词“大约”,故而给第一字符串6标记第一时间关系标签。

第一字符串7之前和之后的5个字符内均不包含第二概念词。

第一字符串8之后的5个字符内包括第二概念词“之前”,故而给第一字符串8标记第二时间关系标签。

由于第一字符串6同时标记有起始标签和时间关系标签,并且第一字符串6和第一字符串7相匹配,故而将第一字符串6和第一字符串7用连接词“到”连接起来,得到区间时间词“8号到12号”。又因为第一字符串6上标记的是第一时间关系标签,故而将第二概念词放在区间时间词“8号到12号”的前面,得到带有关系信息的区间时间词“大约8号到12号”。

第一字符串8仅标记有第二时间关系标签,因此,将第二概念词放在第一字符串8的后面,得到带有关系信息的时间词“下周五之前”。

在本申请的第三个实施例中,提供一种时间词的抽取方法,包括:

s100:获取待抽取时间词的文本;

s200:在所述文本中识别出与第一正则匹配的至少一个第一字符串,所述第一正则为用于识别日期/时刻/日期时刻的规则;

s300:如果在所述文本中第一字符串之后的第一预设数量个字符中包含预设的第一概念词,则抽取出所述第一字符串,为抽取出的第一字符串标记起始标签;所述第一概念词至少具有一种语义用于表征从一个日期/时刻/日期时刻到另一个日期/时刻/日期时刻;

s400:如果在所述文本中第一字符串之前的第二预设数量个字符中包含预设的第一概念词,则抽取出所述第一字符串,为抽取出的第一字符串标记终止标签;

s500:将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对,生成区间时间词;

s810:如果一个区间时间词中标记有起始标签的第一字符串与标记有终止标签的第一字符串均为第二时间词,则从标记有起始标签的第一字符串中提取出与所述区间时间词对应的开始时间,从标记有终止标签的第一字符串中提取出与所述区间时间词对应的结束时间;所述第二时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个区间。

s820:如果一个第一字符串与其他任一个第一字符串都不匹配,并且所述第一字符串为第二时间词,则从所述第一字符串中提取出对应的开始时间和结束时间;所述第二时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个区间。

s830:如果一个第一字符串与其他任一个第一字符串都不匹配,并且所述第一字符串为第一时间词,则将所述第一字符串转化为预设的标准格式;所述第一时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个确定的值。

这里,s100-s500的步骤可参考第一个实施例中的相关说明,此处不再赘述。

在s810至s830的步骤中,第一时间词和第二时间词可以参考第一个实施例中的相关描述,此处不再赘述。

在s810的步骤中,第二时间词中最下位的字段所表征的时间是一个区间,因而本身可以提取出一个开始时间和一个结束时间。例如,对于“这周”而言,假设以今天(2018.01.08)为时间基本,这周就可以转化为2018.01.08到2018.01.14,故而从中可以提取出一个开始时间和一个结束时间。

当两个第一字符串相匹配(也就是说二者可以生成一个区间时间词)并且二者都是第二时间词时,就可以从标记有起始标签的第一字符串中提取出开始时间,从标记有终止标签的第一字符串中提取出结束时间,将这两个提取出来的开始时间和结束时间,作为与区间时间词对应的开始时间和结束时间。例如,对于“这周”和“下周”而言,两个第一字符串相匹配,可以生成区间时间词“这周到下周”,并且二者都是第二时间词,因此,从“这周”中提取出开始时间“2018.01.08”,从“下周”中提取出结束时间“2018.01.21”。也就是说,从文本中抽取出的区间时间词“这周到下周”对应的开始时间为2018.01.08,结束时间为2018.01.21。

某个第一字符串为第二时间词,但其并不能与其他任一个第一字符串配对,也就是说其在文本中不能与其他时间词一起构成区间时间词,而是单独表征一个时间区间。对于这样的时间词,也可以从中提取出开始时间和结束时间,以作为该时间词对应的开始时间和结束时间,即s820的步骤。

在s820的步骤中,如前所述,第二时间词本身就可以提取出一个开始时间和结束时间,因此,当这样的第二时间词不能与其他的第一字符串配对时,就可以从其本身提取出开始时间和结束时间。例如,对“第一季度”而言,就可以从其中提取出开始时间“1月”和结束时间“3月”,即“第一季度”对应的开始时间是1月,对应的结束时间是3月。

对于某些第二时间词来说,其可以直接确定出具体的开始时间和结束时间,例如“第一季度”。但是对于像“上周”、“下周”等这样的第二时间词来说,在不知道基准时间的情况下,无法确定下来具体的开始时间和结束时间。

为此,在一种实现方式中,可以先获取基准时间,例如,可以以系统当前的时间为基准时间,也可以以预设的某个时间为基准时间。然后利用预先建立的第四正则来对该第一字符串(即第二时间词)做二次抽取,确定该第一字符串是否符合第四正则。如果符合,则可以利用基准时间,以及与第四正则对应的提取规则,从该第一字符串中提取出开始时间和结束时间。

这里,第四正则可以包括多个,每一个第四正则都可以具有一个预设的与之对应的提取规则。例如,假设第四正则1为“上周”,则对应的提取规则可以是:确定基准时间在周x,结束时间=基准时间-x天;开始时间=基准时间-(x+6)天。第四规则正则2为“下周”,则对应的提取规则可以是:确定基准时间在周x,开始时间=基准时间+(8-x)天;结束时间=基准时间+(14-x)天。假设基准时间为2017-12-22,第一字符串“下周”为第二时间词,并符合第四规则正则2,则可以利用基准试件和第四规则2对应的提取规则,从第二时间词“下周”中提取出开始时间“2017-12-25”,结束时间“2017-12-31”。

以上的从第二时间词中提取开始时间和/或结束时间的方法,也可以类似地用在前述s810的步骤中。

此外,如果一对相匹配的第一字符串,也就是说二者能够生成一个区间时间词,并且二者均为第一时间词,那么就以标记有起始标签的第一字符串为开始时间,以标记有终止标签的第一字符串为结束时间。例如对于从文本1中抽取出来的区间时间词“十月一日到十月八日”而言,可以提取出开始时间为10月1日,结束时间为10月8日。

在s830的步骤中,如果一个第一字符串为第一时间词,标记有起始标签或终止标签,但是与任一个其他的标记有终止标签或起始标签的第一字符串都不匹配,或者,如果一个第一字符串为第一时间词,并且没有被标记起始标签或终止标签,那么说明在文本中,这样的第一时间词是独立来表示时间的,而不能作为构成区间时间词的一部分,例如文本1中的“10月4日”、“十月九日”等。在抽取时间词时,这样的第一字符串也可以被抽取出来,作为从文本中抽取出的时间词中的其中一类,即普通时间词,并转化为预设的标准格式。

这里标准格式可以由用户根据实际应用需求来预设,例如,对于日期,可以预设为“yyyy-mm-dd”等。

如果第一时间词是类似于“除夕”、“明天”、“母亲节”、“立夏”等,这样的第一时间词尽管是一个确定的日子,在不知道基准时间的情况下,无法将其转换为预设的格式。为此,也可以建立第六正则,然后构建与第六正则对应的转换规则。在转换时,先获取基准时间,如果第一时间词符合第六正则,则利用基准时间和第六正则对应的转换规则来将第一时间词转换为预设的格式。例如,预设的格式为“yyyy-mm-dd”的格式,基准时间为2017-12-22,则与第六正则“明天”对应的转换规则就可以是:明天=基准时间+1天。这样就可以将“明天”转换为“2017-12-23”。

如果标记有起始标签的第一字符串和另一个标记有结束标签的第一字符串相匹配,同时其中至少一个第一字符串类似于“除夕”等这样形式的第一时间词,则可以先生成区间时间词,再将区间时间词中的第一时间词转换为预设的格式。例如“春分”标记有起始标签,“立夏”标记有终止标签,并且二者相匹配,则在获取基准时间为2018年以后,可以先生成区间时间词“春分到立夏”,然后从区间时间词中提取出对应的开始时间“2018-03-21”和结束时间“2018-05-05”。

可选地,如第一个实施例中所描述的,第一正则可以包括至少一个第五正则,所述第五正则用于识别阴历形式的日期/时间/日期时间。

如此,前述抽取方法还可以包括:

s910:为利用第五正则从所述文本中抽取出的第一字符串标记阴历标签;

s920:如果区间时间词中的至少一个第一字符串标记有阴历标签,则获取基准时间;

s930:利用所述基准时间将标记有阴历标签的第一字符串转换为预设的阳历格式。

在本申请中,可以在生成区间时间词以后,先将区间时间词中标记有阴历标签的第一字符串转换为预设的阳历格式,然后再从中提取出开始时间和结束时间;也可以先从区间时间词中提取出阴历形式的开始时间和结束时间,再将其转换为阳历格式。在输出阳历格式的开始时间和结束时间之前,还可以包括校验的步骤,即校验日期是否合法,如果不合法,则不输出转换格式后的日期。

通过上述的方法,可以从多个不同的角度将抽取出的各式各样的单个普通时间词、区间时间词归一化为统一的便于查阅看和使用的格式。

在本申请的第四个实施例中,请参考图5,提供一种时间词抽取装置,包括:

获取单元1,用于获取待抽取时间词的文本;

处理单元2,用于在所述文本中抽取出与第一正则匹配的至少一个第一字符串;在所述文本中第一字符串之后的第一预设数量个字符中包含预设的第一概念词的情况下,为抽取出的第一字符串标记起始标签;在所述文本中第一字符串之前的第二预设数量个字符中包含预设的第一概念词的情况下,为抽取出的第一字符串标记终止标签;以及,将抽取出的标记有起始标签的第一字符串分别与标记有终止标签的第一字符串进行配对,生成区间时间词;其中,所述第一正则为用于识别日期/时刻/日期时刻的规则;所述第一概念词至少具有一种语义用于表征从一个日期/时刻/日期时刻到另一个日期/时刻/日期时刻。

可选地,所述处理单元2还用于获取标记有起始标签的第一字符串在所述文本中的结束位置;获取标记有终止标签的第一字符串在所述文本中的开始位置;在所述文本中所述结束位置在所述开始位置之前的情况下,识别出所述结束位置和所述开始位置之间的第二字符串;以及,在所述第二字符串包括所述第一概念词,并且总字符数小于第三预设数量个的情况下,确定所述标记有起始标签的第一字符串和所述标记有结束标签的第一字符串相匹配。

可选地,所述处理单元2还用于在所述文本中第一字符串之前或之后的第四预设数量个字符中包含预设的第二概念词的情况下,为抽取出的第一字符串标记时间关系标签;在第一字符串同时标记有时间关系标签和起始标签/终止标签,并且与标记有终止标签/起始标签的另一个第一字符串相匹配的情况下,利用第二概念词、标记有起始标签/终止标签的所述第一字符串,以及标记有终止标签/起始标签的另一个第一字符串,生成带有关系信息的区间时间词;其中,所述第二概念词至少具有一种语义用于表征与时间之间的顺序关系。

可选地,所述处理单元2还用于在第一字符串仅标记有时间关系标签的情况下,或,在第一字符串同时标记有时间关系标签和起始标签/终止标签并且不与其他任何一个标记有终止标签/起始标签的第一字符串相匹配的情况下,利用第二概念词和标记有时间关系标签的第一字符串,生成带有关系信息的时间词。

可选地,所述处理单元2还用于在一个区间时间词中标记有起始标签的第一字符串与标记有终止标签的第一字符串均为第二时间词的情况下,从标记有起始标签的第一字符串中提取出与所述区间时间词对应的开始时间,从标记有终止标签的第一字符串中提取出与所述区间时间词对应的结束时间;其中,所述第二时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个区间。

可选地,所述处理单元2还用于在一个第一字符串与其他任一个第一字符串都不匹配,并且所述第一字符串为第二时间词的情况下,从所述第一字符串中提取出对应的开始时间和结束时间;其中,所述第二时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个区间。

可选地,所述处理单元2还用于获取基准时间;在所述第一字符串符合预设的第四正则的情况下,利用所述基准时间,以及与所述第四正则对应的提取规则,从所述第一字符串中提取出开始时间和结束时间。

可选地,所述处理单元2还用于在一个第一字符串与其他任一个第一字符串都不匹配,并且所述第一字符串为第一时间词的情况下,将所述第一字符串转化为预设的标准格式;其中,所述第一时间词包含至少一个用于表征时间的字段,并且最下位的字段所表征的时间是一个确定的值。

可选地,所述处理单元2还用于为利用第五正则从所述文本中抽取出的第一字符串标记阴历标签;在区间时间词中的至少一个第一字符串标记有阴历标签的情况下,获取基准时间;以及,利用所述基准时间将标记有阴历标签的第一字符串转换为预设的阳历格式。其中,所述第一正则包括至少一个第五正则,所述第五正则用于识别阴历形式的日期/时间/日期时间。

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