# 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()