File size: 2,855 Bytes
454836e
6496960
d4d0b65
6496960
454836e
 
 
a966e36
 
 
 
791f137
d4d0b65
 
 
 
3708cc0
aa517f1
590c90f
993bf43
a966e36
 
 
590c90f
d4d0b65
 
 
a966e36
 
 
 
 
d4d0b65
 
 
a966e36
 
 
 
 
 
791f137
 
6496960
590c90f
6496960
590c90f
aa517f1
590c90f
4e169cd
aa517f1
6496960
d4d0b65
 
6496960
 
 
945921c
f6a1073
aa517f1
67056df
50d1b1d
5759638
4e169cd
b18fab5
590c90f
8194786
5689f51
7139659
b3759ba
791f137
454836e
341c8bb
97d5550
932fbec
3708cc0
710f50f
5b9b5bc
6e54db0
993bf43
adfa1e6
da4bc7e
d4d0b65
a966e36
2bd9a76
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import os
import gradio as gr
from transformers import MarianMTModel, MarianTokenizer, M2M100ForConditionalGeneration, M2M100Tokenizer

# Отключение HF_HUB_ENABLE_HF_TRANSFER
os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "false"

# Модель для перевода с грузинского на русский (Helsinki-NLP)
model_name_ka_ru = 'Helsinki-NLP/opus-mt-ka-ru'
tokenizer_ka_ru = MarianTokenizer.from_pretrained(model_name_ka_ru, token=True)
model_ka_ru = MarianMTModel.from_pretrained(model_name_ka_ru, token=True)

# Модель для перевода с русского на грузинский (M2M100)
model_name_ru_ka = "facebook/m2m100_1.2B"
tokenizer_ru_ka = M2M100Tokenizer.from_pretrained(model_name_ru_ka, token=True)
model_ru_ka = M2M100ForConditionalGeneration.from_pretrained(model_name_ru_ka, token=True)

def translate(text, direction):
    if direction == "Грузинский -> Русский":
        # Перевод с грузинского на русский
        inputs = tokenizer_ka_ru(text, return_tensors="pt", padding=True, truncation=True)
        translated = model_ka_ru.generate(**inputs)
        translated_text = tokenizer_ka_ru.decode(translated[0], skip_special_tokens=True)
    else:
        # Перевод с русского на грузинский (M2M100)
        tokenizer_ru_ka.src_lang = "ru"  # Установка исходного языка на русский
        target_lang = "ka"  # Целевой язык: грузинский

        try:
            inputs = tokenizer_ru_ka(text, return_tensors="pt", padding=True, truncation=True)
            translated_tokens = model_ru_ka.generate(
                **inputs,
                forced_bos_token_id=tokenizer_ru_ka.get_lang_id(target_lang),  # Установка целевого языка
                max_length=200,
                num_beams=4,  # Оптимальное количество лучей для M2M100
                early_stopping=True
            )
            translated_text = tokenizer_ru_ka.decode(translated_tokens[0], skip_special_tokens=True)

        except Exception as e:
            translated_text = f"Ошибка: {str(e)}"

    return translated_text

# Интерфейс Gradio
iface = gr.Interface(
    fn=translate,
    inputs=[
        gr.Textbox(label="Введите текст"),
        gr.Radio(["Грузинский -> Русский", "Русский -> Грузинский"], label="Выберите направление")
    ],
    outputs="text",
    title="Русско-Грузинский Переводчик (Helsinki-NLP и M2M100, оптимизированный)",
    description="Перевод с использованием проверенных моделей Helsinki-NLP и M2M100"
)

iface.launch()