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

如何将多对象JSON聊天机器人意图文件转换为按tag分组的patterns二维列表

实现方案

以下用Python为例实现需求,全程保留tag序号对应关系:

  • 首先加载JSON文件,遍历intents数组时通过枚举获取tag的序号索引
  • 直接将每个intent下的patterns列表作为二维列表的一行元素存入,即可满足你要的下标对应规则
  • 额外生成tag序号映射表,方便后续统计匹配次数时快速对应tag名称

示例代码

import json

# 加载JSON文件
with open("你的意图文件路径.json", "r", encoding="utf-8") as f:
    intent_data = json.load(f)

# 初始化结果变量
pattern_2d = []  # 你需要的二维列表
tag_index_map = {}  # 存tag序号和tag名的对应关系:{0: "indoor", 1: "outdoor"}
pattern_tag_mapping = []  # 可选:所有pattern对应的tag序号一维列表,匹配时直接取索引即可

for tag_idx, intent in enumerate(intent_data["intents"]):
    # 把当前tag的patterns加入二维列表
    pattern_2d.append(intent["patterns"])
    # 记录tag序号和名称的对应
    tag_index_map[tag_idx] = intent["tag"]
    # 可选:生成每个pattern对应的tag序号列表
    for _ in intent["patterns"]:
        pattern_tag_mapping.append(tag_idx)

输出示例

以你给出的样例JSON为例,运行后各变量结果如下:

  • pattern_2d结果:[["indoors", "windows", "inside", "shut", "door"], ["outdoors", "nature", "wind", "sun"]],完全符合你要的[0][0]对应第一个tag第一个pattern的规则
  • tag_index_map结果:{0: "indoor", 1: "outdoor"},后续统计到某序号匹配次数时,直接查表就能拿到对应的tag名称
  • 可选的pattern_tag_mapping结果:[0,0,0,0,0,1,1,1,1],后续做全局匹配时,匹配到第N个pattern,直接取pattern_tag_mapping[N]就能知道属于哪个tag

如果你用其他语言实现,逻辑完全一致:遍历intents数组时记录当前遍历的索引作为tag序号,把每个intent的patterns作为二维数组的子元素存入即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 15:09:00