使用调度程序在“LUIS”和“QNA Makers”中重复相同关键字时如何训练 NLP

Posted

技术标签:

【中文标题】使用调度程序在“LUIS”和“QNA Makers”中重复相同关键字时如何训练 NLP【英文标题】:How to train a NLP when there is same key word is repeating in "LUIS" and "QNA Makers" using dispatcher 【发布时间】:2020-02-25 14:33:13 【问题描述】:

以下是我的问题: 当我问问题 2 时,我在 LUIS 和 QnA 制造商中训练了如下示例话语,它正在从 LUIS 中获得最高得分意图,我如何在这些类型的场景中训练 LUIS 和 QnA? 路易斯发言: 1.我的费用状况如何 等等

QNA 发言: 2.如何为我的费用提出问题 等等

【问题讨论】:

【参考方案1】:

在不了解您的应用的情况下,我认为问题在于您如何使用 LUIS 和 QnA。 LUIS 应该用于根据话语检测用户的意图。在这种情况下,两个示例话语都是关于“费用”的。如果模型的结构和训练正确,LUIS 会检测到这一点并返回“费用”意图。

返回的意图将指示将实际问题引导至哪个知识库,从而返回对所提出问题的响应。

至于流程,您可以通过多种方式构建它。主要是为了秩序。

您可以将其构建为一系列瀑布步骤。第一步是解析 LUIS 中的响应,第二步是根据 LUIS 响应从 QnA 返回答案。在此示例中,我说“你好”,LUIS 将其识别为“问候”意图。当该意图被返回并匹配时,该语句被传递给 QnA,它返回“问题”响应:'Hi!'。

希望有帮助!

async luisStep ( stepContext ) 
  if ( stepContext.context.activity.text ) 
    const stepResults = stepContext.context.activity.text.toLowerCase();

    await stepContext.context.sendActivity( `You said: $ stepResults ` );

    const recognizerResult = await this.recognizer.recognize( stepContext.context );
    let intent = await LuisRecognizer.topIntent( recognizerResult );

  if ( intent ) 
      await stepContext.context.sendActivity( `Luis recognized: $ intent ` );
      return stepContext.next( recognizerResult );
     else 
      await stepContext.context.sendActivity( 'No LUIS intent was found.' );
      return stepContext.next( recognizerResult );
    
   else 
    await stepContext.context.sendActivity( 'Moving to the QnA step' );
    return await stepContext.next();
  


async qnaStep ( stepContext ) 
  const resultDetails = stepContext.result;
  const topScoringIntent = stepContext.result.luisResult.topScoringIntent;

  if ( topScoringIntent.intent === 'Greeting' ) 
    let qnaResults = await this.qnaMaker.getAnswers(stepContext.context);

    if(qnaResults[0]) 
      stepContext.context.sendActivity(`QnA response: $qnaResults[0].answer`)
    

    return  status: DialogTurnStatus.waiting ;
   else 
    await stepContext.context.sendActivity( 'There was an error retrieving QnA results.' );
  
  return await stepContext.next();

【讨论】:

以上是关于使用调度程序在“LUIS”和“QNA Makers”中重复相同关键字时如何训练 NLP的主要内容,如果未能解决你的问题,请参考以下文章

Cmposer LUIS 错误 getaddrinfo ENOTFOUND(在公司网络中)

微软语义理解服务LUIS 使用教程

如何在Microsoft的LUIS上使用多个意图

Luis创建与发布

luis 模型和团队对同一句话的不同意图,如何解决?

如何在现有 QnA 机器人中添加 LUIS?