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

如何在Python中获取MS LUIS完整响应以读取子实体?

在Python中获取LUIS自定义机器学习实体的子实体

当使用Bot Builder Python的LUIS Recognizer无法直接获取子实体时,可通过以下两种方式读取:

方法一:直接访问LUIS原始响应

LUIS的原始响应包含完整的实体层级结构,你可以从recognizer_result.raw属性中提取子实体,示例代码如下:

from botbuilder.ai.luis import LuisRecognizer, LuisApplication

# 初始化LUIS应用与识别器
luis_app = LuisApplication("<你的LUIS应用ID>", "<你的订阅密钥>", "<你的LUIS端点>")
recognizer = LuisRecognizer(luis_app)

async def recognize_entities(turn_context):
    recognizer_result = await recognizer.recognize(turn_context)
    # 遍历原始响应中的实体
    for entity in recognizer_result.raw.get("entities", []):
        # 检查是否存在子实体
        if "children" in entity:
            for child_entity in entity["children"]:
                child_name = child_entity["type"]
                child_value = child_entity["entity"]
                print(f"子实体:{child_name},值:{child_value}")

方法二:递归解析实体结构

如果需要更规整的封装,可以自定义递归函数,遍历所有层级的实体(包括子实体):

def extract_all_entities(entities):
    all_entities = []
    for entity in entities:
        # 添加当前实体
        all_entities.append({
            "type": entity["type"],
            "value": entity["entity"],
            "score": entity.get("score")
        })
        # 递归处理子实体
        if "children" in entity:
            all_entities.extend(extract_all_entities(entity["children"]))
    return all_entities

# 使用示例
async def get_all_entities(turn_context):
    recognizer_result = await recognizer.recognize(turn_context)
    raw_entities = recognizer_result.raw.get("entities", [])
    all_entities = extract_all_entities(raw_entities)
    for item in all_entities:
        print(f"实体类型:{item['type']},值:{item['value']}")

注意:自定义机器学习实体的子实体在LUIS原始响应中以children字段嵌套,需通过递归遍历才能完整获取所有子实体数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:10:29