修复病句过滤器误杀正常查询消息
- 分离'问'开头的消息处理逻辑 - '问一嘴'、'问一下'等正常查询消息不再被误判为病句 - 包含疑问词且长度>8的消息放行 - 保留其他缺主语碎片的过滤(其/将/把/被/认/帮/想/试开头)
This commit is contained in:
+10
-1
@@ -4036,7 +4036,16 @@ class MessageMonitor:
|
||||
continue
|
||||
# 病句3:句子缺少主语且无标点(如"将其修正后重三" "认管理员密码多少")
|
||||
# OCR常把"默认"识别丢掉→"认管理员密码多少"、把"帮"识别丢掉→"查xx"
|
||||
if re.match(r'^[其将把被认查问帮试想]', line) and not re.search(r'[。!?,,;;::?]$', line):
|
||||
# 例外:以"问一嘴"、"问一下"开头的正常查询消息,或包含疑问词且长度>8的消息放行
|
||||
if re.match(r'^[其将把被认查帮试想]', line) and not re.search(r'[。!?,,;;::?]$', line):
|
||||
logger.debug(f"[{platform}] OCR 过滤: 病句(缺主语) line={line!r}")
|
||||
continue
|
||||
# "问"开头的消息单独处理:排除"问一嘴"、"问一下"等正常查询
|
||||
if re.match(r'^问', line) and not re.search(r'[。!?,,;;::?]$', line):
|
||||
# 如果包含疑问词且长度>8,视为正常查询放行
|
||||
if len(line) > 8 and re.search(r'[在何哪什怎么哪]', line):
|
||||
pass # 放行
|
||||
else:
|
||||
logger.debug(f"[{platform}] OCR 过滤: 病句(缺主语) line={line!r}")
|
||||
continue
|
||||
# 病句4:OCR 把用户消息和系统提示拼接的复合碎片
|
||||
|
||||
Reference in New Issue
Block a user