Update README.md
Browse files
README.md
CHANGED
@@ -35,6 +35,89 @@ tags:
|
|
35 |
| Tatoeba-test.pol-rus.pol.rus | 49.6 | 0.680 |
|
36 |
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
|
39 |
### System Info:
|
40 |
- hf_name: sla-sla
|
|
|
35 |
| Tatoeba-test.pol-rus.pol.rus | 49.6 | 0.680 |
|
36 |
|
37 |
|
38 |
+
## Run the model
|
39 |
+
|
40 |
+
```python
|
41 |
+
from transformers import MarianMTModel, MarianTokenizer
|
42 |
+
|
43 |
+
# Пути к модели и токенизатору
|
44 |
+
model_path = "trained_model"
|
45 |
+
|
46 |
+
# Загрузка модели и токенизатора
|
47 |
+
tokenizer = MarianTokenizer.from_pretrained(model_path)
|
48 |
+
model = MarianMTModel.from_pretrained(model_path)
|
49 |
+
|
50 |
+
# Словарь, который соответствует целевым языковым маркерам для разных языков
|
51 |
+
language_map = {
|
52 |
+
"bel": "bel",
|
53 |
+
"bel_Latn": "bel_Latn",
|
54 |
+
"bos_Latn": "bos_Latn",
|
55 |
+
"bul": "bul",
|
56 |
+
"bul_Latn": "bul_Latn",
|
57 |
+
"ces": "ces",
|
58 |
+
"dsb": "dsb",
|
59 |
+
"hrv": "hrv",
|
60 |
+
"hsb": "hsb",
|
61 |
+
"mkd": "mkd",
|
62 |
+
"orv_Cyrl": "orv_Cyrl",
|
63 |
+
"pol": "pol",
|
64 |
+
"rus": "rus",
|
65 |
+
"slv": "slv",
|
66 |
+
"srp_Cyrl": "srp_Cyrl",
|
67 |
+
"srp_Latn": "srp_Latn",
|
68 |
+
"ukr": "ukr"
|
69 |
+
}
|
70 |
+
|
71 |
+
# Функция для перевода с несколькими вариантами
|
72 |
+
def translate_text(source_text, target_language, num_translations=3):
|
73 |
+
if target_language not in language_map:
|
74 |
+
print("Неверное направление перевода. Попробуйте снова.")
|
75 |
+
return None
|
76 |
+
|
77 |
+
# Формируем текст с маркером целевого языка
|
78 |
+
language_token = f">>{target_language}<< "
|
79 |
+
text_with_token = language_token + source_text
|
80 |
+
|
81 |
+
# Токенизация текста
|
82 |
+
inputs = tokenizer(text_with_token, return_tensors="pt")
|
83 |
+
|
84 |
+
# Перевод текста с несколькими вариантами
|
85 |
+
translated_tokens = model.generate(
|
86 |
+
**inputs,
|
87 |
+
num_return_sequences=num_translations, # Количество вариантов перевода
|
88 |
+
num_beams=num_translations # Используем несколько beam для разнообразия
|
89 |
+
)
|
90 |
+
|
91 |
+
# Декодирование переведенного текста
|
92 |
+
translations = [tokenizer.decode(tokens, skip_special_tokens=True) for tokens in translated_tokens]
|
93 |
+
return translations
|
94 |
+
|
95 |
+
# Основной цикл для ввода текста и вывода вариантов перевода
|
96 |
+
print("Введите фразу для перевода или !q для выхода.")
|
97 |
+
|
98 |
+
while True:
|
99 |
+
# Ввод фразы
|
100 |
+
source_text = input("Введите фразу: ")
|
101 |
+
|
102 |
+
# Проверка на команду выхода
|
103 |
+
if source_text == "!q":
|
104 |
+
print("Выход из программы.")
|
105 |
+
break
|
106 |
+
|
107 |
+
# Указание целевого языка (по умолчанию "rus")
|
108 |
+
target_language = "rus"
|
109 |
+
|
110 |
+
# Перевод фразы с несколькими вариантами
|
111 |
+
translations = translate_text(source_text, target_language)
|
112 |
+
|
113 |
+
if translations:
|
114 |
+
# Вывод всех вариантов перевода
|
115 |
+
for idx, translation in enumerate(translations, 1):
|
116 |
+
print(f"Вариант {idx}: {translation}")
|
117 |
+
|
118 |
+
```
|
119 |
+
|
120 |
+
|
121 |
|
122 |
### System Info:
|
123 |
- hf_name: sla-sla
|