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