fix: 多语言墙复数形态(precios/preços/Цены/أسعار)+葡语çã路由+阿语词字节修复
spec审查加固两项 + 会话中断导致的ثمن词损坏字节级修复。 223 passed 全绿,对抗样本双向验证通过。 Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -49,8 +49,14 @@ PRICE_PATTERNS = [
|
||||
# ⚠️ (?<![a-z]) 字母后顾(与英文组 (?<![a-z]) 同款): 建材规格数字永远
|
||||
# 跟在拉丁字母后(DN800/SDR11/PN16/SCH40),后顾天然放行——实测
|
||||
# "El precio del DN800 PE100..." 旧形态误杀,加后顾全放行且 HITS 全保
|
||||
re.compile(r"\b(?:precio|costo|custo|preço|цена|стоимость|"
|
||||
r"(?:ال)?سعر|(?:ال)?ثمن)\b[^\d\n]{0,20}(?<![a-z])\d", re.I),
|
||||
# ⚠️ 复数/变格(spec 审查加固): precio?s?/costo?s?/custo?s?/preço?s?
|
||||
# (西葡 +s 复数;preço 的 ç 是词干,只放开 s——避免 "preç" 类
|
||||
# 错拼形态);俄语 цен[аы]?(цена/цены/цен);阿语复数 أسعار。
|
||||
# \b 包裹不受影响——"customs" 中 costo?s? 无子串匹配(c 后是 u),
|
||||
# 词边界防线依旧成立
|
||||
re.compile(r"\b(?:precio?s?|costo?s?|custo?s?|preço?s?|цен[аы]?|"
|
||||
r"стоимость|(?:ال)?سعر|(?:ال)?أسعار|(?:ال)?ثمن)\b"
|
||||
r"[^\d\n]{0,20}(?<![a-z])\d", re.I),
|
||||
# 货币名词后置(数字+货币词): dólares/euros/рублей(西里尔 долларов
|
||||
# 由上方 стоимость 前置组兜住,不单列)
|
||||
# ⚠️ euros 排除 pallets 邻接——"50 euro pallets"(欧标托盘)是建材
|
||||
@@ -149,12 +155,13 @@ PIVOTS_ES_CONTACT = [
|
||||
]
|
||||
|
||||
|
||||
# Task 5: 语言路由三分支——汉字→ZH;西语特征(重音符/ñ/¿¡ 粗匹配,与
|
||||
# 汉字检测同构)→ES;否则 EN。葡语借道 ES 池(拉美沟通惯例相近)
|
||||
# Task 5: 语言路由三分支——汉字→ZH;西语特征(重音符/ñ/ç/ã/¿¡ 粗匹配,与
|
||||
# 汉字检测同构)→ES;否则 EN。葡语借道 ES 池(拉美沟通惯例相近;ç/ã 为
|
||||
# 葡语专属特征,"qual o preço?" 类纯 ç 短句也归 ES,spec 审查加固)
|
||||
def _lang_pool(user_msg: str):
|
||||
if re.search(r"[一-鿿]", user_msg or ""):
|
||||
return "zh"
|
||||
if re.search(r"[áéíóúñ¿¡]", user_msg or ""):
|
||||
if re.search(r"[áéíóúñãç¿¡]", user_msg or ""):
|
||||
return "es"
|
||||
return "en"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user