例如,我想知道属于同一实体product的两种产品的重量和价格。
惠普笔记本电脑的重量和联想笔记本电脑的价格。
在上面的发言中,我需要跟踪两个不同的问题。
1)惠普笔记本电脑的重量
其中实体是product- hp,意图是重量。
2)联想笔记本电脑价格
其中实体是product - hp,意图是价格。
我该如何在LUIS中处理这件事?
我找到了下面的链接
https://blogs.msdn.microsoft.com/benjaminperkins/2017/02/15/how-i-improved-my-chatbot/
有没有人可以指导一下如何使用node js来做到这一点。
发布于 2018-06-13 22:53:28
为了处理您的场景,您可以创建一个LUIS应用程序,然后针对2个意图price和weight对其进行训练。要了解如何训练意图,请查看create new intent in LUIS。您需要对product执行create an entity操作,然后使用多个发音训练LUIS应用程序。
要在node.js中使用recognize luis intent in node js,可以查看LUIS文档。
更新
附上示例luis训练的屏幕截图。
你也可以尝试使用实体的短语列表,因为这有助于更多的实体推荐。

Weight意图训练话语

Price意图训练话语

样本训练也为未训练的话语显示了正确的意图和实体

发布于 2018-06-14 14:26:33
您可以尝试基于简单的关键字映射(如and )将话语拆分为多个话语。然后向LUIS发出几个请求,以获取意图和实体。
例如。
bot.dialog('multipIntents', [
(session, args, next) => {
let utterances = session.message.text.toLowerCase().split('and');
session.conversationData.intents = [];
for (let u of utterances) {
console.log(u);
const luisAppUrl = 'https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/16c5d360-63e6-4750-824d-e8051140cade?subscription-key=0b3c2b6dde5447a393234fc592235d67&verbose=true&timezoneOffset=0&q=';
builder.LuisRecognizer.recognize(u, luisAppUrl, ((err, intents, entities) => {
if (!err) {
let entity;
switch (intents[0].intent) {
case 'Calendar.Add':
if (entities) {
entity = builder.EntityRecognizer.findEntity(entities, 'builtin.datetimeV2.date');
}
session.conversationData.intents.push({
intent: 'Calendar.Add',
entities: [entity]
})
break;
case 'Calendar.Find':
if (entities) {
entity = builder.EntityRecognizer.findEntity(entities, 'builtin.datetimeV2.date');
}
session.conversationData.intents.push({
intent: 'Calendar.Find',
entities: [entity]
})
break;
}
}
}))
}
//further todo
}
])为此,我们可以保持LUIS模型的整洁和语义。
https://stackoverflow.com/questions/50833838
复制相似问题