Spaces:
Running
Running
| import re | |
| PIDGIN_MARKER_PATTERN = re.compile( | |
| r"\b(wetin|dey|una|abi|sabi|chop|waka|pikin|dem|wey|na)\b" | |
| r"|make we|no dey|no be|e go|i no|you no", | |
| re.IGNORECASE, | |
| ) | |
| STANDARD_ENGLISH_PATTERN = re.compile( | |
| r"\b(what|why|where|when|how|please|because|cannot|can't|don't|doesn't|should|would|could|will|are|is|am|have|has)\b", | |
| re.IGNORECASE, | |
| ) | |
| def _normalize_label(label): | |
| return str(label or "").strip().lower() | |
| def is_nigerian_pidgin_label(label): | |
| value = _normalize_label(label) | |
| return "naija" in value or ("nigerian" in value and "pidgin" in value) | |
| def is_nigerian_english_label(label): | |
| value = _normalize_label(label) | |
| return "nigerian english" in value and not is_nigerian_pidgin_label(value) | |
| def nigerian_variety_instruction(source_dialect="", target_dialect=""): | |
| source_is_relevant = is_nigerian_pidgin_label(source_dialect) or is_nigerian_english_label(source_dialect) | |
| target_is_relevant = is_nigerian_pidgin_label(target_dialect) or is_nigerian_english_label(target_dialect) | |
| if not source_is_relevant and not target_is_relevant: | |
| return "" | |
| return ( | |
| "NIGERIAN VARIETY BOUNDARY:\n" | |
| "- Nigerian English and Nigerian Pidgin English / Naija Pidgin are separate varieties, not interchangeable labels.\n" | |
| "- Nigerian English is a recognized World English variety. Use Nigerian English lexical, pragmatic, and cultural flavor while keeping English grammar; do not use core Naija Pidgin grammar markers such as 'wetin', 'dey', 'una', 'abi', 'na', 'abeg', or 'make we' unless the source is quoting them.\n" | |
| "- Nigerian Pidgin English / Naija Pidgin is an English-lexifier pidgin/creole continuum. Use Naija Pidgin grammar and discourse markers naturally; do not normalize it into Nigerian English or Standard English.\n" | |
| "- If the target is Nigerian English, avoid Naija Pidgin grammar. If the target is Nigerian Pidgin English, do not output polished Nigerian English." | |
| ) | |
| def nigerian_variety_retry_reason(translated, target_dialect): | |
| text = str(translated or "").strip() | |
| if not text: | |
| return "" | |
| if is_nigerian_english_label(target_dialect) and PIDGIN_MARKER_PATTERN.search(text): | |
| return "Target is Nigerian English, but the output contains Naija Pidgin markers." | |
| word_count = len(re.findall(r"[A-Za-z']+", text)) | |
| if ( | |
| is_nigerian_pidgin_label(target_dialect) | |
| and word_count >= 4 | |
| and not PIDGIN_MARKER_PATTERN.search(text) | |
| and STANDARD_ENGLISH_PATTERN.search(text) | |
| ): | |
| return "Target is Nigerian Pidgin English, but the output looks like Nigerian/Standard English without Naija Pidgin grammar." | |
| return "" | |
| def nigerian_variety_retry_prompt(text, source_dialect, target_dialect, translated, reason): | |
| return f""" | |
| The previous output crossed a Nigerian variety boundary. | |
| Reason: {reason} | |
| Source variety: {source_dialect} | |
| Target variety: {target_dialect} | |
| Source utterance: "{text}" | |
| Previous output: "{translated}" | |
| Rewrite the output ONLY in the requested target variety. | |
| {nigerian_variety_instruction(source_dialect, target_dialect)} | |
| """ | |
| def hausa_variety_instruction(source_dialect="", target_dialect=""): | |
| labels = f"{source_dialect} {target_dialect}".lower() | |
| if not any(token in labels for token in ("hausa", "kano", "katsina", "sokoto", "zaria")): | |
| return "" | |
| return ( | |
| "HAUSA LEXICAL AND HONORIFIC GUARDRAIL:\n" | |
| "- Preserve Hausa honorific gender and social role carefully.\n" | |
| "- 'malama' or 'mallama' means ma'am, madam, or female teacher; never translate it as sir, friend, bro, or guy.\n" | |
| "- 'malam' means sir, male teacher, or learned man; do not confuse it with 'malama'.\n" | |
| "- 'ina kwana?' is a morning greeting close to 'good morning' or 'how did you wake/sleep?'; keep the greeting natural for the target dialect.\n" | |
| "- When translating into English or Nigerian English, prefer respectful forms such as 'Good morning, ma'am' when the source says 'ina kwana, malama?'." | |
| ) | |