24 lines
763 B
Python
24 lines
763 B
Python
"""自然语言问题语种启发式(用于是否走「英译中」再 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
|