在很多场景下我们要用到时间词槽,比如用于定时。百度提供的sys_time能将诸如“19点05分”或者“19点”这样的表述归一化成24小时制的“xx:xx:xx”,也能将诸如“一分钟”这样的话术归一化为“60.0000000|秒”。本想着真不错,功能很强啊!于是自己新建的user_time词槽就直接复用了sys_time,但事实发现诸如“十九点十七分”或者“半小时”、“两个半小时”这样的话术却无法归一化。这就很伤了~
所以,自己动手,丰衣足食,写了三段python代码来生成sys_time的补充词典,下面我将把生成的三个词典文件上传并解释其词条格式。
(1)首先是针对24小时制的时间问题,下面这个词典涵盖了四种人们说一个时间的话术,包括:
xx点xx分
xx点xx
xx时xx分
xx时xx
并充分考虑到了百度语音识别在识别数字时有时输出阿拉伯数字,有时却是汉字的情况,比如“13”往往会被语音识别为“十三”,而“23”则会被语音识别为“23”。
这个词典将所有可能的时间组合都归一化成了“xx:xx:00”的格式。xx代表阿拉伯数字,做了这样的归一化后相信大家都能通过正则匹配来获取到我们要的具体时间。
内容如图:
(2)接下来是时间区间,下面这个文件涵盖了1-100分钟之间语音识别所有可能的结果并全部归一化成了阿拉伯数字,方便代码中进行解析。
内容如图:
(3)下面这个文件依然是时间区间,其涵盖的是0-24个小时的用户可能话术,并相应的有半小时这样的处理。所有整数个小时的语音识别可能的语料都被归一化为“xx小时”的格式,xx代表阿拉伯数字。而所有诸如“三个半小时”这样的语料都被归一化为类似“3半小时”这样的格式。
内容如图:
请登录后评论
TOP
切换版块
请教一下,为什么我既上传了自定义词典也勾选了系统词典,两者本是互补关系,但为什么两者在一起却只能识别自定义词典,新手刚接触,望指教
学习一下..大神介绍的.
嗯,说的有些道理。确实这样会更好一点~
嗯,大神的分享就是厉害~
在我的应用里暂时不需要考虑日期,只考虑24小时内的时间,所以这部分没做。如果要搭配日期,这个组合会很庞大。个人觉得可以将日期和具体时间分成两个词槽来处理会好一些。
谢谢分享
赞
可以,很强
楼主需要结合周期性时间,比如每天早上7点10分,每周三下午3点15分之类;或者日期+时间,比如明天7点15分之类,都会无法归一化。如果只识别时间,没有日期,这个效果也会差吧。。。
对于第一个文件,之前忘了我们通常也会用“两”来代替“二”,这次做了更新,加入了诸如“两点零三分”这样的词条