dqnguyen commited on
Commit
63d8081
1 Parent(s): e0db965

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +121 -0
app.py ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # coding=utf-8
2
+
3
+ import gradio as gr
4
+ from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
5
+
6
+ dict_map = {
7
+ "òa": "oà",
8
+ "Òa": "Oà",
9
+ "ÒA": "OÀ",
10
+ "óa": "oá",
11
+ "Óa": "Oá",
12
+ "ÓA": "OÁ",
13
+ "ỏa": "oả",
14
+ "Ỏa": "Oả",
15
+ "ỎA": "OẢ",
16
+ "õa": "oã",
17
+ "Õa": "Oã",
18
+ "ÕA": "OÃ",
19
+ "ọa": "oạ",
20
+ "Ọa": "Oạ",
21
+ "ỌA": "OẠ",
22
+ "òe": "oè",
23
+ "Òe": "Oè",
24
+ "ÒE": "OÈ",
25
+ "óe": "oé",
26
+ "Óe": "Oé",
27
+ "ÓE": "OÉ",
28
+ "ỏe": "oẻ",
29
+ "Ỏe": "Oẻ",
30
+ "ỎE": "OẺ",
31
+ "õe": "oẽ",
32
+ "Õe": "Oẽ",
33
+ "ÕE": "OẼ",
34
+ "ọe": "oẹ",
35
+ "Ọe": "Oẹ",
36
+ "ỌE": "OẸ",
37
+ "ùy": "uỳ",
38
+ "Ùy": "Uỳ",
39
+ "ÙY": "UỲ",
40
+ "úy": "uý",
41
+ "Úy": "Uý",
42
+ "ÚY": "UÝ",
43
+ "ủy": "uỷ",
44
+ "Ủy": "Uỷ",
45
+ "ỦY": "UỶ",
46
+ "ũy": "uỹ",
47
+ "Ũy": "Uỹ",
48
+ "ŨY": "UỸ",
49
+ "ụy": "uỵ",
50
+ "Ụy": "Uỵ",
51
+ "ỤY": "UỴ",
52
+ }
53
+
54
+ tokenizer_vi2en = AutoTokenizer.from_pretrained("vinai/vinai-translate-vi2en", src_lang="vi_VN")
55
+ model_vi2en = AutoModelForSeq2SeqLM.from_pretrained("vinai/vinai-translate-vi2en")
56
+
57
+ def translate_vi2en(vi_text: str) -> str:
58
+ for i, j in dict_map.items():
59
+ vi_text = vi_text.replace(i, j)
60
+ input_ids = tokenizer_vi2en(vi_text, return_tensors="pt").input_ids
61
+ output_ids = model_vi2en.generate(
62
+ input_ids,
63
+ do_sample=True,
64
+ top_k=100,
65
+ top_p=0.8,
66
+ decoder_start_token_id=tokenizer_vi2en.lang_code_to_id["en_XX"],
67
+ num_return_sequences=1,
68
+ )
69
+ en_text = tokenizer_vi2en.batch_decode(output_ids, skip_special_tokens=True)
70
+ en_text = " ".join(en_text)
71
+ return en_text
72
+
73
+ tokenizer_en2vi = AutoTokenizer.from_pretrained("vinai/vinai-translate-en2vi", src_lang="en_XX")
74
+ model_en2vi = AutoModelForSeq2SeqLM.from_pretrained("vinai/vinai-translate-en2vi")
75
+
76
+ def translate_en2vi(en_text: str) -> str:
77
+ input_ids = tokenizer_en2vi(en_text, return_tensors="pt").input_ids
78
+ output_ids = model_en2vi.generate(
79
+ input_ids,
80
+ do_sample=True,
81
+ top_k=100,
82
+ top_p=0.8,
83
+ decoder_start_token_id=tokenizer_en2vi.lang_code_to_id["vi_VN"],
84
+ num_return_sequences=1,
85
+ )
86
+ vi_text = tokenizer_en2vi.batch_decode(output_ids, skip_special_tokens=True)
87
+ vi_text = " ".join(vi_text)
88
+ return vi_text
89
+
90
+ vi_example_text = ["Cô cho biết: trước giờ tôi không đến phòng tập công cộng, mà tập cùng giáo viên Yoga riêng hoặc tự tập ở nhà. Khi tập thể dục trong không gian riêng tư, tôi thoải mái dễ chịu hơn.",
91
+ "cô cho biết trước giờ tôi không đến phòng tập công cộng mà tập cùng giáo viên yoga riêng hoặc tự tập ở nhà khi tập thể dục trong không gian riêng tư tôi thoải mái dễ chịu hơn"]
92
+
93
+ en_example_text = ["I haven't been to a public gym before. When I exercise in a private space, I feel more comfortable.",
94
+ "i haven't been to a public gym before when i exercise in a private space i feel more comfortable"]
95
+
96
+ with gr.Blocks() as demo:
97
+ with gr.Tabs():
98
+ with gr.TabItem("Vietnamese to English"):
99
+ with gr.Row():
100
+ with gr.Column():
101
+ vietnamese = gr.Textbox(label="Vietnamese Text")
102
+ translate_to_english = gr.Button(value="Translate To English")
103
+ with gr.Column():
104
+ german = gr.Textbox(label="English Text")
105
+ translate_to_english.click(lambda text: translate_vi2en(text), inputs=vietnamese, outputs=german)
106
+ gr.Examples(examples=vi_example_text,
107
+ inputs=[vietnamese])
108
+
109
+ with gr.TabItem("English to Vietnamese"):
110
+ with gr.Row():
111
+ with gr.Column():
112
+ english = gr.Textbox(label="English Text")
113
+ translate_to_vietnamese = gr.Button(value="Translate To Vietnamese")
114
+ with gr.Column():
115
+ german = gr.Textbox(label="Vietnamese Text")
116
+ translate_to_vietnamese.click(lambda text: translate_en2vi(text), inputs=english, outputs=german)
117
+ gr.Examples(examples=en_example_text,
118
+ inputs=[english])
119
+
120
+ if __name__ == "__main__":
121
+ demo.launch()