BryanBradfo commited on
Commit
b90039b
·
1 Parent(s): 2e98ea4
Files changed (2) hide show
  1. app.py +99 -0
  2. requirements.txt +4 -0
app.py ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import T5ForConditionalGeneration, T5Tokenizer
3
+
4
+ # Initialize T5 model and tokenizer
5
+ model_name = "google-t5/t5-base"
6
+ tokenizer = T5Tokenizer.from_pretrained(model_name)
7
+ model = T5ForConditionalGeneration.from_pretrained(model_name)
8
+
9
+ # Language codes for T5
10
+ language_codes = {
11
+ "English": "en",
12
+ "French": "fr",
13
+ "Japanese": "ja",
14
+ "Spanish": "es",
15
+ "Mandarin": "zh"
16
+ }
17
+
18
+ def translate(text, source_lang, target_lang):
19
+ """Translate text using T5 model"""
20
+ if not text:
21
+ return ""
22
+
23
+ if source_lang == target_lang:
24
+ return text
25
+
26
+ source_code = language_codes[source_lang]
27
+ target_code = language_codes[target_lang]
28
+
29
+ # Format input for T5 (needs to be in format: "translate {source} to {target}: {text}")
30
+ input_text = f"translate {source_code} to {target_code}: {text}"
31
+
32
+ # Tokenize and generate translation
33
+ input_ids = tokenizer(input_text, return_tensors="pt").input_ids
34
+ outputs = model.generate(input_ids, max_length=512)
35
+ translation = tokenizer.decode(outputs[0], skip_special_tokens=True)
36
+
37
+ return translation
38
+
39
+ # Example texts in different languages
40
+ examples = {
41
+ "English": ["Hello, how are you today?", "I would like to visit Japan someday."],
42
+ "French": ["Bonjour, comment allez-vous aujourd'hui?", "J'aimerais visiter le Japon un jour."],
43
+ "Japanese": ["こんにちは、今日はお元気ですか?", "いつか日本を訪れたいです。"],
44
+ "Spanish": ["Hola, ¿cómo estás hoy?", "Me gustaría visitar Japón algún día."],
45
+ "Mandarin": ["你好,今天好吗?", "我希望有一天能去日本。"]
46
+ }
47
+
48
+ # Create Gradio interface
49
+ with gr.Blocks() as demo:
50
+ gr.Markdown("# Multilingual Translation with T5")
51
+
52
+ with gr.Row():
53
+ source_lang = gr.Dropdown(
54
+ choices=list(language_codes.keys()),
55
+ label="Source Language",
56
+ value="English"
57
+ )
58
+ target_lang = gr.Dropdown(
59
+ choices=list(language_codes.keys()),
60
+ label="Target Language",
61
+ value="French"
62
+ )
63
+
64
+ with gr.Row():
65
+ with gr.Column():
66
+ source_text = gr.Textbox(label="Source Text", lines=5)
67
+ translate_btn = gr.Button(value="Translate")
68
+
69
+ with gr.Column():
70
+ target_text = gr.Textbox(label="Translation Result", lines=5)
71
+
72
+ # Set up examples based on source language
73
+ example_list = gr.Examples(
74
+ examples=examples["English"],
75
+ inputs=source_text
76
+ )
77
+
78
+ # Update examples when source language changes
79
+ def update_examples(lang):
80
+ return gr.Examples.update(examples=examples.get(lang, examples["English"]))
81
+
82
+ source_lang.change(update_examples, inputs=source_lang, outputs=example_list)
83
+
84
+ # Set up translation function
85
+ translate_btn.click(
86
+ translate,
87
+ inputs=[source_text, source_lang, target_lang],
88
+ outputs=target_text
89
+ )
90
+
91
+ # Also translate when Enter is pressed in the source text box
92
+ source_text.submit(
93
+ translate,
94
+ inputs=[source_text, source_lang, target_lang],
95
+ outputs=target_text
96
+ )
97
+
98
+ if __name__ == "__main__":
99
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ gradio>=3.50.2
2
+ transformers>=4.35.0
3
+ torch>=2.0.0
4
+ sentencepiece>=0.1.99