Spaces:
Running
Running
| import gradio as gr | |
| from transformers import MT5Tokenizer, MT5ForConditionalGeneration | |
| title = "Dịch ngôn ngữ bản địa" | |
| modelMuVi = 'mr4/trans-mu-vi' | |
| modelViMu = 'mr4/trans-vi-mu' | |
| examplesMu = [ | |
| 'Ủn cha̒w tưở da̭.', | |
| 'Mẩi zơ̒ hơ̒i za?', | |
| 'Hwa tḙp chôổng ma̭ng. Hwa zói chôổng pổ.' | |
| ] | |
| examplesVi = [ | |
| 'Em chào anh ạ.', | |
| 'Mấy giờ rồi?', | |
| 'Hoa đẹp giống mẹ, Hoa giỏi giống bô.' | |
| ] | |
| cache = 'cache' | |
| default_language = 'Tiếng Mường -> Tiếng Việt phổ thông' | |
| languages = [ | |
| default_language, | |
| 'Tiếng Việt phổ thông -> Tiếng Mường', | |
| ] | |
| def translate(text, language): | |
| match language: | |
| case 0: | |
| model_name = modelMuVi | |
| case 1: | |
| model_name = modelViMu | |
| case _: | |
| return ['', 'Không hỗ trợ ngôn ngữ hiện tại!'] | |
| tokenizer = MT5Tokenizer.from_pretrained(model_name, cache_dir=cache) | |
| model = MT5ForConditionalGeneration.from_pretrained(model_name, cache_dir=cache) | |
| inputs = tokenizer(text, return_tensors="pt", max_length=512, padding=True, truncation=True) | |
| translated = model.generate(**inputs) | |
| return [tokenizer.decode(translated[0], skip_special_tokens=True), model_name] | |
| with gr.Blocks() as demo: | |
| with gr.Row(): | |
| gr.HTML( | |
| value=f"<h1 style='text-align: center; font-weight: bold;'>{title}</h1>") | |
| with gr.Row(): | |
| source_language_dropdown = gr.Dropdown(choices=languages, value=default_language, label="Chọn ngôn ngữ cần dịch", type='index') | |
| with gr.Row(): | |
| with gr.Column(): | |
| input_textbox = gr.Text(placeholder="Nhập nội dung cần dịch", label="Nội dung") | |
| with gr.Column(): | |
| translated_textbox = gr.Text(placeholder="", label="Bản dịch") | |
| btn = gr.Button("Dịch") | |
| lbl = gr.HTML("") | |
| btn.click(translate, inputs=[input_textbox, source_language_dropdown], outputs=[translated_textbox, lbl]) | |
| gr.Examples(examples=examplesMu, inputs=input_textbox, label="Ví dụ tiếng Mường") | |
| gr.Examples(examples=examplesVi, inputs=input_textbox, label="Ví dụ tiếng Việt phổ thông") | |
| with gr.Row(): | |
| gr.HTML(value=""" | |
| <b>NOTE:</b><br /> | |
| Sản phẩm đang trong quá trình thử nghiệm chỉ có thể dịch được các <u>câu ngắn</u> và thời gian dịch <u>sẽ lâu</u>.<br /> | |
| AI hiện tại có mức độ hiểu biết chỉ dừng ở mức tương đương một đứa <i>trẻ nầm non</i>.<br /> | |
| Do dữ liệu được sử dụng trong quá trình đào tạo còn ít, nên đôi khi sẽ xuất hiện hiện tượng <u>dịch nhưng lại thành phiên âm</u> vì thế mọi người chú ý kiểm tra lại kết quả. | |
| """) | |
| if __name__ == "__main__": | |
| demo.launch() | |