the*_*iko 30 amazon alexa-skills-kit amazon-echo
我正在玩Alexa技能套件(用于Amazon Echo),并希望创建一种将意图发送到AWS Lambda函数的技能,该函数只会向我发送电子邮件.
示例话语将是这样的:
MemoIntent take a memo {myMemo}
MemoIntent to take a memo {myMemo}
MemoIntent send a memo {myMemo}
Run Code Online (Sandbox Code Playgroud)
这样我就可以说"Alexa,请我的秘书拿一份备忘录,提醒我今天回家的路上去商店"然后会收到我的Lambda函数的电子邮件说:"提醒我去我今天回家的路上."
这个myMemo插槽是自由形式的 - 此时只需要一两句话,但是我没有在文档中找到很多关于如何为这样的东西编写模式的帮助.我目前最好的猜测是:
错误:您的请求出现问题:未知的广告位名称"{myMemo}".发生在样本'MemoIntent中,在第1行上记下备忘录{myMemo}'.
我正在使用文档不鼓励的AMAZON.LITERAL插槽类型,但它也没有提供任何关于如何进行此操作的建议.而且,就像我提到的那样,它失败了.
这是失败的架构:
{
"intents": [
{
"intent": "MemoIntent",
"slots": [
{
"name": "myMemo",
"type": "AMAZON.LITERAL"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
Jus*_*zon 24
文字与其他插槽类型不同,因为您必须提供示例话语中的培训,如官方文档中所述:https: //developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa -skills-KIT-相互作用模型参考
示例话语将用户可以与您定义的意图对话的短语进行映射.它们使用以下格式在纯文本文件中写为行:
IntentName this is a sample utterance with no slots
IntentName this is a sample utterance containing a {SlotName}
IntentName this is a sample utterance containing a {SlotName} and {AnotherSlotName}
Run Code Online (Sandbox Code Playgroud)
请注意,上述格式适用于除AMAZON.LITERAL之外的所有插槽类型.对于AMAZON.LITERAL,您还需要指定一个示例槽值:
IntentName this is a sample utterance containing a {slot value|SlotName} using LITERAL
Run Code Online (Sandbox Code Playgroud)
或者,使用自定义插槽可以在定义大量样本自定义插槽值后提供插槽.在这种情况下,您将创建一个名为myMemo的新自定义插槽,其中包含自定义插槽名称的类型,例如MY_MEMO.您的自定义插槽值将填充潜在值(这些值不是它将接收的唯一值),例如:
walk the dog
eat more bacon
go to the store on the way home
Run Code Online (Sandbox Code Playgroud)
我们目前正在开发一个人工智能(用于 Alexa),它应该能够回答各种各样的问题。用户能够说出应在后端分析的复杂问题,这一点非常重要。如果 Alexa 由于有限的话语和插槽类型而提前放弃它们,我们将无法提供此类服务。
目前,我们正在试验以下方法。(请记住,我们的实验基于德语。其他语言的行为可能会有所不同。)
1. 每个词类的自定义槽类型
我们为以下词类定义了自定义槽类型:
2. 句子结构的示例话语
然后我们为具有示例话语的句子定义了可能的结构:
QuestionIntent {Interrogation}
QuestionIntent {Item}
QuestionIntent {Verb}
QuestionIntent {Adjective}
QuestionIntent {Interrogation} {Verb} {Item}
QuestionIntent {Interrogation} {Verb} {Item} {Adjective}
QuestionIntent {Interrogation} {Verb} {Pronoun} {Item}
QuestionIntent {Interrogation} {Verb} {Pronoun} {Pronoun} {Item}
QuestionIntent {Interrogation} {Verb} {Pronoun} {Item} {Preposition} {Item}
QuestionIntent {Interrogation} {Verb} {Adjective} {Item}
QuestionIntent {Interrogation} {Verb} {Pronoun} {Adjective} {Item}
QuestionIntent {Interrogation} {Item} {Verb}
QuestionIntent {Interrogation} {Item} {Verb} {Adjective}
QuestionIntent {Interrogation} {Item} {Verb} {Pronoun} {Adjective}
QuestionIntent {Item} {Verb} {Interrogation}
QuestionIntent {Verb} {Item} {Verb}
QuestionIntent {Verb} {Adjective} {Item} {Verb}
Run Code Online (Sandbox Code Playgroud)
3.后端NLP分析
然后我们对后端提交的词做NLP分析。接收到的数据如下所示:
"intent": {
"name": "QuestionIntent",
"slots": {
"Item": {
"name": "Item",
"value": "darknet"
},
"Preposition": {
"name": "Preposition"
},
"Adjective": {
"name": "Adjective"
},
"Verb": {
"name": "Verb",
"value": "is"
},
"Interrogation": {
"name": "Interrogation",
"value": "what"
},
"Pronoun": {
"name": "Pronoun",
"value": "the"
}
}
}
Run Code Online (Sandbox Code Playgroud)
有些词可能会丢失,有些词可能会听错。在这种情况下,我们记住早期交流中的主题并用这些“填充”缺失的单词。例如:What is {it}?⇒What is {Darknet}?
我们正在试验一个广泛的插槽类型列表。但这会增加听错的风险(英语中的一个很好的例子是write and right,幸运的是它们没有被分配到同一个词类)。所以我们转向了一个非常狭窄的方法。这些列表仅包含 AI 可以处理并存储在知识库中的单词。例如,项目列表不包含单词pony或unicorn。我们希望这会产生更好的结果(不那么令人困惑的答案)。
没有用话语结构定义的复杂句子使用起来非常混乱。例如,如果一个句子包含 2 个以上的动词(这可能是建立时态所必需的)。但是到目前为止,只要用户的行为有一定程度的礼貌,我们的方法就会产生具有良好准确性的结果。
但最终:不幸的是,目前无法口述具有无限量不同单词和句子结构的备忘录之类的内容。
| 归档时间: |
|
| 查看次数: |
19031 次 |
| 最近记录: |