2017-12-10 9 views

답변

1

백그라운드에서 LUIS를 사용합니까?

아니요,하지만 Combining Search, QnA Maker, and/or LUIS 수 있습니다.

이 문서에 따르면 LUIS와 함께 QnA를 구현하는 데 다음 세 가지 방법이 제안됩니다.

  1. 전화 모두 같은 시간에 문의 글 메이커와 루이스, 특정 임계 값의 점수를 반환하는 첫 번째 정보를 사용하여 사용자에게 응답합니다.

  2. 먼저 LUIS를 호출하고 특정 임계 값 스코어, 즉 "없음"인 텐트가 충족되지 않으면 QnA Maker를 호출하십시오. 또는 QnA Maker 용 LUIS 인 텐트를 작성하고 LUIS 모델에 "QnAIntent"에 매핑되는 예제 QnA 질문을 제공하십시오.

  3. QnA Maker를 먼저 호출하고 특정 임계점을 만족하는 응답이없는 경우 LUIS를 호출하십시오.

여기에 나는 세 번째 방법은 C#으로 쓴 단지에 대한 코드 샘플을 게시 할 수 있습니다. 첫째

MessagesController 전화에서 문의 글 메이커 : 대답이 일치하는 경우 MyQnADialog에서

if (activity.Type == ActivityTypes.Message) 
{ 
    await Conversation.SendAsync(activity,() => new Dialogs.MyQnADialog()); 
} 

이되지 않을 경우, 전화, 참조 루이스 :

[QnAMakerAttribute("QnASubscriptionKey", "QnAKnowledgebaseId", "No Answer in Knowledgebase, seraching in Luis...", 0.5)] 
[Serializable] 
public class MyQnADialog : QnAMakerDialog 
{ 

    protected override async Task DefaultWaitNextMessageAsync(IDialogContext context, IMessageActivity message, QnAMakerResults result) 
    { 
     if (result.Answers.Count == 0) 
     { 
      await context.Forward(new MyLuisDialog(), this.ResumeAfterNewOrderDialog, message, CancellationToken.None); 
     } 
     context.Wait(this.MessageReceivedAsync); 
     //return base.DefaultWaitNextMessageAsync(context, message, result); 
    } 
    private async Task ResumeAfterNewOrderDialog(IDialogContext context, IAwaitable<object> result) 
    { 
     var resultfromnewdialog = await result; 
     context.Wait(this.MessageReceivedAsync); 
    } 

} 
+0

우리가 문의 글과 루이스를 사용하는 경우, 다음 공급 수업을 두 번해야합니다. QnA에서 한 번, LUIS에서 다시 한 번? 내 이해를 바로 잡으십시오. – ZEE

+1

@ZEE, 그들은 서로 다른 서비스입니다. 동일한 시간에 두 서비스에 직접 메시지를 보내고 결과를 확인하거나 서로 이동할 수 있습니다. 예를 들어 QnA의 사용자 쿼리와 대답이있는 경우 LUIS를 더 이상 호출 할 필요가 없습니다. –

+0

분명한 답변을 보내 주셔서 감사합니다.하지만 제 걱정거리는 두 번 훈련해야하는지, 즉 QnA에 한 번, LUIS에 다시 훈련해야하는지 여부입니다. 따라서 첫 번째 옵션이 특정 점수에 도달하면 2 번째 전화를 진행합니다. – ZEE