File size: 4,104 Bytes
15678e0
82da87b
15678e0
c8ef715
d8c4e42
 
15678e0
d8c4e42
 
 
ebb51c2
d8c4e42
 
 
 
 
 
 
 
 
 
 
 
ebb51c2
d8c4e42
 
 
 
 
ebb51c2
 
d8c4e42
 
 
 
15678e0
ebb51c2
 
 
 
c8ef715
ebb51c2
 
c8ef715
ebb51c2
 
 
 
c8ef715
ebb51c2
e3808d6
 
3be03aa
 
e3808d6
 
 
3be03aa
e3808d6
 
ebb51c2
3be03aa
 
 
 
 
 
 
 
 
ebb51c2
3be03aa
ebb51c2
 
c8ef715
 
 
ebb51c2
 
15678e0
419f944
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import gradio as gr
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM

# Load both translation models from Hugging Face
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")

# Translation functions
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:
        # Reverse translation (Darija to English)
        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

# Respond function
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")

# Gradio Interface Layout with organized components
with gr.Blocks() as demo:
    with gr.Row():
        with gr.Column():
            # Header with emojis and logo
            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>
            """)
        # Translation Inputs and Outputs
        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 area for translated text
        output = gr.Textbox(label="Translated Text", placeholder="Translation will appear here...")

    # Footer with your name at the bottom
    gr.Markdown("<p style='text-align: center; font-size: 14px;'>Created by Eng Amal 🌟</p>")

    # Define the action for submit
    submit_button.click(fn=respond, inputs=[user_input, translation_choice], outputs=output)

# Launch the interface
demo.launch()