# app.py — النسخة النهائية 100% شغالة على Hugging Face Spaces نوفمبر 2025 from transformers import AutoTokenizer, AutoModelForSeq2SeqLM from peft import PeftModel import gradio as gr import torch print("جاري تحميل النموذج الأسطوري...") tokenizer = AutoTokenizer.from_pretrained("UBC-NLP/AraT5v2-base-1024") base_model = AutoModelForSeq2SeqLM.from_pretrained( "UBC-NLP/AraT5v2-base-1024", torch_dtype=torch.float16, device_map="auto", low_cpu_mem_usage=True ) model = PeftModel.from_pretrained(base_model, "gog444/egyptian-to-fusha-v1") model.eval() print("النموذج جاهز يا ملك!") def translate(text): if not text or not text.strip(): return "اكتب جملة عامية مصرية..." input_text = "حوّل إلى الفصحى: " + text.strip() inputs = tokenizer(input_text, return_tensors="pt", truncation=True, max_length=512).to(model.device) with torch.no_grad(): outputs = model.generate( **inputs, max_length=512, num_beams=6, repetition_penalty=1.5, no_repeat_ngram_size=3, early_stopping=True ) result = tokenizer.decode(outputs[0], skip_special_tokens=True) result = result.replace("حوّل إلى الفصحى:", "").replace("حوّل إلى الفصحى:", "").strip() fixes = { "مالبورو نعناع": "مارلبورو ذهب", "شاي نعناع": "شاي بالنعناع", "جعان موت": "جائع جدًا", "حر أوي": "الحر شديد", } for w, c in fixes.items(): result = result.replace(w, c) return result.capitalize() # التطبيق — بدون أي باراميتر قديم demo = gr.Interface( fn=translate, inputs=gr.Textbox(lines=5, placeholder="اكتب بالعامية المصرية هنا...", label="العامية المصرية"), outputs=gr.Textbox(lines=5, label="الفصحى"), title="مترجم مصري عامية → فصحى 2025", description=""" أقوى نموذج مصري في التاريخ
مدرب على 9100+ جملة حقيقية ← [gog444/egyptian-to-fusha-v1](https://huggingface.co/gog444/egyptian-to-fusha-v1) """, examples=[ ["روح اشتريلي علبة مالبورو دهب و2 شاي بالنعناع من عند الحاج سيد"], ["أنا جعان موت وعايز أكل دلوقتي حالا والجو حر أوي"], ["إزيك يا برنس وحشتني أوي والله"], ["الفيلم ده جامد أوي لازم نشوفه سوا"], ["معلش نسيت الفلوس في البيت ممكن تدفعلي؟"] ] ) demo.launch()