|
import gradio as gr |
|
import torch |
|
from transformers import pipeline |
|
import re |
|
|
|
|
|
pipe = None |
|
|
|
def load_model(): |
|
"""Load the Atlas-Chat model""" |
|
global pipe |
|
if pipe is None: |
|
print("🏔️ Loading Atlas-Chat-2B model...") |
|
pipe = pipeline( |
|
"text-generation", |
|
model="MBZUAI-Paris/Atlas-Chat-2B", |
|
model_kwargs={"torch_dtype": torch.bfloat16}, |
|
device="cuda" if torch.cuda.is_available() else "cpu" |
|
) |
|
print("✅ Model loaded successfully!") |
|
return pipe |
|
|
|
def detect_arabizi(text): |
|
""" |
|
Detect if input text is written in Arabizi (Latin script with numbers) |
|
Returns True if Arabizi is detected |
|
""" |
|
if not text or len(text.strip()) < 2: |
|
return False |
|
|
|
|
|
arabic_pattern = r'[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\uFB50-\uFDFF\uFE70-\uFEFF]' |
|
if re.search(arabic_pattern, text): |
|
return False |
|
|
|
|
|
arabizi_numbers = ['2', '3', '7', '9', '5', '6', '8'] |
|
has_arabizi_numbers = any(num in text for num in arabizi_numbers) |
|
|
|
|
|
arabizi_patterns = [ |
|
'wach', 'wash', 'ach', 'achno', 'chno', 'shno', 'shkoun', 'chkoun', |
|
'kif', 'kifash', 'ki', 'kayf', 'kien', 'kima', |
|
'feen', 'fin', 'fen', 'fain', 'mnin', |
|
'imta', 'meta', 'waqt', 'mata', 'emta', |
|
'hna', 'ahna', 'ana', 'nta', 'nti', 'ntuma', 'ntouma', |
|
'howa', 'hiya', 'huma', 'houma', 'hoa', 'hia', |
|
'had', 'hadchi', 'hada', 'hadi', 'hadou', 'hadouk', |
|
'bghit', 'bghiti', 'bgha', 'bghina', 'bghitiou', |
|
'galt', 'galti', 'gal', 'galet', 'galou', |
|
'rah', 'raha', 'rahi', 'rahom', 'rahin', |
|
'kan', 'kanu', 'kana', 'kanet', 'kano', |
|
'ghadi', 'ghad', 'gha', 'ghadia', 'ghadiyin', |
|
'daba', 'dak', 'dakchi', 'dik', 'dok', |
|
'bzf', 'bzzaf', 'bezzaf', 'bzaaaaf', |
|
'chway', 'chwiya', 'shwiya', 'chwia', |
|
'khoya', 'khuya', 'akhi', 'kho', |
|
'khti', 'khtiya', 'ukhti', 'kht', |
|
'mama', 'baba', 'lwaldin', 'lwalidin', |
|
'salam', 'salamu aleikum', 'slm', |
|
'yallah', 'yalla', 'hya', 'aji', |
|
'mabghitsh', 'mabghach', 'makansh', 'machi', |
|
'walakin', 'walaken', 'ama', 'mais' |
|
] |
|
|
|
text_lower = text.lower() |
|
has_arabizi_words = any(pattern in text_lower for pattern in arabizi_patterns) |
|
|
|
|
|
if has_arabizi_numbers and has_arabizi_words: |
|
return True |
|
if has_arabizi_numbers and len([c for c in text if c.isalpha()]) > len(text) * 0.6: |
|
return True |
|
if has_arabizi_words and len([c for c in text if c.isalpha()]) > len(text) * 0.7: |
|
return True |
|
|
|
return False |
|
|
|
def arabizi_to_arabic(text): |
|
""" |
|
Convert Arabizi text to Arabic script |
|
COMPLETE HARD-CODED MAPPINGS |
|
""" |
|
if not text: |
|
return text |
|
|
|
|
|
word_mappings = { |
|
|
|
'ana': 'أنا', 'nta': 'نتا', 'nti': 'نتي', 'howa': 'هوا', 'hiya': 'هيا', |
|
'hoa': 'هوا', 'hia': 'هيا', 'hna': 'حنا', 'ahna': 'أحنا', |
|
'ntuma': 'نتوما', 'ntouma': 'نتوما', 'huma': 'هوما', 'houma': 'هوما', |
|
|
|
|
|
'shkoun': 'شكون', 'chkoun': 'شكون', 'skoun': 'شكون', |
|
'achno': 'أشنو', 'chno': 'شنو', 'shno': 'شنو', 'ach': 'أش', |
|
'wach': 'واش', 'wash': 'واش', 'ouach': 'واش', |
|
'kifash': 'كيفاش', 'kif': 'كيف', 'ki': 'كي', 'kayf': 'كيف', |
|
'feen': 'فين', 'fin': 'فين', 'fen': 'فين', 'fain': 'فين', 'mnin': 'منين', |
|
'imta': 'إمتا', 'meta': 'متا', 'mata': 'متا', 'emta': 'إمتا', |
|
'3lach': 'علاش', 'alach': 'علاش', '3la ach': 'علاش', |
|
|
|
|
|
'bghit': 'بغيت', 'bghiti': 'بغيتي', 'bgha': 'بغا', 'bghina': 'بغينا', |
|
'kan': 'كان', 'kana': 'كانا', 'kanet': 'كانت', 'kanu': 'كانو', |
|
'galt': 'قلت', 'galti': 'قلتي', 'gal': 'قال', 'galet': 'قالت', |
|
'galou': 'قالو', 'galina': 'قلنا', |
|
'rah': 'راح', 'raha': 'راها', 'rahi': 'راهي', 'rahom': 'راهم', |
|
'ghadi': 'غادي', 'ghad': 'غاد', 'gha': 'غا', 'ghadia': 'غادية', |
|
'dir': 'دير', 'dert': 'درت', 'derat': 'درات', 'derna': 'درنا', |
|
'ja': 'جا', 'jat': 'جات', 'jina': 'جينا', 'jaou': 'جاو', |
|
'mcha': 'مشا', 'mchat': 'مشات', 'mchina': 'مشينا', 'mchaou': 'مشاو', |
|
'khrj': 'خرج', 'khrja': 'خرجا', 'khrjat': 'خرجات', 'khrjna': 'خرجنا', |
|
'dkhl': 'دخل', 'dkhla': 'دخلا', 'dkhlat': 'دخلات', 'dkhlna': 'دخلنا', |
|
|
|
|
|
'had': 'هاد', 'hada': 'هادا', 'hadi': 'هادي', 'hadou': 'هادو', |
|
'hadouk': 'هادوك', 'hadchi': 'هادشي', 'hadak': 'هاداك', |
|
'dak': 'داك', 'dik': 'ديك', 'dok': 'دوك', 'dakchi': 'داكشي', |
|
|
|
|
|
'fi': 'في', 'f': 'ف', 'men': 'من', 'mn': 'من', 'l': 'ل', 'li': 'لي', |
|
'bla': 'بلا', 'b': 'ب', 'bi': 'بي', 'bih': 'بيه', 'biha': 'بيها', |
|
'mea': 'معا', 'maak': 'معاك', 'maaki': 'معاكي', 'maana': 'معانا', |
|
'maahom': 'معاهم', 'maaha': 'معاها', |
|
|
|
|
|
'wahed': 'واحد', 'joj': 'جوج', 'tlata': 'تلاتا', 'rebaa': 'ربعا', |
|
'khamsa': 'خمسا', 'setta': 'ستا', 'sebaa': 'سبعا', 'tmanya': 'تمنيا', |
|
'tesaa': 'تسعا', 'ashra': 'عشرا', |
|
|
|
|
|
'daba': 'دابا', 'tawa': 'توا', 'ghda': 'غدا', 'lbareeh': 'البارح', |
|
'nhar': 'نهار', 'lila': 'ليلا', 'sbah': 'صباح', 'aachia': 'عشيا', |
|
|
|
|
|
'mama': 'ماما', 'baba': 'بابا', 'khoya': 'خويا', 'khti': 'ختي', |
|
'khuya': 'خويا', 'khtiya': 'ختيا', 'akhi': 'أخي', 'ukhti': 'أختي', |
|
'jad': 'جد', 'jada': 'جدا', 'amo': 'عمو', 'ama': 'عما', |
|
'khal': 'خال', 'khala': 'خالا', |
|
|
|
|
|
'zwin': 'زوين', 'zwina': 'زوينا', 'qbih': 'قبيح', 'qbiha': 'قبيحا', |
|
'kbir': 'كبير', 'kbira': 'كبيرا', 'sghir': 'صغير', 'sghira': 'صغيرا', |
|
'tqil': 'تقيل', 'tqila': 'تقيلا', 'khfif': 'خفيف', 'khfifa': 'خفيفا', |
|
'sahel': 'ساهل', 'sahla': 'ساهلا', 'saab': 'صعب', 'saba': 'صعبا', |
|
|
|
|
|
'bzf': 'بزاف', 'bzzaf': 'بزاف', 'bezzaf': 'بزاف', 'ktir': 'كتير', |
|
'chway': 'شوياة', 'chwiya': 'شوياة', 'shwiya': 'شوياة', 'chwia': 'شوياة', |
|
'kolchi': 'كولشي', 'kol': 'كول', 'ga': 'غاع', 'gaa': 'غاع', |
|
'hta': 'حتا', 'walo': 'والو', 'walou': 'والو', |
|
|
|
|
|
'ma': 'ما', 'machi': 'ماشي', 'mabghitsh': 'مابغيتش', 'makainch': 'ماكاينش', |
|
'makansh': 'ماكانش', 'maghatch': 'ماغاتش', 'mabaghish': 'مابغيش', |
|
|
|
|
|
'walakin': 'والاكين', 'walaken': 'والاكين', 'mais': 'ولكن', |
|
'ama': 'أما', 'ida': 'إذا', 'ila': 'إلا', 'hta': 'حتا', |
|
'ou': 'أو', 'o': 'أو', 'aw': 'أو', 'wla': 'ولا', |
|
|
|
|
|
'salam': 'سلام', 'yallah': 'يالاه', 'yalla': 'يالا', 'hya': 'هيا', |
|
'aji': 'أجي', 'sir': 'سير', 'siri': 'سيري', 'ajou': 'أجو', |
|
'mabrook': 'مبروك', 'baraka': 'باركا', 'besaha': 'بصحا', |
|
'allah': 'الله', 'rabi': 'ربي', 'llah': 'الله', |
|
'inchallah': 'إن شاء الله', 'machallah': 'ما شاء الله', |
|
'hamdulillah': 'الحمد لله', 'alhamdulillah': 'الحمد لله', |
|
'la hawla': 'لا حول', 'astghfirullah': 'أستغفر الله', |
|
|
|
|
|
'lmaghrib': 'المغرب', 'maghrib': 'مغرب', 'casa': 'كازا', |
|
'rbat': 'الرباط', 'fas': 'فاس', 'mknas': 'مكناس', |
|
'tanja': 'طنجا', 'agadir': 'أكادير', 'marrakech': 'مراكش', |
|
|
|
|
|
'dar': 'دار', 'bit': 'بيت', 'tomo': 'طوموبيل', 'karhouba': 'كرهوبا', |
|
'makla': 'ماكلا', 'atay': 'أتاي', 'khobz': 'خوبز', 'lma': 'الما', |
|
'tajin': 'طاجين', 'tajine': 'طاجين', 'couscous': 'كوسكوس', |
|
'msemen': 'مسمن', 'rghaif': 'رغايف', 'harira': 'حريرا', |
|
'khodra': 'خضرا', 'fawakeh': 'فواكه', 'lahem': 'لحم', |
|
'djaj': 'دجاج', 'hout': 'حوت', 'lben': 'اللبن', |
|
'skar': 'سكر', 'melh': 'ملح', 'zit': 'زيت', 'zebda': 'زبدا', |
|
|
|
|
|
'chreb': 'شرب', 'chrba': 'شربا', 'chrebat': 'شربات', 'chrebna': 'شربنا', |
|
'kla': 'كلا', 'klat': 'كلات', 'klina': 'كلينا', 'klaw': 'كلاو', |
|
'nees': 'نعس', 'neesat': 'نعسات', 'neesna': 'نعسنا', 'neasou': 'نعسو', |
|
'faq': 'فاق', 'faqat': 'فاقات', 'faqna': 'فقنا', 'faqou': 'فاقو', |
|
'tlab': 'طلب', 'tlbat': 'طلبات', 'tlabna': 'طلبنا', 'tlabou': 'طلبو', |
|
'khdam': 'خدم', 'khdmat': 'خدمات', 'khdamna': 'خدمنا', 'khdamou': 'خدمو', |
|
'qra': 'قرا', 'qrat': 'قرات', 'qrina': 'قرينا', 'qraw': 'قراو', |
|
'kteb': 'كتب', 'ktbat': 'كتبات', 'ktebna': 'كتبنا', 'ktbou': 'كتبو', |
|
'chaf': 'شاف', 'chafat': 'شافات', 'chfna': 'شفنا', 'chafou': 'شافو', |
|
'sma': 'سمع', 'smat': 'سمعات', 'smana': 'سمعنا', 'smaou': 'سمعو' |
|
} |
|
|
|
|
|
char_mappings = { |
|
'2': 'ء', '3': 'ع', '5': 'خ', '6': 'ط', '7': 'ح', '8': 'غ', '9': 'ق', |
|
'a': 'ا', 'b': 'ب', 't': 'ت', 'th': 'ث', 'j': 'ج', 'd': 'د', |
|
'r': 'ر', 'z': 'ز', 's': 'س', 'sh': 'ش', 'f': 'ف', 'k': 'ك', |
|
'l': 'ل', 'm': 'م', 'n': 'ن', 'h': 'ه', 'w': 'و', 'y': 'ي', |
|
'aa': 'آ', 'ee': 'ي', 'oo': 'و', 'ou': 'و', 'ai': 'ي', 'ay': 'ي' |
|
} |
|
|
|
|
|
digraph_mappings = { |
|
'kh': 'خ', 'gh': 'غ', 'ch': 'ش', 'th': 'ث', 'dh': 'ذ', |
|
'sh': 'ش', 'ts': 'ص', 'dz': 'ض', 'ss': 'ص', 'tt': 'ط', |
|
'zz': 'ظ', 'aa': 'آ', 'ee': 'ي', 'ii': 'ي', 'oo': 'و', |
|
'uu': 'و', 'ou': 'و', 'ai': 'ي', 'ay': 'ي', 'ey': 'ي' |
|
} |
|
|
|
|
|
result = text.lower() |
|
|
|
|
|
for arabizi_word, arabic_word in word_mappings.items(): |
|
|
|
pattern = r'\b' + re.escape(arabizi_word) + r'\b' |
|
result = re.sub(pattern, arabic_word, result, flags=re.IGNORECASE) |
|
|
|
|
|
for digraph, arabic_char in digraph_mappings.items(): |
|
result = result.replace(digraph, arabic_char) |
|
|
|
|
|
for char, arabic_char in char_mappings.items(): |
|
if len(char) == 1: |
|
result = result.replace(char, arabic_char) |
|
|
|
return result |
|
|
|
def arabic_to_arabizi(text): |
|
""" |
|
Convert Arabic script to Arabizi |
|
COMPLETE HARD-CODED MAPPINGS |
|
""" |
|
if not text: |
|
return text |
|
|
|
|
|
word_mappings = { |
|
|
|
'أنا': 'ana', 'نتا': 'nta', 'نتي': 'nti', 'هوا': 'howa', 'هيا': 'hiya', |
|
'حنا': 'hna', 'أحنا': 'ahna', 'نتوما': 'ntuma', 'هوما': 'huma', |
|
|
|
|
|
'شكون': 'shkoun', 'أشنو': 'achno', 'شنو': 'chno', 'أش': 'ach', |
|
'واش': 'wach', 'كيفاش': 'kifash', 'كيف': 'kif', 'فين': 'feen', |
|
'منين': 'mnin', 'إمتا': 'imta', 'متا': 'meta', 'علاش': '3lach', |
|
|
|
|
|
'بغيت': 'bghit', 'بغيتي': 'bghiti', 'بغا': 'bgha', 'بغينا': 'bghina', |
|
'كان': 'kan', 'كانا': 'kana', 'كانت': 'kanet', 'كانو': 'kanu', |
|
'قلت': 'galt', 'قلتي': 'galti', 'قال': 'gal', 'قالت': 'galet', |
|
'قالو': 'galou', 'قلنا': 'galina', |
|
'راح': 'rah', 'راها': 'raha', 'راهي': 'rahi', 'راهم': 'rahom', |
|
'غادي': 'ghadi', 'غاد': 'ghad', 'غا': 'gha', 'غادية': 'ghadia', |
|
'دير': 'dir', 'درت': 'dert', 'درات': 'derat', 'درنا': 'derna', |
|
'جا': 'ja', 'جات': 'jat', 'جينا': 'jina', 'جاو': 'jaou', |
|
'مشا': 'mcha', 'مشات': 'mchat', 'مشينا': 'mchina', 'مشاو': 'mchaou', |
|
|
|
|
|
'هاد': 'had', 'هادا': 'hada', 'هادي': 'hadi', 'هادو': 'hadou', |
|
'هادوك': 'hadouk', 'هادشي': 'hadchi', 'هاداك': 'hadak', |
|
'داك': 'dak', 'ديك': 'dik', 'دوك': 'dok', 'داكشي': 'dakchi', |
|
|
|
|
|
'واحد': 'wahed', 'جوج': 'joj', 'تلاتا': 'tlata', 'ربعا': 'rebaa', |
|
'خمسا': 'khamsa', 'ستا': 'setta', 'سبعا': 'sebaa', 'تمنيا': 'tmanya', |
|
'تسعا': 'tesaa', 'عشرا': 'ashra', |
|
|
|
|
|
'دابا': 'daba', 'توا': 'tawa', 'غدا': 'ghda', 'البارح': 'lbareeh', |
|
'نهار': 'nhar', 'ليلا': 'lila', 'صباح': 'sbah', 'عشيا': 'aachia', |
|
|
|
|
|
'ماما': 'mama', 'بابا': 'baba', 'خويا': 'khoya', 'ختي': 'khti', |
|
'ختيا': 'khtiya', 'أخي': 'akhi', 'أختي': 'ukhti', |
|
'جد': 'jad', 'جدا': 'jada', 'عمو': 'amo', 'عما': 'ama', |
|
|
|
|
|
'زوين': 'zwin', 'زوينا': 'zwina', 'قبيح': 'qbih', 'قبيحا': 'qbiha', |
|
'كبير': 'kbir', 'كبيرا': 'kbira', 'صغير': 'sghir', 'صغيرا': 'sghira', |
|
'تقيل': 'tqil', 'تقيلا': 'tqila', 'خفيف': 'khfif', 'خفيفا': 'khfifa', |
|
|
|
|
|
'بزاف': 'bzzaf', 'كتير': 'ktir', 'شوياة': 'chwiya', 'كولشي': 'kolchi', |
|
'كول': 'kol', 'غاع': 'gaa', 'حتا': 'hta', 'والو': 'walo', |
|
|
|
|
|
'ما': 'ma', 'ماشي': 'machi', 'مابغيتش': 'mabghitsh', 'ماكاينش': 'makainch', |
|
'ماكانش': 'makansh', 'ماغاتش': 'maghatch', 'مابغيش': 'mabaghish', |
|
|
|
|
|
'سلام': 'salam', 'يالاه': 'yallah', 'يالا': 'yalla', 'هيا': 'hya', |
|
'أجي': 'aji', 'سير': 'sir', 'سيري': 'siri', 'أجو': 'ajou', |
|
'مبروك': 'mabrook', 'باركا': 'baraka', 'بصحا': 'besaha', |
|
'الله': 'allah', 'ربي': 'rabi', 'إن شاء الله': 'inchallah', |
|
'ما شاء الله': 'machallah', 'الحمد لله': 'hamdulillah', |
|
|
|
|
|
'المغرب': 'lmaghrib', 'مغرب': 'maghrib', 'كازا': 'casa', |
|
'الرباط': 'rbat', 'فاس': 'fas', 'مكناس': 'mknas', |
|
'طنجا': 'tanja', 'أكادير': 'agadir', 'مراكش': 'marrakech', |
|
|
|
|
|
'طاجين': 'tajine', 'كوسكوس': 'couscous', 'مسمن': 'msemen', |
|
'رغايف': 'rghaif', 'حريرا': 'harira', 'أتاي': 'atay', |
|
'خوبز': 'khobz', 'الما': 'lma', 'لحم': 'lahem', 'دجاج': 'djaj', |
|
|
|
|
|
'دار': 'dar', 'بيت': 'bit', 'طوموبيل': 'tomo', 'كرهوبا': 'karhouba', |
|
'ماكلا': 'makla', 'خضرا': 'khodra', 'فواكه': 'fawakeh', |
|
'حوت': 'hout', 'اللبن': 'lben', 'سكر': 'skar', 'ملح': 'melh' |
|
} |
|
|
|
|
|
char_mappings = { |
|
'ا': 'a', 'ب': 'b', 'ت': 't', 'ث': 'th', 'ج': 'j', 'ح': '7', |
|
'خ': 'kh', 'د': 'd', 'ذ': 'dh', 'ر': 'r', 'ز': 'z', 'س': 's', |
|
'ش': 'sh', 'ص': 's', 'ض': 'd', 'ط': '6', 'ظ': 'z', 'ع': '3', |
|
'غ': 'gh', 'ف': 'f', 'ق': '9', 'ك': 'k', 'ل': 'l', 'م': 'm', |
|
'ن': 'n', 'ه': 'h', 'و': 'w', 'ي': 'y', 'ء': '2', |
|
'آ': 'aa', 'أ': 'a', 'إ': 'i', 'ئ': '2', 'ؤ': 'w2', 'ة': 'a', |
|
'ى': 'a', 'ً': 'an', 'ٌ': 'on', 'ٍ': 'in', 'َ': 'a', 'ُ': 'o', 'ِ': 'i' |
|
} |
|
|
|
|
|
result = text |
|
|
|
|
|
for arabic_word, arabizi_word in word_mappings.items(): |
|
|
|
pattern = r'\b' + re.escape(arabic_word) + r'\b' |
|
result = re.sub(pattern, arabizi_word, result) |
|
|
|
|
|
for arabic_char, arabizi_char in char_mappings.items(): |
|
result = result.replace(arabic_char, arabizi_char) |
|
|
|
return result |
|
|
|
def chat_with_atlas(message, history): |
|
"""Generate response from Atlas-Chat model with Arabizi conversion""" |
|
if not message.strip(): |
|
return "مرحبا! أهلا وسهلا. Please enter a message! / Ahlan wa sahlan!" |
|
|
|
try: |
|
|
|
model = load_model() |
|
|
|
|
|
is_arabizi_input = detect_arabizi(message) |
|
|
|
|
|
if is_arabizi_input: |
|
|
|
arabic_input = arabizi_to_arabic(message) |
|
print(f"🔄 Converted Arabizi '{message}' → Arabic '{arabic_input}'") |
|
model_input = arabic_input |
|
else: |
|
|
|
model_input = message |
|
|
|
|
|
messages = [{"role": "user", "content": model_input}] |
|
|
|
outputs = model( |
|
messages, |
|
max_new_tokens=256, |
|
temperature=0.1, |
|
do_sample=True, |
|
pad_token_id=model.tokenizer.eos_token_id |
|
) |
|
|
|
|
|
response = outputs[0]["generated_text"][-1]["content"].strip() |
|
|
|
|
|
if is_arabizi_input: |
|
arabizi_response = arabic_to_arabizi(response) |
|
print(f"🔄 Converted response '{response}' → Arabizi '{arabizi_response}'") |
|
return arabizi_response |
|
else: |
|
|
|
return response |
|
|
|
except Exception as e: |
|
|
|
if detect_arabizi(message): |
|
return f"sorry, kan chi mochkil: {str(e)}. 3awd jar'b!" |
|
else: |
|
return f"عذراً، واجهت خطأ: {str(e)}. جرب مرة أخرى! / Sorry, error occurred: {str(e)}. Try again!" |
|
|
|
|
|
demo = gr.ChatInterface( |
|
fn=chat_with_atlas, |
|
title="🏔️ Atlas-Chat: Moroccan Arabic AI Assistant", |
|
description=""" |
|
**مرحبا بك في أطلس شات!** Welcome to Atlas-Chat! 🇲🇦 |
|
|
|
**🧠 Smart Language Detection & Conversion:** |
|
- **Arabic Script (العربية)** → AI responds in Arabic |
|
- **Arabizi (3arabi bi 7oruf latin)** → AI responds in Arabizi |
|
- **English** → AI responds in English |
|
|
|
**✨ Full Arabizi Support:** Type "shkoun nta?" and get "ana atlas-chat..." |
|
|
|
**جرب هذه الأسئلة / Try these questions:** |
|
""", |
|
examples=[ |
|
"شكون لي صنعك؟", |
|
"shkoun li sna3ek?", |
|
"اشنو هو الطاجين؟", |
|
"achno howa tajine?", |
|
"شنو كيتسمى المنتخب المغربي؟", |
|
"chno kaytsma lmontakhab lmaghribi?", |
|
"What is Morocco famous for?", |
|
"Tell me about Casablanca", |
|
"كيفاش نقدر نتعلم الدارجة؟", |
|
"kifash n9der nt3elem darija?", |
|
"wach kayn atay f lmaghrib?", |
|
"3lach lmaghrib zwien bzzaf?", |
|
"kifash nsali tajine?", |
|
"chno homa l2aklat lmaghribiya?" |
|
], |
|
cache_examples=False |
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
demo.launch() |