Spaces:
Sleeping
Sleeping
| import re | |
| SWAHILI_HINTS = { | |
| "habari", | |
| "naumwa", | |
| "nina", | |
| "nahisi", | |
| "maumivu", | |
| "maumiv", | |
| "kifua", | |
| "kichwa", | |
| "tumbo", | |
| "mgongo", | |
| "mgogo", | |
| "kiuno", | |
| "kuhara", | |
| "kikohozi", | |
| "mafua", | |
| "homa", | |
| "dawa", | |
| "mtishamba", | |
| "mitishamba", | |
| "natakiwa", | |
| "nitumie", | |
| "kunywa", | |
| "kupumua", | |
| "mjamzito", | |
| "kunyonyesha", | |
| "naskia", | |
| "nasikia", | |
| "najiskia", | |
| "najisikia", | |
| "kinaniuma", | |
| "sijambo", | |
| "hujambo", | |
| "zimeanza", | |
| "imeanza", | |
| "zimeaza", | |
| "imeaza", | |
| "meanza", | |
| "siku", | |
| "wiki", | |
| "mwezi", | |
| "miaka", | |
| "makali", | |
| "kali", | |
| "kati", | |
| "mwanaume", | |
| "mwanamke", | |
| "jinsia", | |
| "ndiyo", | |
| "hapana", | |
| "sina", | |
| "situmii", | |
| "natumia", | |
| "ugonjwa", | |
| "sugu", | |
| "presha", | |
| "kisukari", | |
| "pumu", | |
| "figo", | |
| "ini", | |
| "allergy", | |
| "ujauzito", | |
| "nane", | |
| } | |
| ENGLISH_HINTS = { | |
| "hello", | |
| "hi", | |
| "hey", | |
| "good", | |
| "morning", | |
| "afternoon", | |
| "evening", | |
| "i", | |
| "have", | |
| "feel", | |
| "pain", | |
| "cough", | |
| "flu", | |
| "fever", | |
| "chest", | |
| "stomach", | |
| "diarrhea", | |
| "diarrhoea", | |
| "medicine", | |
| "herb", | |
| "remedy", | |
| "pregnant", | |
| "breastfeeding", | |
| } | |
| def tokenize(text: str) -> set[str]: | |
| return set(re.findall(r"[a-zA-Z']+", text.lower())) | |
| def language_scores(text: str) -> tuple[int, int]: | |
| lines = [line.strip() for line in text.splitlines() if line.strip()] | |
| latest_text = lines[-1] if lines else text | |
| tokens = tokenize(latest_text) | |
| return len(tokens & SWAHILI_HINTS), len(tokens & ENGLISH_HINTS) | |
| def detect_language(text: str) -> str: | |
| sw_score, en_score = language_scores(text) | |
| if sw_score >= en_score and sw_score > 0: | |
| return "Swahili" | |
| return "English" | |
| def is_swahili(text: str) -> bool: | |
| return detect_language(text) == "Swahili" | |