修复病句过滤器误判缺主语但有查询意图的消息 (Task #1687)
问题: - 用户消息'想知道怎么绑定邮箱'被判定为'病句(缺主语)'并丢弃 - 该句子虽然缺主语,但核心动机明确——查询'绑定邮箱' 修复: - 在病句3(缺主语)过滤规则中添加查询意图词检查 - 如果句子包含疑问词(在何哪什怎么多少吗呢)或查询意图词(绑定、设置、配置等),即使缺主语也放行 - 扩展'问'开头消息的例外规则,添加更多查询意图词 - 保留对真正病句(如'将其修正后重三')的过滤 测试: - '想知道怎么绑定邮箱':放行(包含疑问词'怎么'和查询意图词'绑定') - '将其修正后重三':丢弃(真正的病句) - '认管理员密码多少':放行(包含疑问词'多少')
This commit is contained in:
+11
-1
@@ -5048,13 +5048,23 @@ class MessageMonitor:
|
|||||||
# 病句3:句子缺少主语且无标点(如"将其修正后重三" "认管理员密码多少")
|
# 病句3:句子缺少主语且无标点(如"将其修正后重三" "认管理员密码多少")
|
||||||
# OCR常把"默认"识别丢掉→"认管理员密码多少"、把"帮"识别丢掉→"查xx"
|
# OCR常把"默认"识别丢掉→"认管理员密码多少"、把"帮"识别丢掉→"查xx"
|
||||||
# 例外:以"问一嘴"、"问一下"开头的正常查询消息,或包含疑问词且长度>8的消息放行
|
# 例外:以"问一嘴"、"问一下"开头的正常查询消息,或包含疑问词且长度>8的消息放行
|
||||||
|
# ⭐ Task #1687: 添加查询意图词检查,缺主语但有明确意图的消息不应丢弃
|
||||||
if re.match(r'^[其将把被认查帮试想]', line) and not re.search(r'[。!?,,;;::?]$', line):
|
if re.match(r'^[其将把被认查帮试想]', line) and not re.search(r'[。!?,,;;::?]$', line):
|
||||||
|
# 检查是否包含疑问词或查询意图词
|
||||||
|
_has_question_intent = re.search(r'[在何哪什怎么多少吗呢]', line)
|
||||||
|
_has_query_intent = re.search(r'(下载|地址|查询|查看|了解|咨询|知道|怎么|如何|绑定|设置|配置|修改|删除|添加|开启|关闭|使用|安装|登录|注册|绑定)', line)
|
||||||
|
if _has_question_intent or _has_query_intent:
|
||||||
|
# 包含疑问词或查询意图词,放行
|
||||||
|
logger.debug(f"[{platform}] OCR 过滤: 病句(缺主语)但含查询意图,放行: {line!r}")
|
||||||
|
pass
|
||||||
|
else:
|
||||||
logger.debug(f"[{platform}] OCR 过滤: 病句(缺主语) line={line!r}")
|
logger.debug(f"[{platform}] OCR 过滤: 病句(缺主语) line={line!r}")
|
||||||
continue
|
continue
|
||||||
# "问"开头的消息单独处理:排除"问一嘴"、"问一下"等正常查询
|
# "问"开头的消息单独处理:排除"问一嘴"、"问一下"等正常查询
|
||||||
if re.match(r'^问', line) and not re.search(r'[。!?,,;;::?]$', line):
|
if re.match(r'^问', line) and not re.search(r'[。!?,,;;::?]$', line):
|
||||||
# 如果长度>=6且包含疑问词或核心动作词,视为正常查询放行
|
# 如果长度>=6且包含疑问词或核心动作词,视为正常查询放行
|
||||||
if len(line) >= 6 and (re.search(r'[在何哪什怎么多少]', line) or re.search(r'(下载|地址|查询|查看|了解|咨询|知道|怎么|如何)', line)):
|
# ⭐ Task #1687: 扩展查询意图词列表
|
||||||
|
if len(line) >= 6 and (re.search(r'[在何哪什怎么多少吗呢]', line) or re.search(r'(下载|地址|查询|查看|了解|咨询|知道|怎么|如何|绑定|设置|配置|修改|删除|添加|开启|关闭|使用|安装|登录|注册)', line)):
|
||||||
pass # 放行
|
pass # 放行
|
||||||
else:
|
else:
|
||||||
logger.debug(f"[{platform}] OCR 过滤: 病句(缺主语) line={line!r}")
|
logger.debug(f"[{platform}] OCR 过滤: 病句(缺主语) line={line!r}")
|
||||||
|
|||||||
Reference in New Issue
Block a user