Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -26,7 +26,290 @@ def fix_tokenizer(tokenizer):
|
|
26 |
fix_tokenizer(tokenizer_ru_qm)
|
27 |
fix_tokenizer(tokenizer_qm_ru)
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
# 4. Translate function
|
|
|
|
|
30 |
def translatePy(text, model, tokenizer, src='ru_RU', trg='qm_XX', max_length='auto', num_beams=3, repetition_penalty=5.0, train_mode=False, n_out=None, **kwargs):
|
31 |
tokenizer.src_lang = src
|
32 |
encoded = tokenizer(text, return_tensors="pt", truncation=True, max_length=1024)
|
@@ -51,12 +334,18 @@ def translatePy(text, model, tokenizer, src='ru_RU', trg='qm_XX', max_length='au
|
|
51 |
return out[0]
|
52 |
return out
|
53 |
|
54 |
-
def transl(text, til):
|
55 |
str = ''
|
56 |
if til == "Къарачай-Малкъар":
|
57 |
-
|
|
|
|
|
|
|
58 |
elif til == "Русский":
|
59 |
-
|
|
|
|
|
|
|
60 |
|
61 |
return str
|
62 |
|
|
|
26 |
fix_tokenizer(tokenizer_ru_qm)
|
27 |
fix_tokenizer(tokenizer_qm_ru)
|
28 |
|
29 |
+
# 4. Change letters
|
30 |
+
|
31 |
+
def fromModel(str, dialect = "qrc"):
|
32 |
+
if dialect == "qrc":
|
33 |
+
str = str.replace("тюйюл", "тюл")
|
34 |
+
str = str.replace("Тюйюл", "Тюл")
|
35 |
+
str = str.replace("уку", "гылын qуш")
|
36 |
+
str = str.replace("Уку", "Гылын qуш")
|
37 |
+
str = str.replace("хораз", "гугурукку")
|
38 |
+
str = str.replace("Хораз", "Гугурукку")
|
39 |
+
str = str.replace("юзмез", "qум")
|
40 |
+
str = str.replace("Юзмез", "Qум")
|
41 |
+
str = str.replace("jиля", "jыла")
|
42 |
+
str = str.replace("Jиля", "Jыла")
|
43 |
+
str = str.replace("ярабий", "арабин")
|
44 |
+
str = str.replace("арабий", "арабин")
|
45 |
+
str = str.replace("Ярабий", "Арабин")
|
46 |
+
str = str.replace("Арабий", "Арабин")
|
47 |
+
str = str.replace("нтта", "нтда")
|
48 |
+
str = str.replace("ртте", "ртде")
|
49 |
+
str = str.replace("jамауат", "jамаgат")
|
50 |
+
str = str.replace("jамаwат", "jамаgат")
|
51 |
+
str = str.replace("Jамауат", "Jамаgат")
|
52 |
+
str = str.replace("Jамаwат", "Jамаgат")
|
53 |
+
str = str.replace("шуёх", "шох")
|
54 |
+
str = str.replace("Шуёх", "Шох")
|
55 |
+
str = str.replace("шёндю", "бусаgат")
|
56 |
+
str = str.replace("Шёндю", "Бусаgат")
|
57 |
+
str = str.replace("уgай", "оgай")
|
58 |
+
str = str.replace("Уgай", "Оgай")
|
59 |
+
# str = str.replace("терк", "тез")
|
60 |
+
str = str.replace("саnа", "сенnе")
|
61 |
+
str = str.replace("сеnе", "сенnе")
|
62 |
+
str = str.replace("Саnа", "Сенnе")
|
63 |
+
str = str.replace("Сеnе", "Сенnе")
|
64 |
+
str = str.replace("маnа", "менnе")
|
65 |
+
str = str.replace("меnе", "менnе")
|
66 |
+
str = str.replace("Маnа", "Менnе")
|
67 |
+
str = str.replace("Меnе", "Менnе")
|
68 |
+
str = str.replace("аяq jол", "jахтана")
|
69 |
+
str = str.replace("Аяq jол", "Jахтана")
|
70 |
+
str = str.replace("сыbат", "сыфат")
|
71 |
+
str = str.replace("Сыbат", "Сыфат")
|
72 |
+
str = str.replace("b", "б")
|
73 |
+
str = str.replace("q", "къ")
|
74 |
+
str = str.replace("Q", "Къ")
|
75 |
+
str = str.replace("g", "гъ")
|
76 |
+
str = str.replace("G", "Гъ")
|
77 |
+
str = str.replace("j", "дж")
|
78 |
+
str = str.replace("J", "Дж")
|
79 |
+
str = str.replace("w", "ў")
|
80 |
+
str = str.replace("W", "Ў")
|
81 |
+
str = str.replace("n", "нг")
|
82 |
+
str = str.replace("N", "Нг")
|
83 |
+
elif dialect == "hlm":
|
84 |
+
str = str.replace("тюл", "тюйюл")
|
85 |
+
str = str.replace("Тюл", "Тюйюл")
|
86 |
+
str = str.replace("гылын qуш", "уку")
|
87 |
+
str = str.replace("Гылын qуш", "Уку")
|
88 |
+
str = str.replace("гугурукку", "хораз")
|
89 |
+
str = str.replace("Гугурукку", "Хораз")
|
90 |
+
str = str.replace("qум", "юзмез")
|
91 |
+
str = str.replace("Qум", "Юзмез")
|
92 |
+
str = str.replace("jыла", "jиля")
|
93 |
+
str = str.replace("Jыла", "Jиля")
|
94 |
+
str = str.replace("арабин", "ярабий")
|
95 |
+
str = str.replace("арабий", "ярабий")
|
96 |
+
str = str.replace("Арабин", "Ярабий")
|
97 |
+
str = str.replace("Арабий", "Ярабий")
|
98 |
+
str = str.replace("нтда", "нтта")
|
99 |
+
str = str.replace("ртде", "ртте")
|
100 |
+
str = str.replace("jамаgат", "jамаwат")
|
101 |
+
str = str.replace("Jамаgат", "Jамаwат")
|
102 |
+
str = str.replace("шох", "шуёх")
|
103 |
+
str = str.replace("Шох", "Шуёх")
|
104 |
+
str = str.replace("бусаgат", "шёндю")
|
105 |
+
str = str.replace("Бусаgат", "Шёндю")
|
106 |
+
str = str.replace("оgай", "уgай")
|
107 |
+
str = str.replace("Оgай", "Уgай")
|
108 |
+
str = str.replace("тез", "терк")
|
109 |
+
str = str.replace("сенnе", "саnа")
|
110 |
+
str = str.replace("сеnе", "саnа")
|
111 |
+
str = str.replace("Сенnе", "Саnа")
|
112 |
+
str = str.replace("Сеnе", "Саnа")
|
113 |
+
str = str.replace("менnе", "маnа")
|
114 |
+
str = str.replace("меnе", "маnа")
|
115 |
+
str = str.replace("Менnе", "Маnа")
|
116 |
+
str = str.replace("Меnе", "Маnа")
|
117 |
+
str = str.replace("jахтана", "аяq jол")
|
118 |
+
str = str.replace("Jахтана", "аяq jол")
|
119 |
+
str = str.replace("хо", "хаw")
|
120 |
+
str = str.replace("Хо", "Хаw")
|
121 |
+
str = str.replace("сыbат", "сыфат")
|
122 |
+
str = str.replace("Сыbат", "Сыфат")
|
123 |
+
str = str.replace("b", "п")
|
124 |
+
str = str.replace("q", "къ")
|
125 |
+
str = str.replace("Q", "Къ")
|
126 |
+
str = str.replace("g", "гъ")
|
127 |
+
str = str.replace("G", "Гъ")
|
128 |
+
str = str.replace("j", "ж")
|
129 |
+
str = str.replace("J", "Ж")
|
130 |
+
str = str.replace("w", "ў")
|
131 |
+
str = str.replace("W", "Ў")
|
132 |
+
str = str.replace("n", "нг")
|
133 |
+
str = str.replace("N", "Нг")
|
134 |
+
elif dialect == "mqr":
|
135 |
+
str = str.replace("тюл", "тюйюл")
|
136 |
+
str = str.replace("Тюл", "Тюйюл")
|
137 |
+
str = str.replace("гылын qуш", "уку")
|
138 |
+
str = str.replace("Гылын qуш", "Уку")
|
139 |
+
str = str.replace("гугурукку", "хораз")
|
140 |
+
str = str.replace("Гугурукку", "Хораз")
|
141 |
+
str = str.replace("qум", "юзмез")
|
142 |
+
str = str.replace("Qум", "Юзмез")
|
143 |
+
str = str.replace("jыла", "jиля")
|
144 |
+
str = str.replace("Jыла", "Jиля")
|
145 |
+
str = str.replace("арабин", "ярабий")
|
146 |
+
str = str.replace("арабий", "ярабий")
|
147 |
+
str = str.replace("Арабин", "Ярабий")
|
148 |
+
str = str.replace("Арабий", "Ярабий")
|
149 |
+
str = str.replace("нтда", "нтта")
|
150 |
+
str = str.replace("ртде", "ртте")
|
151 |
+
str = str.replace("jамаgат", "jамаwат")
|
152 |
+
str = str.replace("Jамаgат", "Jамаwат")
|
153 |
+
str = str.replace("шох", "шуёх")
|
154 |
+
str = str.replace("Шох", "Шуёх")
|
155 |
+
str = str.replace("бусаgат", "шёндю")
|
156 |
+
str = str.replace("Бусаgат", "Шёндю")
|
157 |
+
str = str.replace("оgай", "уgай")
|
158 |
+
str = str.replace("Оgай", "Уgай")
|
159 |
+
str = str.replace("тез", "терк")
|
160 |
+
str = str.replace("сенnе", "саnа")
|
161 |
+
str = str.replace("сеnе", "саnа")
|
162 |
+
str = str.replace("Сенnе", "Саnа")
|
163 |
+
str = str.replace("Сеnе", "Саnа")
|
164 |
+
str = str.replace("менnе", "маnа")
|
165 |
+
str = str.replace("меnе", "маnа")
|
166 |
+
str = str.replace("Менnе", "Маnа")
|
167 |
+
str = str.replace("Меnе", "Маnа")
|
168 |
+
str = str.replace("jахтана", "аяq jол")
|
169 |
+
str = str.replace("Jахтана", "аяq jол")
|
170 |
+
str = str.replace("хо", "хаw")
|
171 |
+
str = str.replace("Хо", "Хаw")
|
172 |
+
str = str.replace("сыbат", "сыфат")
|
173 |
+
str = str.replace("Сыbат", "Сыфат")
|
174 |
+
str = str.replace("b", "п")
|
175 |
+
str = str.replace("q", "къ")
|
176 |
+
str = str.replace("Q", "Къ")
|
177 |
+
str = str.replace("g", "гъ")
|
178 |
+
str = str.replace("G", "Гъ")
|
179 |
+
str = str.replace("j", "з")
|
180 |
+
str = str.replace("J", "З")
|
181 |
+
str = str.replace("w", "ў")
|
182 |
+
str = str.replace("W", "Ў")
|
183 |
+
str = str.replace("n", "нг")
|
184 |
+
str = str.replace("N", "Нг")
|
185 |
+
str = str.replace("ч", "ц")
|
186 |
+
str = str.replace("Ч", "Ц")
|
187 |
+
str = str.replace("п", "ф")
|
188 |
+
str = str.replace("П", "Ф")
|
189 |
+
str = str.replace("къ|гъ", "х")
|
190 |
+
return str
|
191 |
+
|
192 |
+
|
193 |
+
def toModel(str):
|
194 |
+
str = str.replace("дж", "j")
|
195 |
+
str = str.replace("Дж", "J")
|
196 |
+
str = str.replace("ДЖ", "J")
|
197 |
+
str = str.replace("ж", "j")
|
198 |
+
str = str.replace("Ж", "J")
|
199 |
+
str = str.replace("себеп", "себеb")
|
200 |
+
str = str.replace("себеб", "себеb")
|
201 |
+
str = str.replace("Себеп", "Себеb")
|
202 |
+
str = str.replace("Себеб", "Себеb")
|
203 |
+
str = str.replace("тюйюл", "тюл")
|
204 |
+
str = str.replace("Тюйюл", "Тюл")
|
205 |
+
str = str.replace("уку", "гылын qуш")
|
206 |
+
str = str.replace("Уку", "Гылын qуш")
|
207 |
+
str = str.replace("хораз", "гугурукку")
|
208 |
+
str = str.replace("Хораз", "Гугурукку")
|
209 |
+
str = str.replace("юзмез", "qум")
|
210 |
+
str = str.replace("Юзмез", "Qум")
|
211 |
+
str = str.replace("арап", "араb")
|
212 |
+
str = str.replace("араб", "араb")
|
213 |
+
str = str.replace("Арап", "Араb")
|
214 |
+
str = str.replace("Араб", "Араb")
|
215 |
+
str = str.replace("jиля", "jыла")
|
216 |
+
str = str.replace("jыла", "jыла")
|
217 |
+
str = str.replace("jыла", "jыла")
|
218 |
+
str = str.replace("Jиля", "Jыла")
|
219 |
+
str = str.replace("Jыла", "Jыла")
|
220 |
+
str = str.replace("Jыла", "Jыла")
|
221 |
+
str = str.replace("ярабий", "арабин")
|
222 |
+
str = str.replace("арабий", "арабин")
|
223 |
+
str = str.replace("Ярабий", "Арабин")
|
224 |
+
str = str.replace("Арабий", "Арабин")
|
225 |
+
str = str.replace("нтта", "нтда")
|
226 |
+
str = str.replace("ртте", "ртде")
|
227 |
+
str = str.replace("jамагъат", "jамаgат")
|
228 |
+
str = str.replace("jамауат", "jамаgат")
|
229 |
+
str = str.replace("jамагъат", "jамаgат")
|
230 |
+
str = str.replace("jамауат", "jамаgат")
|
231 |
+
str = str.replace("Jамагъат", "Jамаgат")
|
232 |
+
str = str.replace("Jамауат", "Jамаgат")
|
233 |
+
str = str.replace("Jамагъат", "Jамаgат")
|
234 |
+
str = str.replace("Jамаўат", "Jамаgат")
|
235 |
+
str = str.replace("шуёх", "шох")
|
236 |
+
str = str.replace("Шуёх", "Шох")
|
237 |
+
str = str.replace("шёндю", "бусаgат")
|
238 |
+
str = str.replace("бусагъат", "бусаgат")
|
239 |
+
str = str.replace("Шёндю", "Бусаgат")
|
240 |
+
str = str.replace("Бусагъат", "Бусаgат")
|
241 |
+
str = str.replace("угъай", "оgай")
|
242 |
+
str = str.replace("огъай", "оgай")
|
243 |
+
str = str.replace("Угъай", "Оgай")
|
244 |
+
str = str.replace("Огъай", "Оgай")
|
245 |
+
# str = str.replace("терк", "тез")
|
246 |
+
# str = str.replace("терк", "тез")
|
247 |
+
str = str.replace("санга", "сенnе")
|
248 |
+
str = str.replace("сенге", "сенnе")
|
249 |
+
str = str.replace("сеннге", "сенnе")
|
250 |
+
str = str.replace("Санга", "Сенnе")
|
251 |
+
str = str.replace("Сеннге", "Сенnе")
|
252 |
+
str = str.replace("Сенге", "Сенnе")
|
253 |
+
str = str.replace("манга", "менnе")
|
254 |
+
str = str.replace("меннге", "менnе")
|
255 |
+
str = str.replace("менге", "менnе")
|
256 |
+
str = str.replace("Манга", "Менnе")
|
257 |
+
str = str.replace("Меннге", "Менnе")
|
258 |
+
str = str.replace("Менге", "Менnе")
|
259 |
+
str = str.replace("аякъ jол", "jахтана")
|
260 |
+
str = str.replace("аякъ jол", "jахтана")
|
261 |
+
str = str.replace("jахтана", "jахтана")
|
262 |
+
str = str.replace("jахтана", "jахтана")
|
263 |
+
str = str.replace("Аякъ jол", "Jахтана")
|
264 |
+
str = str.replace("Аякъ jол", "Jахтана")
|
265 |
+
str = str.replace("Jахтана", "Jахтана")
|
266 |
+
str = str.replace("Jахтана", "Jахтана")
|
267 |
+
str = str.replace("къамж", "qамыzh")
|
268 |
+
str = str.replace("къамыж", "qамыzh")
|
269 |
+
str = str.replace("Къамж", "Qамыzh")
|
270 |
+
str = str.replace("Къамыж", "Qамыzh")
|
271 |
+
str = str.replace("къымыж", "qымыzh")
|
272 |
+
str = str.replace("къымыж", "qымыzh")
|
273 |
+
str = str.replace("Къымыж", "Qымыzh")
|
274 |
+
str = str.replace("Къымыж", "Qымыzh")
|
275 |
+
str = str.replace("хау", "хо")
|
276 |
+
str = str.replace("хаў", "хо")
|
277 |
+
str = str.replace("Хау", "Хо")
|
278 |
+
str = str.replace("Хаў", "Хо")
|
279 |
+
str = str.replace("уа", "wa")
|
280 |
+
str = str.replace("ўа", "wa")
|
281 |
+
str = str.replace("Уа", "Wa")
|
282 |
+
str = str.replace("Ўа", "Wa")
|
283 |
+
str = str.replace("п", "b")
|
284 |
+
str = str.replace("б", "b")
|
285 |
+
str = str.replace("къ", "q")
|
286 |
+
str = str.replace("Къ", "Q")
|
287 |
+
str = str.replace("КЪ", "Q")
|
288 |
+
str = str.replace("гъ", "g")
|
289 |
+
str = str.replace("Гъ", "G")
|
290 |
+
str = str.replace("ГЪ", "G")
|
291 |
+
str = str.replace("ц", "ч")
|
292 |
+
str = str.replace("Ц", "Ч")
|
293 |
+
str = str.replace("ф", "п")
|
294 |
+
str = str.replace("сыпат", "сыфат")
|
295 |
+
str = str.replace("Сыпат", "Сыфат")
|
296 |
+
str = str.replace("Ф", "П")
|
297 |
+
str = str.replace("(?<=[аыоуэеиёюя])у(?=[аыоуэеиёюя])|(?<=[аыоуэеиёюя])ў(?=[аыоуэеиёюя])|(?<=[АЫОУЭЕИЁЮЯ])у(?=[АЫОУЭЕИЁЮЯ])|(?<=[АЫОУЭЕИЁЮЯ])ў(?=[АЫОУЭЕИЁЮЯ])", "w")
|
298 |
+
str = str.replace("(?<=[аыоуэеиёюя])у|(?<=[аыоуэеиёюя])ў|(?<=[АЫОУЭЕИЁЮЯ])у|(?<=[АЫОУЭЕИЁЮЯ])ў", "w")
|
299 |
+
# str = str.replace("у(?=[аыоуэеиёюя])|ў(?=[аыоуэеиёюя])|у(?=[АЫОУЭЕИЁЮЯ])|ў(?=[АЫОУЭЕИЁЮЯ])", "w")
|
300 |
+
# str = str.replace("У(?=[аыоуэеиёюя])|Ў(?=[аыоуэеиёюя])|У(?=[АЫОУЭЕИЁЮЯ])|Ў(?=[АЫОУЭЕИЁЮЯ])", "W")
|
301 |
+
str = str.replace("zh", "ж")
|
302 |
+
str = str.replace("нг", "n")
|
303 |
+
str = str.replace("Нг", " N")
|
304 |
+
str = str.replace("НГ", " N")
|
305 |
+
return str
|
306 |
+
|
307 |
+
|
308 |
+
|
309 |
+
|
310 |
# 4. Translate function
|
311 |
+
|
312 |
+
# 5. Translate
|
313 |
def translatePy(text, model, tokenizer, src='ru_RU', trg='qm_XX', max_length='auto', num_beams=3, repetition_penalty=5.0, train_mode=False, n_out=None, **kwargs):
|
314 |
tokenizer.src_lang = src
|
315 |
encoded = tokenizer(text, return_tensors="pt", truncation=True, max_length=1024)
|
|
|
334 |
return out[0]
|
335 |
return out
|
336 |
|
337 |
+
def transl(text, til, change_letters = True):
|
338 |
str = ''
|
339 |
if til == "Къарачай-Малкъар":
|
340 |
+
if change_letters == True:
|
341 |
+
str = translatePy(toModel(text), model_qm_ru, tokenizer_qm_ru, src = 'qm_XX', trg='ru_RU')
|
342 |
+
else:
|
343 |
+
str = translatePy(text, model_qm_ru, tokenizer_qm_ru, src = 'qm_XX', trg='ru_RU')
|
344 |
elif til == "Русский":
|
345 |
+
if change_letters == True:
|
346 |
+
str = translatePy(text, model_ru_qm, tokenizer_ru_qm, src = 'ru_RU', trg='qm_XX').fromModel()
|
347 |
+
else:
|
348 |
+
str = translatePy(text, model_ru_qm, tokenizer_ru_qm, src = 'ru_RU', trg='qm_XX')
|
349 |
|
350 |
return str
|
351 |
|