我在我的LUIS应用程序中使用builtin.number尝试收集4位数的密码。以下是当我的输入是"一个二三四"时从LUIS返回的内容。
"实体":[ { "实体":"一个", "输入":" builtin.number", " startIndex":0, " endIndex":2, "解决方案":{ "价值":" 1" } }, { "实体":"两个", "输入":" builtin.number", " startIndex":4, " endIndex":6, "解决方案":{ "价值":" 2" } }, { "实体":"三", "输入":" builtin.number", " startIndex":8, " endIndex":12, "解决方案":{ "价值":" 3" } }, { "实体":"四", "输入":" builtin.number", " startIndex":14, " endIndex":17, "解决方案":{ "价值":" 4" } },
如您所见,它以文本和数字格式返回个别数字。在我看来,返回整个数字比单个数字更重要。有没有办法做到这一点,以便我得到' 1234'作为builtin.number的结果?
谢谢!
答案 0 :(得分:0)
仅使用LUIS无法满足您的要求。 LUIS进行标记化的方式是它由于空白而单独识别每个单词/数字。不言而喻,'onetwothreefour'也不会返回1234.
此外,用户无法在单个模型级别上修改预构建实体的识别。某些语言的识别符为open-source,欢迎来自社区的贡献。
所有这些都说,你可以通过连接数字来实现你所要求的。 JavaScript示例可能类似于以下内容:
var pin = '';
entities.forEach(entity => {
if (entity.type == 'builtin.number') {
pin += entity.resolution.value;
}
}
console.log(pin); // '1234'
之后你需要执行自己的处理/正则表达式,但我会把它留给你。 (毕竟,如果有人提供"seven eight nine ten"
?或"twenty seventeen"
?)