File size: 2,339 Bytes
b34f0d5
58c9ca2
b34f0d5
58c9ca2
 
 
 
b34f0d5
58c9ca2
 
 
 
f1d1009
7f46e0a
c753d25
7f46e0a
c753d25
7dcc8af
b93a2da
58c9ca2
 
 
 
b93a2da
58c9ca2
 
 
 
b93a2da
 
58c9ca2
7dcc8af
c753d25
 
d7fa504
b34f0d5
7f46e0a
f1d1009
58c9ca2
 
 
 
 
 
 
 
 
 
 
c753d25
58c9ca2
 
958e155
58c9ca2
 
958e155
58c9ca2
 
958e155
58c9ca2
 
 
 
 
 
958e155
f9b088b
b34f0d5
0a81da5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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()