Spaces:
Runtime error
Runtime error
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() |