Microsoft LUIS builtin.number

时间:2017-08-21 20:05:50

标签: luis

我在我的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的结果?

谢谢!

1 个答案:

答案 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"?)

,该怎么办?