fix(auto_reply): 修复复合标题误匹配问题
- 方言语气词过滤:_STOPWORDS 新增"那搁""搁哪儿""哪儿"等东北话 - 复合标题检测:检测 heading 含 <br> 或列表标记时,只检查标题主体部分(<br>之前)的 meaningful tokens - 防止 protect.md 的"温馨提示"body 含"登录"+"下载"被误选 - 修复'那搁哪儿下载那个登录插件啊?'返回错误文档的问题
This commit is contained in:
@@ -89,6 +89,12 @@ class AutoReply:
|
||||
"给","把","被","让","请","该","此","为","等","其","将","时","后","前",
|
||||
"会","能","要","想","没","不","别","快","如","若","知","都","也","就",
|
||||
"已","再","更","最","很","太","较","但","却","因","故","则","且",
|
||||
# 方言语气词(东北话等)——用户常问"那搁哪儿"、"咋整"等,这些不应参与核心词匹配
|
||||
"那搁", "搁哪儿", "去哪儿", "哪儿", "哪能", "咋地", "咋整", "咋说",
|
||||
# 疑问代词
|
||||
"哪个", "那个", "这个", "哪些", "什么",
|
||||
# 语气助词
|
||||
"啊", "呀", "么", "嘛",
|
||||
# 通用名词,出现在太多文档中导致误匹配
|
||||
"服务器","玩家","游戏","世界","地图","技能","装备","物品","命令","指令",
|
||||
}
|
||||
@@ -135,6 +141,19 @@ class AutoReply:
|
||||
has_ht = bool(q_mean & ht_tokens)
|
||||
has_body = bool(q_mean & body_tokens)
|
||||
|
||||
# ⭐ 复合标题检测(2026-08-13):如果 heading 含 <br> 或列表标记,
|
||||
# 说明是 Markdown 链接列表(如"- [登录]: url"),只检查标题主体部分(<br>之前)
|
||||
# 的 meaningful tokens,而非整个复合 heading
|
||||
# 防止 protect.md 的"温馨提示"body 含"登录"+"下载"被误选
|
||||
_is_composite_heading = ('<br>' in heading or '- [' in heading or '|-' in heading)
|
||||
if _is_composite_heading:
|
||||
# 提取标题主体部分(<br>或列表之前的部分)
|
||||
_title_part = re.split(r'<br>|- |\|-', heading_clean)[0]
|
||||
_body_part_tokens = set(AutoReply._meaningful_tokens(_title_part))
|
||||
# 重新计算 has_ht 为仅主体部分命中
|
||||
has_ht = bool(q_mean & _body_part_tokens)
|
||||
logger.debug(f"复合标题检测: heading={heading[:40]!r} title_part={_title_part!r} has_ht={has_ht}")
|
||||
|
||||
# 动作/配置类查询:标题和正文都必须含核心词,防止"牛头不对马嘴"误匹配
|
||||
# ⭐ 扩展:has_body=False(正文完全无共同词)时直接拒绝,无论 heading 是否命中
|
||||
# 例:"领地系统有哪些操作模式?" vs sdf1_login CLI段落 → 拒绝
|
||||
|
||||
Reference in New Issue
Block a user