Regex Dialogflow在3-4位数处切断数字输入
我目前正在制作语音助手,遇到以下问题: Google Dialogflow的语音检测严重破坏了我对助手的数字输入。 比如当我清楚地念出“一、九、八、七、二、三”时,它会变成987或1987。当它认为自己有一个完整的实体时,它似乎切断了倾听,并直接继续 我制作了一个定制的复合实体,它由三种不同的识别模式组成Regex Dialogflow在3-4位数处切断数字输入,regex,dialogflow-es,numeric,voice-recognition,Regex,Dialogflow Es,Numeric,Voice Recognition,我目前正在制作语音助手,遇到以下问题: Google Dialogflow的语音检测严重破坏了我对助手的数字输入。 比如当我清楚地念出“一、九、八、七、二、三”时,它会变成987或1987。当它认为自己有一个完整的实体时,它似乎切断了倾听,并直接继续 我制作了一个定制的复合实体,它由三种不同的识别模式组成 @sys.number integer:number integer NumberRegex^([1-9]{1}([0-9]){1,4}[0-9]{1})$ NumberCardinals@
- @sys.number integer:number integer
- NumberRegex^([1-9]{1}([0-9]){1,4}[0-9]{1})$
- NumberCardinals@sys.cardinal:cardinal(作为复合实体重复3-6次)
有人对如何克服这个问题有什么建议吗?并强制DialogFlow侦听最大数量的数字 我不认为它能解决问题,但是模式可以缩短为
^[1-9][0-9]{2,5}$
肯定不能解决问题,是的,这是一种更干净的方法来编写与上面相同的正则表达式,我这样做是因为我还想在数字之间留有空格。您原来的模式不会匹配数字之间的空格。如果要匹配数字之间的空格(不在第一个数字之前,也不在最后一个数字之后),可以使用^[1-9](?:*[0-9]){2,5}$
如果要匹配空格,可以使用\s*
替换空格和asterix。我在使用Google Assistant时遇到过这种情况。这不是Dialogflow的问题。正如您所提到的,当输入文本时,它工作正常。Dialogflow只处理从记录用户语音的设备中获取的内容。因此,在这种情况下,无论您使用什么设备,语音识别都是一个问题,您无法真正更改识别本身的任何内容。您是否尝试过引导用户不要说“一两”或“三四”,而是使用“十二”和“四十三”?在这一点上,识别效果比单个数字输入要好得多。