是否有可能在任何 NLU(例如 RASA 或 Lex)中获得实体的属性字符串?这是一个例子:“请务必提醒我完成项目”
假设我将提醒我作为正则表达式 - 我如何提取后者?我说的是 NLU 视角(而不是天真的字符串操作)。
想要像 { Intent:"remind_me" Value:"about getting the project done" } 这样的输出
是否有可能在任何 NLU(例如 RASA 或 Lex)中获得实体的属性字符串?这是一个例子:“请务必提醒我完成项目”
假设我将提醒我作为正则表达式 - 我如何提取后者?我说的是 NLU 视角(而不是天真的字符串操作)。
想要像 { Intent:"remind_me" Value:"about getting the project done" } 这样的输出
以下是如何在 Lex 中执行此操作的描述。
从你的例子:
用户:“请务必提醒我完成项目”
这是用户输入,也称为Utterance。
首先,您创建一个Intent。你可以像以前一样命名它:remind_me
然后,您向 Lex 提供intent-utterances或用户会说以触发该意图的短语。也许,像:
"remember this for me"
"make a reminder"
"can you remind me about something"
"please remind me"
这些只会触发意图,然后您可以要求用户记住要记住的信息。
您想要存储在 Lex 中的任何值都称为Slot Value,因为它保存在Slot中,这基本上只是 Alexa 和 Lex 对“变量”的称呼。
您可以将插槽命名为:reminder
如果您的意图被触发,那么您会引出 Slot并询问用户:
“好吧,你想让我提醒你什么?”
您通过提供您认为用户可能会说的所有话语变体来“教”Lex 要听什么,并且只需将SlotName放在花括号{}中,在他们可能说出您的单词或短语的地方想存储在Slot中。
"remind me about {reminder}"
"please remember {reminder}"
"make sure to remind me {reminder}"
这些甚至可以是意图表达,因此您reminder
无需通过问题来获取价值。
然后 Lex 将准确地为您提供您正在寻找的内容以及更多内容,我将简化 Lex 为您创建的 JSON:
}
"currentIntent": {
"name": "remind-me",
"slots": {
"reminder": "about getting the project done"
}
},
"inputTranscript": "please make sure to remind me about getting the project done"
}
要查看完整格式,请参阅Lex Lambda 函数输入事件和响应格式
请注意,Lex 甚至在inputTranscript
. 这对于进行自己的解析和验证非常有用。