fix: 修复病句过滤器误判'后缀'为动词结尾
根因:正则[后以了过]+.{0,3}$会将'后缀'匹配为'后'+缀,但'后缀'是完整名词
修复:
- 新正则只匹配以'了'或'过'结尾的短句(<=6字)
- 排除确认词(好了、对了、行了等)
- 避免误判包含完整名词的消息
测试验证:
- '兑换码插件怎么屏蔽导入的后缀' → 放行 ✓
- '下载了'、'改过了' → 过滤 ✓
- '改好了' → 放行 ✓
This commit is contained in:
+5
-2
@@ -5151,8 +5151,11 @@ class MessageMonitor:
|
|||||||
logger.debug(f"[{platform}] OCR 过滤: 特殊符号开头碎片 line={line!r}")
|
logger.debug(f"[{platform}] OCR 过滤: 特殊符号开头碎片 line={line!r}")
|
||||||
continue
|
continue
|
||||||
if 5 < len(line) < 50:
|
if 5 < len(line) < 50:
|
||||||
# 病句1:句子以动词/助词结尾但缺少宾语且无标点
|
# 病句1:句子以"了"或"过"结尾但缺少宾语(如"下载了"、"改过了")
|
||||||
if re.search(r'[后以了过]+.{0,3}$', line) and not re.search(r'[。!?,,;;::?]$', line):
|
# ⭐ 修复:原正则[后以了过]+.{0,3}$会误判"后缀"等完整名词
|
||||||
|
# 新正则只匹配以"了"或"过"结尾的短句(<=6字),且排除确认词
|
||||||
|
if re.search(r'(?:了|过)\s*$', line) and len(line) <= 6 \
|
||||||
|
and not any(line.endswith(w) or line == w for w in ('好了', '对了', '行了', '完了', '可以了', '知道了', '明白了', '收到了')):
|
||||||
logger.debug(f"[{platform}] OCR 过滤: 病句(动词结尾) line={line!r}")
|
logger.debug(f"[{platform}] OCR 过滤: 病句(动词结尾) line={line!r}")
|
||||||
continue
|
continue
|
||||||
# 病句2:句子以"三"结尾(OCR误读"试"为"三")
|
# 病句2:句子以"三"结尾(OCR误读"试"为"三")
|
||||||
|
|||||||
Reference in New Issue
Block a user