"""Small presentation helpers shared by user interfaces.""" import re def clean_text(text: str | None) -> str: """Strip a user review and collapse repeated whitespace.""" if text is None: return "" return re.sub(r"\s+", " ", text).strip() def format_label(label: str) -> str: """Return a consistent French display label.""" labels = { "positive": "Positif", "positif": "Positif", "pos": "Positif", "negative": "Negatif", "negatif": "Negatif", "négatif": "Negatif", "neg": "Negatif", } return labels.get(str(label).lower(), str(label).capitalize()) def format_confidence(score: float) -> str: """Format a confidence score constrained to the [0, 1] interval.""" score = max(0.0, min(1.0, float(score))) return f"{score:.1%}" def get_interpretation(label: str, confidence: float) -> str: """Build the short result displayed by the Gradio interface.""" return ( f"Sentiment {format_label(label)} avec une confiance de " f"{format_confidence(confidence)}." )