"""自然语言问题语种启发式(用于是否走「英译中」再 Text2SQL)。""" import re _CJK_RE = re.compile(r"[\u4e00-\u9fff]") _HANGUL_RE = re.compile(r"[\uac00-\ud7af]") _KANA_RE = re.compile(r"[\u3040-\u30ff]") def looks_like_english_only(text: str) -> bool: """ 判断问题是否主要为英文(无中日韩表意文字),适合先译成中文再走检索/选表。 含中文、日文假名、韩文时不翻译,避免破坏中英混合问句。 """ s = (text or "").strip() if not s or len(s) < 2: return False if _CJK_RE.search(s) or _HANGUL_RE.search(s) or _KANA_RE.search(s): return False latin = sum(1 for c in s if ("a" <= c <= "z") or ("A" <= c <= "Z")) return latin >= 3