feat(v1): 架构与算法优化——语义缓存 2.37x、Router 去重、分类器确定性决胜
架构: - Router:低置信度直连/专家异常两条兜底路径的收尾逻辑(回退→finalize→record)提取为 _fallback_result 公共方法,消除三处重复收尾块 算法: - RouterCache:语义条目写入时预计算向量范数(原每次两两比较重算)、 语义查找单遍完成(原命中后二次 O(N) 查找)、相似度=1.0 提前终止扫描; 微基准(3000 条目×200 查询):3986ms -> 1685ms,2.37x - RuleClassifier:同分决胜改为按领域名字典序(与规则表排列顺序无关的确定性)、 次高分由全排序改 O(n) 扫描 测试:新增 5 项(缓存范数一致性/提升后无残留/淘汰同步清理、决胜确定性、区分度惩罚) pytest 25 passed(原 20 全绿 + 新增 5) 基线检查点:66b6fd8(操作前已提交,20 passed)
This commit is contained in:
@@ -128,7 +128,8 @@ class RuleClassifier(BaseClassifier):
|
||||
matched_rules=[],
|
||||
)
|
||||
|
||||
best_domain = max(raw, key=raw.get)
|
||||
# 同分决胜:按领域名字典序,保证与规则表排列顺序无关的确定性
|
||||
best_domain = max(sorted(raw), key=lambda d: raw[d])
|
||||
best_score = raw[best_domain]
|
||||
confidence = 1.0 - math.exp(-best_score)
|
||||
|
||||
@@ -138,7 +139,7 @@ class RuleClassifier(BaseClassifier):
|
||||
|
||||
# 与次高分的差距影响置信度(区分度)
|
||||
if len(raw) > 1:
|
||||
second = sorted(raw.values(), reverse=True)[1]
|
||||
second = max(v for d, v in raw.items() if d != best_domain)
|
||||
if second > 0.7 * best_score:
|
||||
confidence *= 0.85
|
||||
|
||||
|
||||
Reference in New Issue
Block a user