mediflora-ai / src /language.py
Ashanasri's picture
Deploy MediFlora AI (Groq Llama 3.3 70B + RAG)
cb10204 verified
Raw
History Blame Contribute Delete
1.88 kB
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"