UNIT正则表达式增加中文汉字和子表达式识别功能
wuzelun009 发布于2017-10-30 浏览:17794 回复:44
16
收藏
最后编辑于2020-11-10

大家可以通过在上传的词表文件中配正则表达式(需要在行首加“$$$”与正常词区分)来使用该功能,使用示例:

1、识别邮箱:如果想把邮箱识别成user_email词槽,可在user_email词槽上传的词表中加入下面两行(第一行可以识别xxx_xxx@gmail.com等,第二行可以识别xxx_xxx@sina.com.cn等):

$$$[a-z0-9_-]{1,20}@[a-z0-9]{1,10}\.[a-z0-9]{1,10}

$$$[a-z0-9_-]{1,20}@[a-z0-9]{1,10}\.[a-z0-9]{1,10}\.[a-z0-9]{1,10}

2、识别电话号码:如果想把电话号码识别成user_phone词槽,可在user_phone词槽中加入下面两行(第一行可以识别固定电话,第二行可以识别手机号):

$$$\d{3,4}-\d{7,8}

$$$1[34578]\d{9}

3、识别中文汉字:如果想识别“周x”、“周xx”等姓名,可用下面正则表达式:

$$$周[\u4e00-\u9fff]{1,2}

注:如果想识别姓名,不推荐使用上面这种正则写法(会导致“周三”等时间槽位识别不了以及其他很多识别冲突问题),最好使用下面的识别子表达式功能(可以在正则表达式前后加上上下文)

4、识别子表达式:(本次新增功能)可将小括号内的子表达式匹配的内容识别为该槽位,如想将query为“我的名字是张三”中的“张三”识别为[D:user_name],可在[D:user_name]槽位中配如下正则表达式:

$$$我的名字是([\u4e00-\u9fff]{2,3})

 

说明:

1、暂时只支持以下7种字符类:"\s" "\d" "\w" "\u"(中文Unicode编码) "." "[…]" "(...)"(子表达式);以及3种量词:"?" "{n}" "{m,n}" ,其他正则表达式符号如:* + ^ $ 等均不支持, 如果不加反斜杠进行转义训练会失败

2、正则表达式和普通词可以在一个词槽文件中,正则表达式行首需要加$$$进行区分

3、当正则表达式词典值 与 其他词槽的普通文本词典值重叠时,普通文本词典值得优先级高于正则,需要删除重叠的词典值才能让正则词典值识别。20181229update

 

附--组合词槽的使用说明:https://ai.baidu.com/forum/topic/show/865416

 

 

收藏
点赞
16
个赞
共44条回复 最后由135******17回复于2020-11-10
#2goJhou回复于2017-10-30

令人期待已久的功能,基于正则,各位可以解决数字词典的问题了,前排撒花

1
TOP
切换版块