Ubuntu
commited on
Commit
Β·
ebb51c2
1
Parent(s):
d8c4e42
Remove max tokens slider and simplify interface
Browse files
app.py
CHANGED
@@ -1,58 +1,76 @@
|
|
1 |
import gradio as gr
|
2 |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
|
3 |
|
4 |
-
# Load
|
5 |
-
# English to Moroccan Arabic (Darija)
|
6 |
tokenizer_eng_to_darija = AutoTokenizer.from_pretrained("lachkarsalim/Helsinki-translation-English_Moroccan-Arabic")
|
7 |
model_eng_to_darija = AutoModelForSeq2SeqLM.from_pretrained("lachkarsalim/Helsinki-translation-English_Moroccan-Arabic")
|
8 |
|
9 |
-
# Moroccan Arabic (Darija) to Modern Standard Arabic (MSA)
|
10 |
tokenizer_darija_to_msa = AutoTokenizer.from_pretrained("Saidtaoussi/AraT5_Darija_to_MSA")
|
11 |
model_darija_to_msa = AutoModelForSeq2SeqLM.from_pretrained("Saidtaoussi/AraT5_Darija_to_MSA")
|
12 |
|
13 |
-
# Translation
|
14 |
def translate_darija_to_msa(darija_text):
|
15 |
inputs = tokenizer_darija_to_msa(darija_text, return_tensors="pt", padding=True)
|
16 |
translated = model_darija_to_msa.generate(**inputs)
|
17 |
translated_text = tokenizer_darija_to_msa.decode(translated[0], skip_special_tokens=True)
|
18 |
return translated_text
|
19 |
|
20 |
-
# Translation function for English to Moroccan Arabic and vice versa
|
21 |
def translate_eng_to_darija(eng_text, direction="eng_to_darija"):
|
22 |
if direction == "eng_to_darija":
|
23 |
inputs = tokenizer_eng_to_darija(eng_text, return_tensors="pt", padding=True)
|
24 |
translated = model_eng_to_darija.generate(**inputs)
|
25 |
translated_text = tokenizer_eng_to_darija.decode(translated[0], skip_special_tokens=True)
|
26 |
else:
|
27 |
-
#
|
28 |
inputs = tokenizer_eng_to_darija(eng_text, return_tensors="pt", padding=True)
|
29 |
translated = model_eng_to_darija.generate(**inputs)
|
30 |
translated_text = tokenizer_eng_to_darija.decode(translated[0], skip_special_tokens=True)
|
31 |
return translated_text
|
32 |
|
33 |
-
|
34 |
-
|
35 |
-
def respond(message, translation_choice: str):
|
36 |
-
# Translate based on the user's choice
|
37 |
if translation_choice == "Moroccan Arabic to MSA":
|
38 |
return translate_darija_to_msa(message)
|
39 |
elif translation_choice == "English to Moroccan Arabic":
|
40 |
return translate_eng_to_darija(message, direction="eng_to_darija")
|
41 |
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
gr.
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
# Launch the interface
|
57 |
demo.launch()
|
58 |
|
|
|
|
1 |
import gradio as gr
|
2 |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
|
3 |
|
4 |
+
# Load models
|
|
|
5 |
tokenizer_eng_to_darija = AutoTokenizer.from_pretrained("lachkarsalim/Helsinki-translation-English_Moroccan-Arabic")
|
6 |
model_eng_to_darija = AutoModelForSeq2SeqLM.from_pretrained("lachkarsalim/Helsinki-translation-English_Moroccan-Arabic")
|
7 |
|
|
|
8 |
tokenizer_darija_to_msa = AutoTokenizer.from_pretrained("Saidtaoussi/AraT5_Darija_to_MSA")
|
9 |
model_darija_to_msa = AutoModelForSeq2SeqLM.from_pretrained("Saidtaoussi/AraT5_Darija_to_MSA")
|
10 |
|
11 |
+
# Translation functions
|
12 |
def translate_darija_to_msa(darija_text):
|
13 |
inputs = tokenizer_darija_to_msa(darija_text, return_tensors="pt", padding=True)
|
14 |
translated = model_darija_to_msa.generate(**inputs)
|
15 |
translated_text = tokenizer_darija_to_msa.decode(translated[0], skip_special_tokens=True)
|
16 |
return translated_text
|
17 |
|
|
|
18 |
def translate_eng_to_darija(eng_text, direction="eng_to_darija"):
|
19 |
if direction == "eng_to_darija":
|
20 |
inputs = tokenizer_eng_to_darija(eng_text, return_tensors="pt", padding=True)
|
21 |
translated = model_eng_to_darija.generate(**inputs)
|
22 |
translated_text = tokenizer_eng_to_darija.decode(translated[0], skip_special_tokens=True)
|
23 |
else:
|
24 |
+
# Reverse translation (Darija to English)
|
25 |
inputs = tokenizer_eng_to_darija(eng_text, return_tensors="pt", padding=True)
|
26 |
translated = model_eng_to_darija.generate(**inputs)
|
27 |
translated_text = tokenizer_eng_to_darija.decode(translated[0], skip_special_tokens=True)
|
28 |
return translated_text
|
29 |
|
30 |
+
# Respond function
|
31 |
+
def respond(message, translation_choice):
|
|
|
|
|
32 |
if translation_choice == "Moroccan Arabic to MSA":
|
33 |
return translate_darija_to_msa(message)
|
34 |
elif translation_choice == "English to Moroccan Arabic":
|
35 |
return translate_eng_to_darija(message, direction="eng_to_darija")
|
36 |
|
37 |
|
38 |
+
# Gradio Interface Layout with organized components
|
39 |
+
with gr.Blocks() as demo:
|
40 |
+
with gr.Row():
|
41 |
+
with gr.Column():
|
42 |
+
# Header with logo and emojis
|
43 |
+
gr.Markdown("""
|
44 |
+
<h1 style="text-align: center;">
|
45 |
+
π²π¦ π Moroccan Arabic Translation Demo by Amal π
|
46 |
+
</h1>
|
47 |
+
<p style="text-align: center;">
|
48 |
+
π Dima Meghrib π <br>
|
49 |
+
Select the translation direction and type your text. <br>
|
50 |
+
Get quick translations between **English** and **Moroccan Arabic (Darija)**! π₯
|
51 |
+
</p>
|
52 |
+
<img src="https://moroccan-culture-image.s3.eu-north-1.amazonaws.com/2159558.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=ASIAW3MD7RUI6BPOSTGF%2F20250225%2Feu-north-1%2Fs3%2Faws4_request&X-Amz-Date=20250225T212742Z&X-Amz-Expires=300&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEBUaCmV1LW5vcnRoLTEiSDBGAiEA2wC2GISJOKipdbfMelCGfMqoPHnVnM9aY0zmsgmINpACIQCkA5VvqMaCEHNVwJml3%2FBJu%2FQlrU120PByOy8dSEfkdSrqAwhPEAAaDDQ3MTExMjU4NDQ2NSIMosytLgjLE%2BjysHncKscD5SmK3%2FV7ycLFyJpg8GMUa2bi%2BB4Tlj4YLxW37IxScYWjA5dOLyc9NnJNQ87K73ZRJLFSv1sogcVvRQqOnq3Cjb1AQwtljD4MHBjPIpgy7QVBov%2BAdUMzehD7K%2FhL8ME2pLPMV70E12dSdRRpablepF3Y%2FrHU1S8s4HJ%2BDAmfEF6gmnexTRyXVIEYodn%2FqPtOR5oaUF17SGEmmKJBi4b2kLQN%2B353pYrkB8ciBn0gAScNVkkgs2PuDUmzcXtw%2F4qcASvZ%2F11za7YSO%2FPrK30tFrOuVQQgjaB2h4a5%2BETBuXdLDX6EkbnEmN2Rh2ZH0adBut2UnOR9AtR4lRHDtk7qnRrlof6byqCqjDHu9iaJVcBpNMojNo%2BFZMofqZrnKygggvCaJhI3a%2FmJo7v0moz0nRhljyCA18ieJ8PYIBwqGcc53MneKRBbyTrI%2F7lHimTQZ4RDiD8E42qyxyh5vYOOBd9ijYog%2FZEsvzzaLfQC1niWfT35NcpzNXn0QMp8vjHa3S57nV3vXY7uXqj7i6Hf0JGG8YrZ3bpizt3q%2FY1zSHc9RCrYALCmWm9xfXsxy4woC10vBTP9S9tYaKS1j60bOADWikoeemUw4Oj4vQY6kwKyzIUJZkcmGcdRVff6NtSS%2F7hCsUUtyoygbvXIudEFO2jQDChI%2Fx5YbO%2BPH3ynUKVjncXGmtWR7%2BoncsXjFg7xrzsYjBjmDuHWF1umN%2BnA%2FPng6CfJ%2Br%2BlI5VxjnZCAZsvbGEKp9xKSSUI9KXcdsOYC4sMzNm1NdzU3wuWPhlJHvv7Y6Ma%2FPQwUkfDCCBphGheYqiZrQieDLpcnI6TNiefFOzRipE27fbtJXwbzoXIIhlQdtML7LXsQq5XeISwXGRZjeIQo5bIF6ab5QpA%2BFcmvAiVQlAh%2Byqa2KMjZhVHiFxMcPZXb0lRO3y2lB40FGKbQ7SVyUrDJg6pE%2FF67NMhCkanOp34hhjZ4JlWbGcIeBTTPw%3D%3D&X-Amz-Signature=b1f49904eefdd46e21dfe6a89c73c39f41e1b8631afd2b242f9d68e79c025def&X-Amz-SignedHeaders=host&response-content-disposition=inline"
|
53 |
+
style="width: 100px; display: block; margin: 20px auto;" alt="Dima Meghrib Logo" />
|
54 |
+
""")
|
55 |
+
|
56 |
+
with gr.Column():
|
57 |
+
# Left Column for Inputs
|
58 |
+
user_input = gr.Textbox(label="Enter Your Text", placeholder="Type your sentence here...")
|
59 |
+
translation_choice = gr.Dropdown(
|
60 |
+
label="Choose Translation Direction",
|
61 |
+
choices=["English to Moroccan Arabic", "Moroccan Arabic to MSA"],
|
62 |
+
value="English to Moroccan Arabic"
|
63 |
+
)
|
64 |
+
submit_button = gr.Button("Submit", elem_id="submit_button")
|
65 |
+
|
66 |
+
with gr.Row():
|
67 |
+
# Right Column for Outputs
|
68 |
+
output = gr.Textbox(label="Translated Text", placeholder="Translation will appear here...")
|
69 |
+
|
70 |
+
# Define the action for submit
|
71 |
+
submit_button.click(fn=respond, inputs=[user_input, translation_choice], outputs=output)
|
72 |
|
73 |
# Launch the interface
|
74 |
demo.launch()
|
75 |
|
76 |
+
|