Spaces:
Running
Running
File size: 1,132 Bytes
e9015b1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | """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."
|