修复行合并吞掉用户问句bug
- _SENT_END增加中文句末语气词(呀啊呢吧嘛) - 行合并增加疑问特征检查:裸@末尾或含问号时不合并,防止用户问句被黏进bot回复内容
This commit is contained in:
+5
-1
@@ -3283,10 +3283,14 @@ class MessageMonitor:
|
||||
# ⭐ Task #1510: _SENT_END 补 ASCII `?`。OCR 对问句常输出半角 `?`(非全角 `?`),
|
||||
# 导致「游戏专用PHP有哪两种登录模式?」这类问句行不与下一行合并,
|
||||
# 防止多条用户消息被 `,` 黏成一行、共享同一陈旧继承时间戳被整体误杀。
|
||||
_SENT_END = re.compile(r'[。!??…~))」』\]]$')
|
||||
_SENT_END = re.compile(r'[。!??…~))」』\]呀啊呢吧嘛]$')
|
||||
_TS_START = re.compile(r'^(?:\d{1,2}[.;:]\d{2}|(?:昨天|前天|大前天|今天|明天|星期[一二三四五六日天]|\d+天前)\s*\d)')
|
||||
merged_lines = []
|
||||
for rl in ocr_lines:
|
||||
# 当前行含疑问特征(裸@末尾或问号)→ 不合并,防止用户问句被黏进bot回复
|
||||
if rl.endswith('@') or re.search(r'[??]', rl):
|
||||
merged_lines.append(rl)
|
||||
continue
|
||||
if merged_lines and not _SENT_END.search(merged_lines[-1]) \
|
||||
and not _TS_START.match(rl) and not _TS_START.match(merged_lines[-1]):
|
||||
merged_lines[-1] = merged_lines[-1] + ',' + rl
|
||||
|
||||
Reference in New Issue
Block a user