Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
halfray opened this issue Oct 11, 2023 · 7 comments
Assignees
Labels
bug Something isn't working

Comments

@halfray
Copy link

halfray commented Oct 11, 2023

现在行为

我的clientId为: 641801eab1fcf4001379a113

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

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

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

@hailiang-wang

@halfray halfray added the bug Something isn't working label Oct 11, 2023
@hailiang-wang
Copy link
Member

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

@hailiang-wang
Copy link
Member

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

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

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
Copy link
Member

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

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

@hailiang-wang
Copy link
Member

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

@halfray
Copy link
Author

halfray commented Oct 12, 2023

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

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

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

@hailiang-wang
Copy link
Member

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

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

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

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

@halfray
Copy link
Author

halfray commented Sep 12, 2024

该问题再次出现

我的clientId为: 641801eab1fcf4001379a113

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

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

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

@hailiang-wang

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants