ArrcttacsrjksX commited on
Commit
1058b5a
1 Parent(s): 7f5d8e3

Upload app(51).py

Browse files
Files changed (1) hide show
  1. content/app(51).py +77 -0
content/app(51).py ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
3
+ import os
4
+
5
+ # Đường dẫn mô hình
6
+ MODEL_PATH = "content/envit5-translation"
7
+
8
+ # Hàm kiểm tra và tải mô hình nếu cần
9
+ def check_and_download_model():
10
+ if not os.path.exists(MODEL_PATH):
11
+ model_name = "VietAI/envit5-translation"
12
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
13
+ model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
14
+
15
+ # Lưu mô hình
16
+ tokenizer.save_pretrained(MODEL_PATH)
17
+ model.save_pretrained(MODEL_PATH)
18
+
19
+ # Hàm dịch
20
+ def translate_text(input_text, direction):
21
+ if not input_text.strip():
22
+ return "Vui lòng nhập văn bản cần dịch!"
23
+
24
+ try:
25
+ # Tải mô hình và tokenizer
26
+ tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
27
+ model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_PATH)
28
+
29
+ # Chuẩn bị đầu vào với định hướng dịch
30
+ prefix = "vi: " if direction == "Vie → Eng" else "en: "
31
+ inputs = [f"{prefix}{input_text}"]
32
+ encoded_inputs = tokenizer(inputs, return_tensors="pt", padding=True).input_ids
33
+
34
+ # Dịch văn bản
35
+ outputs = model.generate(encoded_inputs, max_length=512)
36
+ translated_text = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0]
37
+ return translated_text
38
+ except Exception as e:
39
+ return f"Lỗi: {str(e)}"
40
+
41
+ # Hàm tạo file tải xuống
42
+ def create_txt_file(output_text):
43
+ file_path = "translation_output.txt"
44
+ with open(file_path, "w", encoding="utf-8") as f:
45
+ f.write(output_text)
46
+ return file_path
47
+
48
+ # Tải mô hình khi khởi chạy
49
+ check_and_download_model()
50
+
51
+ # Tạo giao diện Gradio
52
+ with gr.Blocks() as interface:
53
+ gr.Markdown("## Ứng dụng Dịch Máy VietAI")
54
+ gr.Markdown("Công cụ dịch tự động từ tiếng Việt sang tiếng Anh hoặc ngược lại, hỗ trợ tải kết quả dưới dạng file .txt.")
55
+
56
+ # Các thành phần giao diện
57
+ with gr.Row():
58
+ input_text = gr.Textbox(lines=10, placeholder="Nhập văn bản cần dịch...")
59
+ output_text = gr.Textbox(lines=10, placeholder="Kết quả bản dịch...")
60
+
61
+ direction = gr.Radio(
62
+ ["Vie → Eng", "Eng → Vie"],
63
+ label="Hướng dịch",
64
+ value="Vie → Eng"
65
+ )
66
+
67
+ with gr.Row():
68
+ translate_button = gr.Button("Dịch")
69
+ download_button = gr.Button("Tải xuống .txt")
70
+
71
+ # Kết nối các thành phần với logic
72
+ translate_button.click(translate_text, inputs=[input_text, direction], outputs=output_text)
73
+ download_button.click(create_txt_file, inputs=output_text, outputs=gr.File(label="Tải file kết quả"))
74
+
75
+ # Chạy ứng dụng
76
+ if __name__ == "__main__":
77
+ interface.launch()