首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何识别和处理一句话中的多个意图

如何识别和处理一句话中的多个意图
EN

Stack Overflow用户
提问于 2018-06-13 17:33:25
回答 2查看 641关注 0票数 0

例如,我想知道属于同一实体product的两种产品的重量和价格。

惠普笔记本电脑的重量和联想笔记本电脑的价格。

在上面的发言中,我需要跟踪两个不同的问题。

1)惠普笔记本电脑的重量

其中实体是product- hp,意图是重量。

2)联想笔记本电脑价格

其中实体是product - hp,意图是价格。

我该如何在LUIS中处理这件事?

我找到了下面的链接

https://blogs.msdn.microsoft.com/benjaminperkins/2017/02/15/how-i-improved-my-chatbot/

有没有人可以指导一下如何使用node js来做到这一点。

EN

回答 2

Stack Overflow用户

发布于 2018-06-13 22:53:28

为了处理您的场景,您可以创建一个LUIS应用程序,然后针对2个意图priceweight对其进行训练。要了解如何训练意图,请查看create new intent in LUIS。您需要对product执行create an entity操作,然后使用多个发音训练LUIS应用程序。

要在node.js中使用recognize luis intent in node js,可以查看LUIS文档。

更新

附上示例luis训练的屏幕截图。

你也可以尝试使用实体的短语列表,因为这有助于更多的实体推荐。

Weight意图训练话语

Price意图训练话语

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

票数 0
EN

Stack Overflow用户

发布于 2018-06-14 14:26:33

您可以尝试基于简单的关键字映射(如and )将话语拆分为多个话语。然后向LUIS发出几个请求,以获取意图和实体。

例如。

代码语言:javascript
复制
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模型的整洁和语义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50833838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档