BounharAbdelaziz commited on
Commit
b887515
·
verified ·
1 Parent(s): ec421d0

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +82 -0
app.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import pipeline, AutoModelForSeq2SeqLM, AutoTokenizer
3
+ import os
4
+
5
+ # Define model paths
6
+ MODEL_PATHS = {
7
+ "Terjman-Nano-v2": "BounharAbdelaziz/Terjman-Nano-v2.0",
8
+ "Terjman-Large-v2": "BounharAbdelaziz/Terjman-Large-v2.0",
9
+ "Terjman-Ultra-v2": "BounharAbdelaziz/Terjman-Ultra-v2.0",
10
+ "Terjman-Supreme-v2": "BounharAbdelaziz/Terjman-Supreme-v2.0"
11
+ }
12
+
13
+
14
+ # Translation function for Nano and Large models
15
+ def translate_nano_large(text, model_path):
16
+ translator = pipeline("translation", model=model_path)
17
+ translated = translator(
18
+ text,
19
+ max_length=512,
20
+ num_beams=4,
21
+ no_repeat_ngram_size=3,
22
+ early_stopping=True,
23
+ do_sample=False,
24
+ pad_token_id=translator.tokenizer.pad_token_id,
25
+ bos_token_id=translator.tokenizer.bos_token_id,
26
+ eos_token_id=translator.tokenizer.eos_token_id
27
+ )
28
+ return translated[0]["translation_text"]
29
+
30
+ # Translation function for Ultra and Supreme models
31
+ def translate_ultra_supreme(text, model_path):
32
+ model = AutoModelForSeq2SeqLM.from_pretrained(model_path)
33
+ tokenizer = AutoTokenizer.from_pretrained(model_path, src_lang="eng_Latn", tgt_lang="ary_Arab")
34
+ translator = pipeline(
35
+ "translation",
36
+ model=model,
37
+ tokenizer=tokenizer,
38
+ max_length=512,
39
+ src_lang="eng_Latn",
40
+ tgt_lang="ary_Arab"
41
+ )
42
+ translation = translator(text)[0]['translation_text']
43
+ return translation
44
+
45
+ # Main translation function
46
+ def translate_text(text, model_choice):
47
+ model_path = MODEL_PATHS[model_choice]
48
+ if model_choice in ["Terjman-Nano-v2", "Terjman-Large-v2"]:
49
+ return translate_nano_large(text, model_path)
50
+ elif model_choice in ["Terjman-Ultra-v2", "Terjman-Supreme-v2"]:
51
+ return translate_ultra_supreme(text, model_path)
52
+ else:
53
+ return "Invalid model selection."
54
+
55
+ # Gradio app
56
+ def gradio_app():
57
+ with gr.Blocks() as app:
58
+ gr.Markdown("# 🇲🇦 Terjman-v2")
59
+ gr.Markdown("Choose a model and enter the English text you want to translate to Moroccan Darija.")
60
+
61
+ model_choice = gr.Dropdown(
62
+ label="Select Model",
63
+ choices=["Terjman-Nano-v2", "Terjman-Large-v2", "Terjman-Ultra-v2", "Terjman-Supreme-v2"],
64
+ value="Terjman-Ultra-v2"
65
+ )
66
+ input_text = gr.Textbox(label="Input Text", placeholder="Enter text to translate...", lines=3)
67
+ output_text = gr.Textbox(label="Translated Text", interactive=False, lines=3)
68
+ translate_button = gr.Button("Translate")
69
+
70
+ # Link input and output
71
+ translate_button.click(
72
+ fn=translate_text,
73
+ inputs=[input_text, model_choice],
74
+ outputs=output_text
75
+ )
76
+
77
+ return app
78
+
79
+ # Run the app
80
+ if __name__ == "__main__":
81
+ app = gradio_app()
82
+ app.launch()