在会话中间随时处理实体的正确方法

时间:2017-07-24 16:46:13

标签: botframework luis

我最近在使用API​​ AI / Google家庭开发方面获得了一些经验后,开始使用LUIS和botframework。

在下面的示例中,我将用作示例(来自https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-dialog-waterfall),例示了与用户的逐步交互。首先,它要求一个日期,然后是一个数字,然后是保留的名称,依此类推。

var bot = new builder.UniversalBot(connector, [
function (session) {
    session.send("Welcome to the dinner reservation.");
    builder.Prompts.time(session, "Please provide a reservation date and time (e.g.: June 6th at 5pm)");
},
function (session, results) {
    session.dialogData.reservationDate = builder.EntityRecognizer.resolveTime([results.response]);
    builder.Prompts.text(session, "How many people are in your party?");
},
function (session, results) {
    session.dialogData.partySize = results.response;
    builder.Prompts.text(session, "Who's name will this reservation be under?");
},
function (session, results) {
    session.dialogData.reservationName = results.response;

    // Process request and display reservation details
    session.send("Reservation confirmed. Reservation details: <br/>Date/Time: %s <br/>Party size: %s <br/>Reservation name: %s",
        session.dialogData.reservationDate, session.dialogData.partySize, session.dialogData.reservationName);
    session.endDialog();
}]);

在我的代码中,我有一个类似的多参数对话框,但我希望允许用户在其拥有的任何响应中同时回答多个信息。例如,在提供预订日期之后,用户可以说“为10人保留罗伯特”,因此人数和回复名称同时给予。

为了识别这个文本实体,我想我必须调用LUIS并从会话上下文中解析实体。我注意到bot对象有一个我觉得可以用的识别方法。

我的问题是如何组织代码结构以及LUIS话语和实体?现在我有一些实体和几个话语样本的意图,但是如果我发送这个“部分”用户句子,我认为它不会被映射到相同的意图,并且可能无法识别具有这样小句子的实体。

我应该如何处理?我是否需要为这些部分句子提供意图样本,这些部分句子可能只包含一些实体?

由于

1 个答案:

答案 0 :(得分:0)

是的,您应该为您想要识别的所有话语提供样本。不是一百万个样本,而是为了让一切都受到培训。

然后,您可能希望接下来要解决的另一个问题是询问话语中缺少的那些实体的信息。您可以手动执行此操作,也可以更进一步浏览LUIS Action Binding库。