fix: 跨轮语义去重+KB核心名词加权,修复公告信息匹配到基本信息
1. monitor.py: 新增跨轮语义去重(5分钟TTL, Jaccard≥30%)
- _recent_user_queries列表 + _is_semantically_duplicate()
- _poll候选构建阶段检查,回复后写入记录
2. auto_reply.py: non_core_kw新增通用信息类名词
- '信息','内容','详情','情况','介绍'不应作为核心词
- 原因:公告信息核心词应是{公告}而非{公告,信息}
3. knowledge_base.py: core_nouns新增公告/更新
- 查询含核心名词时,section含该名词→2倍加分,不含→0.3倍惩罚
- 修复近期公告(2.93)被基本信息(6.56)压过的问题
This commit is contained in:
+2
-2
@@ -620,7 +620,7 @@ class KnowledgeBase:
|
||||
# 不在此处penalty——此处penalty会被后续loop的bonus覆盖
|
||||
# ⭐ 核心名词匹配奖励:查询中的关键名词在 section 中出现 → 巨幅奖励
|
||||
# 防止"PHP管理员端的默认密码"匹配到不含"密码"的"全局配置" section
|
||||
core_nouns = {'密码', '用户管理', '领地', '商品', 'CDK', '工单', '债券', '在线'}
|
||||
core_nouns = {'密码', '用户管理', '领地', '商品', 'CDK', '工单', '债券', '在线', '公告', '更新'}
|
||||
query_nouns = set(jieba.cut(query_stripped)) & core_nouns
|
||||
if query_nouns:
|
||||
# 查询包含核心名词,检查 section 是否包含这些名词
|
||||
@@ -891,7 +891,7 @@ class KnowledgeBase:
|
||||
if _download_match:
|
||||
bonus += 8.0
|
||||
# ⭐ body 包含查询核心名词(如"密码")→ 巨幅 bonus
|
||||
core_nouns = {'密码', '用户管理', '领地', '商品', 'CDK', '工单', '债券', '在线'}
|
||||
core_nouns = {'密码', '用户管理', '领地', '商品', 'CDK', '工单', '债券', '在线', '公告', '更新'}
|
||||
body_noun_hits = sum(1 for n in core_nouns if n in body and n in query_stripped)
|
||||
if body_noun_hits >= 1:
|
||||
bonus += 15.0 # body 包含核心名词 → 优先返回
|
||||
|
||||
Reference in New Issue
Block a user