aliceblue11's picture
Update app.py
4896bd4 verified
import gradio as gr
from transformers import MarianMTModel, MarianTokenizer
# 한국어 -> 영어 모델 로드
model_name_ko_en = "Helsinki-NLP/opus-mt-ko-en"
tokenizer_ko_en = MarianTokenizer.from_pretrained(model_name_ko_en)
model_ko_en = MarianMTModel.from_pretrained(model_name_ko_en)
# 영어 -> 한국어 모델 로드
model_name_en_ko = "Helsinki-NLP/opus-mt-en-ko"
tokenizer_en_ko = MarianTokenizer.from_pretrained(model_name_en_ko)
model_en_ko = MarianMTModel.from_pretrained(model_name_en_ko)
def translate_text(text, source_lang, target_lang):
"""
텍스트를 번역하는 함수.
"""
try:
if source_lang == "한국어" and target_lang == "영어":
# 한국어 -> 영어 번역
tokenized = tokenizer_ko_en(text, return_tensors="pt", padding=True)
translated = model_ko_en.generate(**tokenized)
result = tokenizer_ko_en.decode(translated[0], skip_special_tokens=True)
elif source_lang == "영어" and target_lang == "한국어":
# 영어 -> 한국어 번역
tokenized = tokenizer_en_ko(text, return_tensors="pt", padding=True)
translated = model_en_ko.generate(**tokenized)
result = tokenizer_en_ko.decode(translated[0], skip_special_tokens=True)
else:
return "지원하지 않는 언어 조합입니다."
return result
except Exception as e:
return f"오류가 발생했습니다: {str(e)}"
# Gradio UI 구성
with gr.Blocks() as demo:
gr.Markdown("# 한국어 ↔ 영어 번역기")
# 언어 선택
source_lang = gr.Radio(
choices=["한국어", "영어"],
label="원본 언어",
value="한국어"
)
target_lang = gr.Radio(
choices=["한국어", "영어"],
label="목표 언어",
value="영어"
)
# 입력 텍스트
input_text = gr.Textbox(label="번역할 텍스트", lines=5)
# 번역 결과
translation_output = gr.Textbox(label="번역 결과", lines=5, interactive=False)
# 번역 버튼
translate_button = gr.Button("번역")
# 번역 함수 연결
translate_button.click(
fn=translate_text,
inputs=[input_text, source_lang, target_lang],
outputs=translation_output
)
# 메인 실행부
if __name__ == "__main__":
demo.launch()