You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bot Framework Composer v2.1.2中实现字符串转整数

Bot Framework Composer(v2.1.2)自然语言数词转整数实现方案

问题核心原因

转换失败和内置转换功能缺失无关:

  • Composer内置Convert分类下的所有功能、原生int()方法,仅支持阿拉伯数字格式的字符串(比如"2")转整数,不支持英文拼写格式的数词(比如"Two")直接做类型转换,直接对拼写数词调用int()必然返回Null。
  • LUIS预构建数字实体默认返回的text字段是识别到的原始文本(也就是字符串格式的"Two"),但实体本身自带预解析的数值结果,不需要额外做字符串转换。

可直接落地的实现方法

  • 方法1:直接读取LUIS实体的预解析结果,零额外转换代码
    识别到数字实体后,不要取实体的原始文本字段,直接读取解析值字段即可拿到整数类型结果,取值表达式为:
    @turn.recognized.entities.number[0].resolution.value
    
    这个字段是LUIS识别时自动生成的结构化结果,不管原始文本是阿拉伯数字"2"还是拼写数词"Two",都会返回对应的整数2,不需要额外做拆分、转换操作。

    注意:如果识别到的是序数词、分数等其他数字类型,resolution下也会返回对应格式的标准数值,直接取用即可。

  • 方法2:自定义数词映射逻辑,适配已经拆分拿到数词文本的场景
    如果你已经通过拆分数组拿到了"Two"这类数词字符串,可以通过自定义映射完成转换:
    1. 针对业务需要的数字范围,在Composer自定义函数中添加数词到整数的映射表,参考示例:
      const wordToNumMap = {
        "one": 1, "two": 2, "three": 3, "four": 4, "five": 5,
        "six": 6, "seven": 7, "eight": 8, "nine": 9, "ten": 10
        // 可按需补充几十、上百等更大数值的映射
      }
      
    2. 调用时先把捕获到的数词字符串统一转为小写,再查映射表即可拿到整数,调用表达式示例:
      wordToNumMap[toLower(capturedNumberWord)]
      
    3. 如果需要支持复杂组合数词(比如twenty three、one hundred and five这类),可以直接在Composer的自定义运行时中引入words-to-numbers开源工具包,调用内置方法即可完成全场景转换,不需要手动维护全量映射表。

补充说明

Composer内置的类型转换工具仅处理标准格式数据的类型强转,不具备自然语言语义解析能力,所以你在Convert分类下找不到数词转数字的选项是正常设计,这类语义解析逻辑要么依赖上游认知服务(LUIS)的预解析结果,要么通过自定义逻辑实现。

内容的提问来源于stack exchange,提问作者GoonerJon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 00:42:21