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

如何遍历JSON文件嵌套字典并集成Sentence Transformers实现语义匹配校验

无硬编码嵌套语义匹配实现

前置说明

先将匹配得分计算逻辑抽为公共函数,避免重复编码,提前计算目标文本的向量缓存,减少重复计算提升性能。

完整实现代码

from sentence_transformers import SentenceTransformer, util
import torch
import json

# 1. 初始化模型、加载配置、预计算目标文本向量(只需执行1次)
# 可替换为你实际使用的语义匹配模型
embedder = SentenceTransformer('all-MiniLM-L6-v2')
# 加载你的JSON配置文件
with open("你的配置文件路径.json", "r", encoding="utf-8") as f:
    config = json.load(f)
global_threshold = config["Threshold"]
# 替换为你实际要匹配的目标文本列表
corpus = ["目标文本1", "目标文本2"]
corpus_embeddings = embedder.encode(corpus, convert_to_tensor=True)
top_k = min(5, len(corpus))

# 2. 公共匹配函数:输入查询词列表,返回该组查询词的最高匹配得分
def get_max_match_score(queries):
    max_score = 0.0
    for query in queries:
        query_embedding = embedder.encode(query, convert_to_tensor=True)
        cos_scores = util.pytorch_cos_sim(query_embedding, corpus_embeddings)[0]
        # 直接取当前查询词的最高匹配得分,无需遍历top5
        current_max = torch.max(cos_scores).item()
        if current_max > max_score:
            max_score = current_max
    return max_score

# 3. 主遍历逻辑:完全无硬编码服务/产品名称
result = {}
for service in config["Services"]:
    service_name = service["Name"]
    service_queries = service["Query"]
    # 服务级匹配校验
    service_max_score = get_max_match_score(service_queries)
    if service_max_score < global_threshold:
        # 低于全局阈值直接跳过该服务下所有产品
        continue
    # 服务级匹配通过,遍历该服务下全部产品
    result[service_name] = {}
    for product in service["Products"]:
        product_name = product["Name"]
        product_queries = product["Query"]
        product_threshold = product["Threshold"]
        # 产品级匹配校验
        product_max_score = get_max_match_score(product_queries)
        if product_max_score >= product_threshold:
            result[service_name][product_name] = "positive"
        else:
            result[service_name][product_name] = "negative"

# 输出最终匹配结果
print(result)

逻辑说明

  • 所有服务、产品信息都通过遍历JSON配置的Services、Products数组直接获取,完全不需要硬编码Service1、product1这类名称,后续新增/修改配置无需调整业务代码
  • 公共函数封装了匹配逻辑,直接返回一组查询词的最高匹配得分,符合你“取最高值和阈值比对”的需求
  • 服务级得分低于全局阈值时直接跳过该服务下全部产品的匹配,完全符合你要求的业务流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:06:01