nlp.js 是否需要为每个新意图手动构建代码?

nle07wnf  于 4个月前  发布在  其他
关注(0)|答案(5)|浏览(48)

我们正在为WhatsApp聊天机器人构建一个自然语言处理(NLP)系统。这是一个非常动态的聊天机器人,需要通过添加新的意图和语句来进行持续的训练。为此,我们构建了一个前端(见下文)。

我们想知道,对于每一个新的意图或语句,我们是否需要去Lambda的后端代码中编写意图处理器,然后重新构建它,还是说有更自动化的方法可以让我们仅在前端完成所需的操作,然后从那里点击“构建”,并将其发布到生产环境。这里有我们遗漏的东西吗?

q5lcpyga

q5lcpyga1#

我也有同样的问题,你和我的项目唯一的区别就是我使用了"childs"选项来创建多个机器人,并且它们都不断地更新以提高性能。
你找到解决方案了吗?

cu6pst1q

cu6pst1q2#

你好!是的,我还没有收到任何反馈,但感谢你的参与。

Gabriel Azevedo @***. 在2023年1月24日21:39回复说:

我也有同样的问题,你和我的项目之间唯一的不同之处是我使用了"childs"选项来创建多个机器人,并且它们都在不断更新以提高性能。你有什么解决方案吗?——直接回复此电子邮件,查看GitHub上的<#1257 (comment)>,或者取消订阅 < https://github.com/notifications/unsubscribe-auth/AOV67K2A53VQRZVDWYYIKG3WUBY3FANCNFSM6AAAAAAT5IMT2Q >。因为你发起了这个讨论,所以你会收到这封邮件。

消息ID:***@***.***

kupeojn6

kupeojn63#

你好,@jalq1978 ,修改语料库意味着模型需要重新训练,因为这些变化可能会影响已经计算出的权重。在示例中,你可以看到机器人通常在启动时进行训练。
这并没有阻止你在响应API调用或其他适合你的用例的机制时进行训练;但是是的,你需要自己进行训练。

b4qexyjb

b4qexyjb4#

你好!我正在进行一些测试,发现当我们重置dock.js内部的容器时,系统停止识别旧意图,或者识别新意图(取决于所做的更改),至少在这里它运行正确。这是我在文件中添加的代码片段:

我在@aigloss分享他的知识关于这个工具之前就这样做过了,也许这不是正确的方法,但我相信这是解决你问题的一个开始@jalq1978。

ki0zmccv

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”操作时,自动将其删除。

相关问题