有没有办法训练Watson识别电子邮件实体和电话号码而不诉诸正常表达?
答案 0 :(得分:7)
<强>此前:强>
史蒂文,几个月前我也有同样的疑问。 IBM Watson Conversation 没有用于电话号码或电子邮件地址的系统实体,没有 但。无论如何,创建新的System实体是一个好主意, 对?我们可以为IBM提供反馈意见。但是,一个轮廓解决方案是使用上下文变量并创建新的 实体。尝试创建一个像
@gmail.com
,@hotmail.com
,@outlook.com
以及您发送的任何电子邮件 想要认出来。您将使用以下条件:
if @mail, response: Your e-mail is $email
用于识别电子邮件地址,但用于保存电子邮件 需要在
context
变量中创建一个正则表达式,如:"email": "<? input.text.extract('[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+(\\.[a-zA-Z]+){1,}',0)?>"
现在,对于
phone
个数字:您可以激活系统实体
@sys-number
,您将获得 只需几个数字,比如11个数字,并保存在一个上下文中 变量也是。使用
@sys-number AND input.text.find('^[^\\d]*[\\d]{11}[^\\d]*$',0)')
创建一个条件以查找数字 和sys-number
用于识别用户的数字。
编辑(使用新发行说明 - 在 BETA 版本中):
现在,IBM Watson Conversation拥有实体模式,我们可以使用它来获取电子邮件地址,电话号码等。
现在,当您创建一个新的@entity
时,您可以选择通知您要使用Pattern
或Synonymous
,因此,您将在我的示例中创建一个新实体@contactInfo,并使用patterns
创建值以获取邮件或电话值,例如:
并且,在Watson训练您的更改后,检查在“立即尝试”中完美运行:
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b
,例如test@gmail.com (\d{3})-(\d{3})-(\d{4})
,例如800-426-4968
详细了解如何创建实体here。