|
import gradio as gr |
|
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM |
|
|
|
|
|
tokenizer_eng_to_darija = AutoTokenizer.from_pretrained("lachkarsalim/Helsinki-translation-English_Moroccan-Arabic") |
|
model_eng_to_darija = AutoModelForSeq2SeqLM.from_pretrained("lachkarsalim/Helsinki-translation-English_Moroccan-Arabic") |
|
|
|
tokenizer_darija_to_msa = AutoTokenizer.from_pretrained("Saidtaoussi/AraT5_Darija_to_MSA") |
|
model_darija_to_msa = AutoModelForSeq2SeqLM.from_pretrained("Saidtaoussi/AraT5_Darija_to_MSA") |
|
|
|
|
|
def translate_darija_to_msa(darija_text): |
|
inputs = tokenizer_darija_to_msa(darija_text, return_tensors="pt", padding=True) |
|
translated = model_darija_to_msa.generate(**inputs) |
|
translated_text = tokenizer_darija_to_msa.decode(translated[0], skip_special_tokens=True) |
|
return translated_text |
|
|
|
def translate_eng_to_darija(eng_text, direction="eng_to_darija"): |
|
if direction == "eng_to_darija": |
|
inputs = tokenizer_eng_to_darija(eng_text, return_tensors="pt", padding=True) |
|
translated = model_eng_to_darija.generate(**inputs) |
|
translated_text = tokenizer_eng_to_darija.decode(translated[0], skip_special_tokens=True) |
|
else: |
|
|
|
inputs = tokenizer_eng_to_darija(eng_text, return_tensors="pt", padding=True) |
|
translated = model_eng_to_darija.generate(**inputs) |
|
translated_text = tokenizer_eng_to_darija.decode(translated[0], skip_special_tokens=True) |
|
return translated_text |
|
|
|
|
|
def respond(message, translation_choice): |
|
if translation_choice == "Moroccan Arabic to MSA": |
|
return translate_darija_to_msa(message) |
|
elif translation_choice == "English to Moroccan Arabic": |
|
return translate_eng_to_darija(message, direction="eng_to_darija") |
|
|
|
|
|
with gr.Blocks() as demo: |
|
with gr.Row(): |
|
with gr.Column(): |
|
|
|
gr.Markdown(""" |
|
<h1 style="text-align: center;"> |
|
π²π¦ π Moroccan Arabic Translation Demo π |
|
</h1> |
|
<p style="text-align: center;"> |
|
π Dima Meghrib π <br> |
|
Select the translation direction and type your text. <br> |
|
Get quick translations between **English** and **Moroccan Arabic (Darija)** or **Darija to Modern Standard Arabic (MSA)**! π₯ |
|
</p> |
|
<p style="text-align: center;"> |
|
This demo uses two advanced models:<br> |
|
- English to Moroccan Arabic (Darija)<br> |
|
- Moroccan Arabic (Darija) to Modern Standard Arabic (MSA)<br> |
|
Choose your desired translation direction and get started!<br> |
|
</p> |
|
<p style="text-align: center;"> |
|
<img src="https://moroccan-culture-image.s3.eu-north-1.amazonaws.com/2159558.png" |
|
style="width: 150px; display: block; margin: 20px auto;" alt="Moroccan Flag" /> |
|
</p> |
|
""") |
|
|
|
user_input = gr.Textbox(label="Enter Your Text", placeholder="Type your sentence here...") |
|
translation_choice = gr.Dropdown( |
|
label="Choose Translation Direction", |
|
choices=["English to Moroccan Arabic", "Moroccan Arabic to MSA"], |
|
value="English to Moroccan Arabic" |
|
) |
|
submit_button = gr.Button("Submit", elem_id="submit_button") |
|
|
|
with gr.Row(): |
|
|
|
output = gr.Textbox(label="Translated Text", placeholder="Translation will appear here...") |
|
|
|
|
|
gr.Markdown("<p style='text-align: center; font-size: 14px;'>Created by Eng Amal π</p>") |
|
|
|
|
|
submit_button.click(fn=respond, inputs=[user_input, translation_choice], outputs=output) |
|
|
|
|
|
demo.launch() |
|
|