聊天机器人以某种方式感到困惑

问题描述 投票:1回答:1

在IBM Watson聊天机器人上,我创建了2个实体,一个名为@serial_number,另一个名为@material_number。

序列号的模式是(\d{7,9})-(\d{2,4})-(\d{1,3}) 材料编号的模式是(\d{3}).(\d{3}).(\d{3}).(\d{3})

在“欢迎”节点中,机器人询问用户的名称,如果机器人识别出名称,则在下面的节点中,它还会搜索其他类型的输入。我希望机器人能够从输入中捕获序列号和材料号。因此我激活了插槽模式,然后添加了2个带有变量$ serialnumber和$ materialnumber的插槽。对于它们的值,我使用了“文字”函数,因此机器人可以将用户的输入存储到上下文变量中。

当有一个输入,如“你好,我是Henrik。我有一支笔。它的序列号是1234567-123-12,其物质编号是123.123.123.123”,机器人的响应如下:

“好的,序列号是1234567-123-12”

“好的,材料编号是1234567”

它根据提供的模式正确捕获序列号。然而,它却使材料编号错误。它应该捕获的材料编号是123.123.123.123,但它捕获1234567,即使在提供的@material_number模式中没有这样的模式。

不知何故,我需要让机器人捕获正确的东西。

如果有人可以帮助我,我会很高兴。提前致谢。

ibm-watson watson-conversation
1个回答
1
投票

这是因为正则表达式中的.匹配任何字符。如果要指定文字.,则需要在表达式中对其进行转义。即。

(\d{3})\.(\d{3})\.(\d{3})\.(\d{3})
© www.soinside.com 2019 - 2024. All rights reserved.