Я настоятельно рекомендую вам создать не просто бота, а помощника, используя сервисный инструмент для понимания языка, такой как Microsoft LUIS, который является частью Microsoft Cognitive Services.
Затем вы можете комбинировать этот инструмент обработки естественного языка с ботом SDK, таким как MicroSoft Botframework, упомянутым выше, чтобы вы могли легко запускать запросы на естественном языке, анализировать ответ в диалоговом окне в entities
и intents
и предоставлять ответ на естественном языке.
Например, проанализированный ответ диалога будет иметь что-то вроде этого json
{
"intent": "MusicIntent",
"score": 0.0006564476,
"actions": [
{
"triggered": false,
"name": "MusicIntent",
"parameters": [
{
"name": "ArtistName",
"required": false,
"value": [
{
"entity": "queen",
"type": "ArtistName",
"score": 0.9402311
}
]
}
]
}
]
}
где вы можете видеть, что этот MusicIntent
имеет сущность queen
типа ArtistName
, которая была распознана системой понимания языка.
то есть, используя BotFramework
как делать
var artistName=BotBuilder.EntityRecognizer.findEntity(args.entities, Entity.Type.ArtistName);
Хорошая современная среда помощника бота должна поддерживать по крайней мере multi-turn dialog mode
, то есть диалог, в котором происходит взаимодействие между двумя сторонами, например
>User:Which artist plays Stand By Me?
(intents=SongIntent, songEntity=`Stand By Me`)
>Assistant:The song `Stand by Me` was played by several artists. Do you mean the first recording?
>User:Yes, that one!
(intents=YesIntent)
>Assistant: The first recording was by `Ben E. King` in 1962. Do you want to play it?
>(User)Which is the first album composed by Ben E.King?
(intents=MusicIntent, entity:ArtistName)
>(Assistant) The first album by Ben E.King was "Double Decker" in 1960.
>(User) Thank you!
(intents=Thankyou)
>(Assistant)
You are welcome!
Некоторые фреймворки ботов используют WaterFall model
для обработки такого взаимодействия языковых моделей:
self.dialog.on(Intent.Type.MusicIntent,
[
// Waterfall step 1
function (session, args, next)
{
// prompts something to the user...
BotBuilder.Prompts.text(session, msg);
},
// waterfall step 2
function (session, args, next)
{
// get the response
var response=args.response;
// do something...
next();//trigger next interaction
},
// waterfall step 3 (last)
function (session, args)
{
}
]);
Другие особенности, которые следует учитывать:
- поддержка нескольких языков и автоматических переводов;
- Интеграция со сторонними сервисами (Slack, Messenger, Telegram, Skype и т. д.);
- мультимедиа (изображения, аудио, воспроизведение видео и т. д.);
- безопасность (криптография);
- кроссплатформенный SDK;
person
loretoparisi
schedule
17.10.2016