我们正在为WhatsApp聊天机器人构建一个自然语言处理(NLP)系统。这是一个非常动态的聊天机器人,需要通过添加新的意图和语句来进行持续的训练。为此,我们构建了一个前端(见下文)。
我们想知道,对于每一个新的意图或语句,我们是否需要去Lambda的后端代码中编写意图处理器,然后重新构建它,还是说有更自动化的方法可以让我们仅在前端完成所需的操作,然后从那里点击“构建”,并将其发布到生产环境。这里有我们遗漏的东西吗?
q5lcpyga1#
我也有同样的问题,你和我的项目唯一的区别就是我使用了"childs"选项来创建多个机器人,并且它们都不断地更新以提高性能。你找到解决方案了吗?
cu6pst1q2#
你好!是的,我还没有收到任何反馈,但感谢你的参与。
Gabriel Azevedo @***. 在2023年1月24日21:39回复说:
我也有同样的问题,你和我的项目之间唯一的不同之处是我使用了"childs"选项来创建多个机器人,并且它们都在不断更新以提高性能。你有什么解决方案吗?——直接回复此电子邮件,查看GitHub上的<#1257 (comment)>,或者取消订阅 < https://github.com/notifications/unsubscribe-auth/AOV67K2A53VQRZVDWYYIKG3WUBY3FANCNFSM6AAAAAAT5IMT2Q >。因为你发起了这个讨论,所以你会收到这封邮件。
消息ID:***@***.***
kupeojn63#
你好,@jalq1978 ,修改语料库意味着模型需要重新训练,因为这些变化可能会影响已经计算出的权重。在示例中,你可以看到机器人通常在启动时进行训练。这并没有阻止你在响应API调用或其他适合你的用例的机制时进行训练;但是是的,你需要自己进行训练。
b4qexyjb4#
你好!我正在进行一些测试,发现当我们重置dock.js内部的容器时,系统停止识别旧意图,或者识别新意图(取决于所做的更改),至少在这里它运行正确。这是我在文件中添加的代码片段:
我在@aigloss分享他的知识关于这个工具之前就这样做过了,也许这不是正确的方法,但我相信这是解决你问题的一个开始@jalq1978。
ki0zmccv5#
你好,根据位于这里的代码:https://github.com/jesus-seijas-sp/nlpjs-examples/tree/master/01.quickstart/03.config可以通过以下方式实现:
const { dockStart } = require('@nlpjs/basic'); (async () => { const dock = await dockStart(); const nlp = dock.get('nlp'); await nlp.train(); let response = await nlp.process('en', 'Who are you'); console.log(response.intent, response.score); response = await nlp.process('en', 'quantum physics'); console.log(response.intent, response.score); delete nlp.nluManager.domainManagers.en.domains.master_domain.intentsArr; nlp.addDocument('en', 'what is quantum physics', 'quantum.physics'); nlp.addDocument('en', 'tell me about quantum physics', 'quantum.physics'); await nlp.train(); response = await nlp.process('en', 'Who are you'); console.log(response.intent, response.score); response = await nlp.process('en', 'quantum physics'); console.log(response.intent, response.score); })();
它给出了这样的输出:
agent.acquaintance 1 None 1 agent.acquaintance 1 quantum.physics 1
在这里要做的“奇怪”的事情是
delete nlp.nluManager.domainManagers.en.domains.master_domain.intentsArr;
这个intentsArr会被重新计算,以避免每次处理一个话语时都要计算Object.keys。但是,如果你添加了新的意图,并且这个数组已经计算过了,那么你就必须手动删除它。我认为更好的方法是将其视为一个错误,当有人执行“addDocument”操作时,自动将其删除。
5条答案
按热度按时间q5lcpyga1#
我也有同样的问题,你和我的项目唯一的区别就是我使用了"childs"选项来创建多个机器人,并且它们都不断地更新以提高性能。
你找到解决方案了吗?
cu6pst1q2#
你好!是的,我还没有收到任何反馈,但感谢你的参与。
Gabriel Azevedo @***. 在2023年1月24日21:39回复说:
我也有同样的问题,你和我的项目之间唯一的不同之处是我使用了"childs"选项来创建多个机器人,并且它们都在不断更新以提高性能。你有什么解决方案吗?——直接回复此电子邮件,查看GitHub上的<#1257 (comment)>,或者取消订阅 < https://github.com/notifications/unsubscribe-auth/AOV67K2A53VQRZVDWYYIKG3WUBY3FANCNFSM6AAAAAAT5IMT2Q >。因为你发起了这个讨论,所以你会收到这封邮件。
消息ID:***@***.***
kupeojn63#
你好,@jalq1978 ,修改语料库意味着模型需要重新训练,因为这些变化可能会影响已经计算出的权重。在示例中,你可以看到机器人通常在启动时进行训练。
这并没有阻止你在响应API调用或其他适合你的用例的机制时进行训练;但是是的,你需要自己进行训练。
b4qexyjb4#
你好!我正在进行一些测试,发现当我们重置dock.js内部的容器时,系统停止识别旧意图,或者识别新意图(取决于所做的更改),至少在这里它运行正确。这是我在文件中添加的代码片段:
我在@aigloss分享他的知识关于这个工具之前就这样做过了,也许这不是正确的方法,但我相信这是解决你问题的一个开始@jalq1978。
ki0zmccv5#
你好,
根据位于这里的代码:https://github.com/jesus-seijas-sp/nlpjs-examples/tree/master/01.quickstart/03.config
可以通过以下方式实现:
它给出了这样的输出:
在这里要做的“奇怪”的事情是
这个intentsArr会被重新计算,以避免每次处理一个话语时都要计算Object.keys。但是,如果你添加了新的意图,并且这个数组已经计算过了,那么你就必须手动删除它。我认为更好的方法是将其视为一个错误,当有人执行“addDocument”操作时,自动将其删除。