import re # Zone order must match training. ZONE_ORDER = [ "Z1_Header", "Z2_Preamble", "Z3_Fact", "Z4_Reasoning", "Z5_Judgment", "Z6_Footer", "Z7_SignOff", ] # Sentence split whitelist: punctuation and newlines. SENTENCE_SPLIT_REGEX = re.compile(r"[。!?!?;;::、\n]+") # Anchor constraints (used in inference when --anchor auto). Z1_ANCHOR_CHAR = "号" Z1_ANCHOR_MAX_CHARS = 100 Z4_ANCHOR_REGEX = re.compile(r"(判\s*决\s*如\s*下|如\s*下\s*判\s*决)\s*[::]?") # Inference-time preprocessing hyperparameters (must match training). MAX_SENTENCES = 240 MAX_CHARS_PER_SENT = 80 # Model hyperparameters (must match training). EMBED_DIM = 128 HIDDEN_DIM = 256 NUM_LAYERS = 2 DROPOUT = 0.2