docs icon indicating copy to clipboard operation
docs copied to clipboard

部分提问无法命中带有槽位的意图,也无法提取槽位中的词典信息

Open halfray opened this issue 2 years ago • 7 comments

现在行为

我的clientId为: 641801eab1fcf4001379a113

创建了意图 goods_state,查询语句设置为 查询${mbl}状态 查看提单号为{mbl}的货物状态

在云平台进行意图测试 语句"查看提单号为SNLDSHPLMF03436的货物状态",能够正确识别意图,并且提取到字典信息:SNLDSHPLMF03436 语句"查询SNLDSHPLMF03436状态",不能够正确识别意图。 语句"查看提单号为SNLDSHTLMF01849的货物状态",不能够正确识别意图。

SNLDSHPLMF03436 和 SNLDSHTLMF01849 在字典表中都有存储。

@hailiang-wang

halfray avatar Oct 11 '23 02:10 halfray

看起来是训练数据生成的有问题。 感谢反馈,今天下午开始解决,预计本周内可以解决。

hailiang-wang avatar Oct 11 '23 02:10 hailiang-wang

经过查看您的机器人之前的训练过程,也就是有问题的模型的训练数据,发现其和您定义的词表不同,导致训练出来的模型有问题。

然后,我又进行以下工作:

1)在测试环境:通过复用您提供的 clientId 的机器人的数据,重新训练,发现意图识别工作正常。

2)在 Chatopera 云服务,即我们的生产环境,对您的机器人重新训练,语料生成正常,您现在可以验证一下 clientId 641801eab1fcf4001379a113 是否正常了。

对于以上工作,是可以确定,是机器人的训练过程中,自定义词典的词条没有全部作为输入进行训练,可能存在 BUG,接下来我们会继续的深入的解决。

对于您使用的一个临时方案:每次更改自定义词典的词条,都是在上一次训练完成之后。因为现在词典多,训练时间长,可能发生两个训练同时进行,这可能是造成问题的原因。

使用以下的 Java 代码进行训练:

       this.trainMgr = new TrainMgr(botClientId,
                botClientSecret,
                "https://bot.chatopera.com");
        // 提交训练任务
        this.trainMgr.trainAll();
        // 等待训练结束
        this.trainMgr.waitForJobsDone();

hailiang-wang avatar Oct 11 '23 07:10 hailiang-wang

对于意图识别模型的训练,有另外一些提醒:

  • 正在训练的意图识别模型,不会影响已经发布的意图识别模型,也就是上一次训练的意图识别模型可以正常用,直到新的模型训练完成,之前的模型被替换。
  • 意图识别的模型正在训练中,此时触发新的训练,那么两个模型是同时训练的,如果模型较大,不能保证按照触发的顺序完成训练。从时间上,最后一次训练成功的模型是生效的。

hailiang-wang avatar Oct 11 '23 08:10 hailiang-wang

@halfray 有没有可能您之前使用的时候是这样:先发送了一些自定义词条,进行训练,然后又添加了一些自定义词条。那么第二次添加的词典,不会出现在意图识别训练的语料中,这样就会出现您遇到的问题。 在 Chatopera 云服务控制台上,此时打开聊天机器人的自定义词典,会有提示:词典不同步。

hailiang-wang avatar Oct 11 '23 10:10 hailiang-wang

@hailiang-wang 每次同步词条后都会进行再次训练

 this.trainMgr.trainAll();
   this.trainMgr.waitForJobsDone();

在 Chatopera 云服务控制台上,打开聊天机器人的自定义词典,也没有“词典不同步”的提示

halfray avatar Oct 12 '23 02:10 halfray

@hailiang-wang 每次同步词条后都会进行再次训练

 this.trainMgr.trainAll();
   this.trainMgr.waitForJobsDone();

在 Chatopera 云服务控制台上,打开聊天机器人的自定义词典,也没有“词典不同步”的提示

那么,问题就是多个模型同时训练,最终生效的模型,没有使用最新的自定义词典。这个需要 Chatopera 优化一下,让最后触发的训练生效。但是为了保证数据的一致性,您可以在批量更新自定义词典后,调用训练,并等待完成。

hailiang-wang avatar Oct 12 '23 03:10 hailiang-wang

该问题再次出现

我的clientId为: 641801eab1fcf4001379a113

创建了意图 goods_state,查询语句设置为 查看提单号为{mbl}的货物状态

在云平台进行意图测试 语句"查看提单号为SNLASHTLMF00024的货物状态",能够正确识别意图,并且提取到字典信息:SNLASHTLMF00024 语句"查看提单号为SNLESHJLMF03672的货物状态",不能够正确识别意图。

SNLASHTLMF00024 和 SNLESHJLMF03672 在字典表中都有存储。

@hailiang-wang

halfray avatar Sep 12 '24 03:09 halfray