Spaces:
Running
Running
# coding=utf-8 | |
import gradio as gr | |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM | |
dict_map = { | |
"òa": "oà", | |
"Òa": "Oà", | |
"ÒA": "OÀ", | |
"óa": "oá", | |
"Óa": "Oá", | |
"ÓA": "OÁ", | |
"ỏa": "oả", | |
"Ỏa": "Oả", | |
"ỎA": "OẢ", | |
"õa": "oã", | |
"Õa": "Oã", | |
"ÕA": "OÃ", | |
"ọa": "oạ", | |
"Ọa": "Oạ", | |
"ỌA": "OẠ", | |
"òe": "oè", | |
"Òe": "Oè", | |
"ÒE": "OÈ", | |
"óe": "oé", | |
"Óe": "Oé", | |
"ÓE": "OÉ", | |
"ỏe": "oẻ", | |
"Ỏe": "Oẻ", | |
"ỎE": "OẺ", | |
"õe": "oẽ", | |
"Õe": "Oẽ", | |
"ÕE": "OẼ", | |
"ọe": "oẹ", | |
"Ọe": "Oẹ", | |
"ỌE": "OẸ", | |
"ùy": "uỳ", | |
"Ùy": "Uỳ", | |
"ÙY": "UỲ", | |
"úy": "uý", | |
"Úy": "Uý", | |
"ÚY": "UÝ", | |
"ủy": "uỷ", | |
"Ủy": "Uỷ", | |
"ỦY": "UỶ", | |
"ũy": "uỹ", | |
"Ũy": "Uỹ", | |
"ŨY": "UỸ", | |
"ụy": "uỵ", | |
"Ụy": "Uỵ", | |
"ỤY": "UỴ", | |
} | |
tokenizer_vi2en = AutoTokenizer.from_pretrained("vinai/vinai-translate-vi2en-v2", src_lang="vi_VN") | |
model_vi2en = AutoModelForSeq2SeqLM.from_pretrained("vinai/vinai-translate-vi2en-v2") | |
def translate_vi2en(vi_text: str) -> str: | |
for i, j in dict_map.items(): | |
vi_text = vi_text.replace(i, j) | |
input_ids = tokenizer_vi2en(vi_text, return_tensors="pt").input_ids | |
output_ids = model_vi2en.generate( | |
input_ids, | |
decoder_start_token_id=tokenizer_vi2en.lang_code_to_id["en_XX"], | |
num_return_sequences=1, | |
# # With sampling | |
# do_sample=True, | |
# top_k=100, | |
# top_p=0.8, | |
# With beam search | |
num_beams=5, | |
early_stopping=True | |
) | |
en_text = tokenizer_vi2en.batch_decode(output_ids, skip_special_tokens=True) | |
en_text = " ".join(en_text) | |
return en_text | |
tokenizer_en2vi = AutoTokenizer.from_pretrained("vinai/vinai-translate-en2vi-v2", src_lang="en_XX") | |
model_en2vi = AutoModelForSeq2SeqLM.from_pretrained("vinai/vinai-translate-en2vi-v2") | |
def translate_en2vi(en_text: str) -> str: | |
input_ids = tokenizer_en2vi(en_text, return_tensors="pt").input_ids | |
output_ids = model_en2vi.generate( | |
input_ids, | |
decoder_start_token_id=tokenizer_en2vi.lang_code_to_id["vi_VN"], | |
num_return_sequences=1, | |
# # With sampling | |
# do_sample=True, | |
# top_k=100, | |
# top_p=0.8, | |
# With beam search | |
num_beams=5, | |
early_stopping=True | |
) | |
vi_text = tokenizer_en2vi.batch_decode(output_ids, skip_special_tokens=True) | |
vi_text = " ".join(vi_text) | |
return vi_text | |
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.", | |
"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"] | |
en_example_text = ["I haven't been to a public gym before. When I exercise in a private space, I feel more comfortable.", | |
"i haven't been to a public gym before when i exercise in a private space i feel more comfortable"] | |
with gr.Blocks() as demo: | |
with gr.Tabs(): | |
with gr.TabItem("Vietnamese to English"): | |
with gr.Row(): | |
with gr.Column(): | |
vietnamese = gr.Textbox(label="Vietnamese Text") | |
translate_to_english = gr.Button(value="Translate To English") | |
with gr.Column(): | |
english = gr.Textbox(label="English Text") | |
translate_to_english.click(lambda text: translate_vi2en(text), inputs=vietnamese, outputs=english) | |
gr.Examples(examples=vi_example_text, | |
inputs=[vietnamese]) | |
with gr.TabItem("English to Vietnamese"): | |
with gr.Row(): | |
with gr.Column(): | |
english = gr.Textbox(label="English Text") | |
translate_to_vietnamese = gr.Button(value="Translate To Vietnamese") | |
with gr.Column(): | |
vietnamese = gr.Textbox(label="Vietnamese Text") | |
translate_to_vietnamese.click(lambda text: translate_en2vi(text), inputs=english, outputs=vietnamese) | |
gr.Examples(examples=en_example_text, | |
inputs=[english]) | |
if __name__ == "__main__": | |
demo.launch() |