Как определить и обработать несколько намерений в одном высказывании - PullRequest
0 голосов
/ 13 июня 2018

Например, я хочу узнать о весе и цене двух продуктов, принадлежащих одному и тому же объекту, называемому продуктом

вес ноутбука hp и цена ноутбука lenovo.

В приведенном выше высказыванииесть 2 разных вопроса, которые мне нужно отследить.

1) вес ноутбука hp

, где сущность - это продукт hp, а намерение - вес.

2) цена ноутбука lenovo

, где сущность является продуктом - hp, а намерение - цена.

Как я могу справиться с этим в LUIS?

Я нашел ссылку ниже

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

Может кто-нибудь подсказать, как это сделать, используя узел js.

Ответы [ 2 ]

0 голосов
/ 14 июня 2018

Вы можете попытаться разделить свою базу высказываний на основе простого сопоставления ключевых слов, например and, или использовать пакеты NPL, такие как https://github.com/NaturalNode/natural, на несколько высказываний.А затем сделайте несколько запросов к LUIS для получения намерений и сущностей.

EG

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 голосов
/ 13 июня 2018

Для обработки вашего сценария вы можете создать приложение LUIS и затем обучить его 2 намерениям price и weight.Чтобы узнать, как тренировать намерения, взгляните на создать новое намерение в LUIS .И вам нужно создать сущность product, а затем обучить приложение LUIS нескольким высказываниям.

Для использования LUIS в node.js вы можете взглянуть на распознать намерение Луиса в документации js .

Обновить

Прикрепить скриншотыпримеры тренингов Луиса.

Вы также можете попробовать использовать список фраз для сущностей, поскольку это помогает в дополнительных рекомендациях по сущностям.enter image description here

Weight высказывания с намеренным обучением

enter image description here

1029 *

Price высказывания с намеренным обучением

enter image description here

Примеры тренингов с указанием правильных намерений и сущностей для неподготовленных высказываний

enter image description here

...