HachimiMT-demo / src /text_preprocess.py
ngocdang83's picture
Init Space: HachimiMT zh-vi demo (CT2, chuẩn hóa xưng hô)
e9015b1 verified
Raw
History Blame
1.13 kB
"""Chinese text normalization before translation."""
from __future__ import annotations
from functools import lru_cache
NORMALIZE_AUTO = "auto"
NORMALIZE_T2S = "t2s"
NORMALIZE_NONE = "none"
NORMALIZE_MODES = {NORMALIZE_AUTO, NORMALIZE_T2S, NORMALIZE_NONE}
@lru_cache(maxsize=1)
def _t2s_converter():
from opencc import OpenCC
return OpenCC("t2s")
def normalize_mode(mode: str | None) -> str:
mode = (mode or NORMALIZE_AUTO).strip().lower()
return mode if mode in NORMALIZE_MODES else NORMALIZE_AUTO
def normalize_chinese_text(text: str, mode: str | None = NORMALIZE_AUTO) -> str:
mode = normalize_mode(mode)
if mode == NORMALIZE_NONE or not text:
return text
return _t2s_converter().convert(text)
def normalization_message(original: str, normalized: str, mode: str | None) -> str:
mode = normalize_mode(mode)
if mode == NORMALIZE_NONE:
return "Giữ nguyên chữ Hán gốc."
if original == normalized:
return "Đã kiểm tra chữ Hán: không cần chuyển phồn thể."
return "Đã chuyển phồn thể sang giản thể trước khi dịch."