识别号码正确
问题描述:
我有一个意向,我可能会说“转让4鲍勃”,它标识为“转移为鲍勃”识别号码正确
此外,我可能会说“转让10鲍勃和其标识为”在前一个数字的末尾转移102 Bob'将字改为2。
获得API.AI正确识别这些部件的最佳方式是什么,4是不是和不是2?
答
您提到您在Google平台上使用了操作。这意味着语音识别 - 将用户所说的内容翻译成文本的过程 - 在数据进入API.AI之前发生。
您遇到的问题是Google上的操作错误地将某些数字识别为单词,例如, four
变成for
。
因为这发生在API.AI之前 - 而且与API.AI分开,您将无法修复错误识别。
下面,我将解释如何在API.AI中解决此问题。但是,也值得考虑如何让对话设计尽可能健壮,以便像这样的问题不太可能导致问题。
您可以增加稳健性的一种方法是将该数字标记为API.AI中的必需参数,以便由于识别错误而提示用户是否未检测到该数字。在这种情况下,对话框将如下所示:
User:给我四杯拿铁。
应用程序:当然,四个拿铁咖啡来了。
用户:给我拿铁。
应用程序:你想要多少?
用户:四。
应用程序:当然,四个拿铁咖啡来了。
无论如何,这里有一个解决方法,你可以用它来帮助从误认恢复:
- 在你的意图,提供这些常见的错误识别值的例子。突出显示并将它们标记为数字。
- 测试出你的意图,从控制台,你会看到“为”现在匹配与价值“数”实体“ ”。
- 在你履行网络挂接,检查参数为这个值,并使用字典将其转换为适当的数字。这里的JSON以上查询:
{ "id": "994c4e39-be49-4eae-94b0-077700ef87a3", "timestamp": "2017-08-03T19:50:26.314Z", "lang": "en", "result": { "source": "agent", "resolvedQuery": "Get me for lattes", "action": "", "actionIncomplete": false, "parameters": { "drink": "lattes", "number": "for" // NOTE: Convert this to "4" in your webhook }, "contexts": [], "metadata": { "intentId": "0e1b0e72-78ba-4c61-a4fd-a73788034de1", "webhookUsed": "false", "webhookForSlotFillingUsed": "false", "intentName": "get drink" }, "fulfillment": { "speech": "", "messages": [ { "type": 0, "speech": "" } ] }, "score": 1 }, "status": { "code": 200, "errorType": "success" }, "sessionId": "8b0891c1-50c8-43c6-99c4-8f77261acf86" }
当你说“说”,你的意思是你正在使用API.AI的顶部语音识别(与谷歌一起助理,例如)? –
我们正在使用谷歌首页,将其传递给API.AI 另一个例子是,如果我们点咖啡,我们说'给我4个拿铁咖啡'它会回来拿我拿铁 我们尝试了一些系统实体,如使四个@ sys.number和拿铁和一个自定义的实体,但没有工作 也尝试sys.unit信息'4拿铁'周围,希望它会提取4作为金额和拿铁作为单位,但也没有运气 – Pagrate
什么是建议的方式来提取一个金额和另一个值作为一个单位,而不是传统的单位,如重量或长度的单位? 就像你会如何解析不是传统单位的“买4把雨伞”或“买30个苹果” – Pagrate