Spaces:
Running
Running
Yurii Paniv
commited on
Commit
•
bf4037f
1
Parent(s):
ed1082e
Fix transliterator
Browse files- .coveragerc +4 -0
- converter.py +0 -63
- crh_transliterator/cyr_to_lat.py +105 -105
- tests/test_converter.py +0 -17
.coveragerc
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[run]
|
2 |
+
omit =
|
3 |
+
# omit anything in a tests directory
|
4 |
+
*/tests/*
|
converter.py
DELETED
@@ -1,63 +0,0 @@
|
|
1 |
-
def to_cyrillic(text):
|
2 |
-
pass
|
3 |
-
|
4 |
-
|
5 |
-
def to_latin(text):
|
6 |
-
text = text.lower()
|
7 |
-
cyrillic_mapping = {
|
8 |
-
"а": "a",
|
9 |
-
"б": "b",
|
10 |
-
"в": "v",
|
11 |
-
"г": "g",
|
12 |
-
"гъ": "ğ",
|
13 |
-
"д": "d",
|
14 |
-
"е": "e",
|
15 |
-
"ё": "ö",
|
16 |
-
"ж": "",
|
17 |
-
"з": "z",
|
18 |
-
"и": "i",
|
19 |
-
"й": "y",
|
20 |
-
"к": "k",
|
21 |
-
"къ": "q",
|
22 |
-
"л": "l",
|
23 |
-
"м": "m",
|
24 |
-
"н": "n",
|
25 |
-
"нъ": "ñ",
|
26 |
-
"о": "o",
|
27 |
-
"п": "p",
|
28 |
-
"р": "r",
|
29 |
-
"с": "s",
|
30 |
-
"т": "t",
|
31 |
-
"у": "u",
|
32 |
-
"ф": "f",
|
33 |
-
"х": "h",
|
34 |
-
"ц": "",
|
35 |
-
"ч": "ç",
|
36 |
-
"дж": "c",
|
37 |
-
"ш": "ş",
|
38 |
-
"щ": "",
|
39 |
-
"ъ": "",
|
40 |
-
"ы": "ı",
|
41 |
-
"ь": "",
|
42 |
-
"э": "e",
|
43 |
-
"ю": "ü",
|
44 |
-
"я": "ya",
|
45 |
-
"ку": "kü", # non-letter replacements starts here
|
46 |
-
"узю": "üzü",
|
47 |
-
"ур": "ür",
|
48 |
-
"ля": "lâ",
|
49 |
-
"уту": "utu",
|
50 |
-
"ие": "iye",
|
51 |
-
"ко": "kö",
|
52 |
-
"мю": "mü",
|
53 |
-
"ол": "öl",
|
54 |
-
"къу": "qu",
|
55 |
-
"cю": "sü",
|
56 |
-
"ёкъ": "yoq",
|
57 |
-
"юв": "yuv",
|
58 |
-
"уз": "üz",
|
59 |
-
}
|
60 |
-
|
61 |
-
for key in sorted(cyrillic_mapping.keys(), key=lambda x: len(x), reverse=True):
|
62 |
-
text = text.replace(key, cyrillic_mapping[key])
|
63 |
-
return text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
crh_transliterator/cyr_to_lat.py
CHANGED
@@ -11,7 +11,7 @@ mappings = [
|
|
11 |
# борнен
|
12 |
["борнен", "bornen"],
|
13 |
# бугунь
|
14 |
-
["([\s\"'\(\)\-.,:;!?>\]])бугун", "\1bugün"],
|
15 |
# бузкесен
|
16 |
["бузкесен", "buzkesen"],
|
17 |
# буксир
|
@@ -38,7 +38,7 @@ mappings = [
|
|
38 |
# формы глагола буюмек
|
39 |
["бую([гдйлмнпрстчшc])(и)", "büyü\1\2"],
|
40 |
# буюп
|
41 |
-
["([\s\"'\(\)\-.,:;!?>\]])буюп([\s\"'.,:;!?\)\-\[<])", "\1büyüp\2"],
|
42 |
# буют
|
43 |
["буют([^ыа])", "büyüt\1"],
|
44 |
# гонъюль
|
@@ -74,11 +74,11 @@ mappings = [
|
|
74 |
["койдеки([\s\"'.,:;!?\)\-\[<])", "köydeki\1"],
|
75 |
["койден([\s\"'.,:;!?\)\-\[<])", "köyden\1"],
|
76 |
["койлю", "köylü"],
|
77 |
-
["([\s\"'\(\)\-.,:;!?>\]])кою", "\1köyü"],
|
78 |
# ком-кок
|
79 |
-
["([\s\"'\(\)\-.,:;!?>\]])ком-кок", "\1köm-kök"],
|
80 |
# кок
|
81 |
-
["([\s\"'\(\)\-.,:;!?>\]])кок([^еёюяЕЁЮЯ])", "\1kök\2"],
|
82 |
# кокос
|
83 |
["кокос", "kokos"],
|
84 |
# коллега и однокоренные
|
@@ -143,7 +143,7 @@ mappings = [
|
|
143 |
# копия
|
144 |
["копия", "kopiya"],
|
145 |
# коп
|
146 |
-
["([\s\"'\(\)\-.,:;!?>\]])коп([^еёюяЕЁЮЯ])", "\1köp\2"],
|
147 |
# корея
|
148 |
["корея", "koreya"],
|
149 |
# корректор, корреспондент
|
@@ -163,7 +163,7 @@ mappings = [
|
|
163 |
# коше
|
164 |
["коше", "köşe"],
|
165 |
# куе
|
166 |
-
["([\s\"'\(\)\-.,:;!?>\]])куе", "\1küye"],
|
167 |
# кулинар
|
168 |
["кулинар", "kulinar"],
|
169 |
# кульминация
|
@@ -173,12 +173,12 @@ mappings = [
|
|
173 |
# культура
|
174 |
["культура", "kultura"],
|
175 |
# курьк
|
176 |
-
["([\s\"'\(\)\-.,:;!?>\]])курк([\s\"'.,:;!?\)\-\[<])", "\1kürk\2"],
|
177 |
-
["([\s\"'\(\)\-.,:;!?>\]])куркке", "\1kürkke"],
|
178 |
-
["([\s\"'\(\)\-.,:;!?>\]])куркни", "\1kürkni"],
|
179 |
-
["([\s\"'\(\)\-.,:;!?>\]])куркте", "\1kürkte"],
|
180 |
-
["([\s\"'\(\)\-.,:;!?>\]])куркчи", "\1kürkçi"],
|
181 |
-
["([\s\"'\(\)\-.,:;!?>\]])куркчю", "\1kürkçü"],
|
182 |
# курсив
|
183 |
["курсив", "kursiv"],
|
184 |
# кушкулемек и однокоренные
|
@@ -203,7 +203,7 @@ mappings = [
|
|
203 |
# нумюне
|
204 |
["нумюне", "nümüne"],
|
205 |
# ог
|
206 |
-
['(["\s(-])ог([^ъ])', "\1öг\2"],
|
207 |
# одеколон
|
208 |
["одеколон", "odekolon"],
|
209 |
# океан
|
@@ -221,7 +221,7 @@ mappings = [
|
|
221 |
["опция", "optsiya"],
|
222 |
["опци", "optsi"],
|
223 |
# орден и ордер
|
224 |
-
["([\s\"'\(\)\-.,:;!?>\]])орде([нр])", "\1orde\2"],
|
225 |
# оригинал
|
226 |
["оригинал", "original"],
|
227 |
# ориентир
|
@@ -247,11 +247,11 @@ mappings = [
|
|
247 |
# ультра
|
248 |
["ультра", "ultra"],
|
249 |
# уника
|
250 |
-
["([\s\"'\(\)\-.,:;!?>\]])уник", "\1unik"],
|
251 |
# универcаль, универмаг, университет
|
252 |
["универ", "univer"],
|
253 |
# унтер
|
254 |
-
["([\s\"'\(\)\-.,:;!?>\]])унтер", "\1unter"],
|
255 |
# урьян
|
256 |
["урьян", "uryan"],
|
257 |
# джонк
|
@@ -269,62 +269,62 @@ mappings = [
|
|
269 |
["шунен", "şunen"],
|
270 |
["шуннен", "şunnen"],
|
271 |
# юз
|
272 |
-
["([\s\"'\(\)\-.,:;!?>\]])юз([\s\"'.,:;!?\)\-\[<])", "\1yüz\2"],
|
273 |
# юзбашы
|
274 |
-
["([\s\"'\(\)\-.,:;!?>\]])юзбашы", "\1yüzbaşı"],
|
275 |
# юзйыллыкъ
|
276 |
-
["([\s\"'\(\)\-.,:;!?>\]])юзйыл", "\1yüzyıl"],
|
277 |
# юк
|
278 |
-
["([\s\"'\(\)\-.,:;!?>\]])юк([^ъ])", "\1yüк\2"],
|
279 |
# юрип
|
280 |
-
["([\s\"'\(\)\-.,:;!?>\]])юрип", "\1yürip"],
|
281 |
# 3-юнджи, 4-юнджи
|
282 |
-
["([34])-юнджи", "\1-ünci"],
|
283 |
# некоторые глагольные фо��мы на -ама, -алма
|
284 |
# букама, букалма
|
285 |
-
["([\s\"'\(\)\-.,:;!?>\]])букама", "\1bükama"],
|
286 |
-
["([\s\"'\(\)\-.,:;!?>\]])букалма", "\1bükalma"],
|
287 |
# комама, комалма
|
288 |
-
["([\s\"'\(\)\-.,:;!?>\]])комама", "\1kömama"],
|
289 |
-
["([\s\"'\(\)\-.,:;!?>\]])комалма", "\1kömalma"],
|
290 |
# корама, коралма
|
291 |
-
["([\s\"'\(\)\-.,:;!?>\]])корама", "\1körama"],
|
292 |
-
["([\s\"'\(\)\-.,:;!?>\]])коралма", "\1köralma"],
|
293 |
# кочама, кочалма
|
294 |
-
["([\s\"'\(\)\-.,:;!?>\]])кочама", "\1köçama"],
|
295 |
-
["([\s\"'\(\)\-.,:;!?>\]])кочалма", "\1köçalma"],
|
296 |
# куяма, куялма
|
297 |
-
["([\s\"'\(\)\-.,:;!?>\]])куяма", "\1küyama"],
|
298 |
-
["([\s\"'\(\)\-.,:;!?>\]])куялма", "\1küyalma"],
|
299 |
# кулама, кулалма
|
300 |
-
# [ "([\s\"'\(\)\-.,:;!?>\]])кулама", "\1külama" ],
|
301 |
-
# [ "([\s\"'\(\)\-.,:;!?>\]])кулалма", "\1külalma" ],
|
302 |
# кусама, кусалма
|
303 |
-
["([\s\"'\(\)\-.,:;!?>\]])кусама", "\1küsama"],
|
304 |
-
["([\s\"'\(\)\-.,:;!?>\]])кусалма", "\1küsalma"],
|
305 |
# кутама, куталма
|
306 |
-
["([\s\"'\(\)\-.,:;!?>\]])кутама", "\1kütama"],
|
307 |
-
["([\s\"'\(\)\-.,:;!?>\]])куталма", "\1kütalma"],
|
308 |
# опама, опалма
|
309 |
-
["([\s\"'\(\)\-.,:;!?>\]])опама", "\1öpama"],
|
310 |
-
["([\s\"'\(\)\-.,:;!?>\]])опалма", "\1öpalma"],
|
311 |
# осама, осалма
|
312 |
-
["([\s\"'\(\)\-.,:;!?>\]])осама", "\1ösama"],
|
313 |
-
["([\s\"'\(\)\-.,:;!?>\]])осалма", "\1ösalma"],
|
314 |
# отама, оталма
|
315 |
-
# [ "([\s\"'\(\)\-.,:;!?>\]])отама", "\1ötama" ],
|
316 |
-
["([\s\"'\(\)\-.,:;!?>\]])оталма", "\1ötalma"],
|
317 |
# узама, узалма
|
318 |
-
# [ "([\s\"'\(\)\-.,:;!?>\]])узама", "\1üzama" ],
|
319 |
-
["([\s\"'\(\)\-.,:;!?>\]])узалма", "\1üzalma"],
|
320 |
# утама, уталма
|
321 |
-
["([\s\"'\(\)\-.,:;!?>\]])утама", "\1ütama"],
|
322 |
-
["([\s\"'\(\)\-.,:;!?>\]])уталма", "\1ütalma"],
|
323 |
# Имена собственные
|
324 |
["аджыумер", "acıümer"],
|
325 |
["аджыусеин", "acıüsein"],
|
326 |
["боливия", "boliviya"],
|
327 |
-
["([\s\"'\(\)\-.,:;!?>\]])ишунь", "\1işün"],
|
328 |
["корбекул", "körbekül"],
|
329 |
["корьбекул", "körbekül"],
|
330 |
["куркулет", "kürkület"],
|
@@ -345,14 +345,14 @@ mappings = [
|
|
345 |
["юртер", "yurter"],
|
346 |
["ющенко", "yuşçenko"],
|
347 |
# -ьон
|
348 |
-
["([^\s])ьон", "\1yon"],
|
349 |
# Я
|
350 |
[
|
351 |
"([\s\"'\(\)\-.,:;!?>\]])Я([\s\"'.,:;!?\)\-\[<])",
|
352 |
-
"\1Ya\2",
|
353 |
], # TODO: check why there is no case for small letters
|
354 |
# Ё
|
355 |
-
["([\s\"'\(\)\-.,:;!?>\]])Ё([\s\"'.,:;!?\)\-\[<])", "\1Yo\2"],
|
356 |
# йе
|
357 |
["йе", "yye"],
|
358 |
# йя
|
@@ -363,26 +363,26 @@ mappings = [
|
|
363 |
["нъ", "ñ"],
|
364 |
["дж", "c"],
|
365 |
# 2. o', u' первый заход - ё и ю после согласных
|
366 |
-
["([бвгджзйклмнпрстфхцчшщñcБВГДЖЗЙКЛМНПРСТФХЦЧШЩÑC])ю", "\1ü"],
|
367 |
-
["([бвгджзйклмнпрстфхцчшщñcБВГДЖЗЙКЛМНПРСТФХЦЧШЩÑC])ё", "\1ö"],
|
368 |
# 3. o', u' второй заход
|
369 |
# буква u'
|
370 |
# ю
|
371 |
[
|
372 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёюАЫОУЕИЁЮ])ю([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеюэü])',
|
373 |
-
"\1yü\2\3\4",
|
374 |
],
|
375 |
[
|
376 |
'([\s"\'\(\)\-.,:;!?>\]"АЫОУЕИЁЮ])Ю([БВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([БВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ЬЕЮЭÜ])',
|
377 |
-
"\1YÜ\2\3\4",
|
378 |
],
|
379 |
[
|
380 |
'([\s"\'\(\)\-.,:;!?>\]"(аыоуеиёюАЫОУЕИЁЮ])ю([бвгджзйклмнпрстфхцчшщcñ])([ьеюэü])',
|
381 |
-
"\1yü\2\3",
|
382 |
],
|
383 |
[
|
384 |
'([\s"\'\(\)\-.,:;!?>\]"(АЫОУЕИЁЮ])Ю([БВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ЬЕЮЭÜ])',
|
385 |
-
"\1YÜ\2\3",
|
386 |
],
|
387 |
["ю([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеюэü])", "yü\1\2\3"],
|
388 |
["ю([бвгджзйклмнпрстфхцчшщcñ])([ьеюэü])", "yü\1\2"],
|
@@ -391,163 +391,163 @@ mappings = [
|
|
391 |
# строчная у
|
392 |
[
|
393 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПCШ])у([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
394 |
-
"\1\2ü\3\4\5",
|
395 |
],
|
396 |
[
|
397 |
"([\s\"'\(\)\-.,:;!?>\]])у([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
398 |
-
"\1ü\2\3\4",
|
399 |
],
|
400 |
[
|
401 |
"([\s\"'\(\)\-.,:;!?>\]])ую([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
402 |
-
"\1üyü\2\3\4",
|
403 |
],
|
404 |
# заглавная У
|
405 |
[
|
406 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПШC])У([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
407 |
-
"\1\2Ü\3\4\5",
|
408 |
],
|
409 |
[
|
410 |
"([\s\"'\(\)\-.,:;!?>\]])У([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
411 |
-
"\1Ü\2\3\4",
|
412 |
],
|
413 |
[
|
414 |
"([\s\"'\(\)\-.,:;!?>\]])Ую([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
415 |
-
"\1Üyü\2\3\4",
|
416 |
],
|
417 |
[
|
418 |
"([\s\"'\(\)\-.,:;!?>\]])УЮ([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
419 |
-
"\1ÜYÜ\2\3\4",
|
420 |
],
|
421 |
# после у или ую одна согласная
|
422 |
# строчная у
|
423 |
[
|
424 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПШC])у([бвгджзйклмнпрстфхцчшщycñ])([ьеёиюэü])",
|
425 |
-
"\1\2ü\3\4",
|
426 |
],
|
427 |
-
["([\s\"'\(\)\-.,:;!?>\]])у([бвгджзйклмнпрстфхцчшщycñ])([ьеёиюэü])", "\1ü\2\3"],
|
428 |
-
["([\s\"'\(\)\-.,:;!?>\]])ую([бвгджзйклмнпрстфхцчшщycñ])([ьеёиюэü])", "\1üyü\2\3"],
|
429 |
# заглавная У
|
430 |
[
|
431 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПШC])У([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
432 |
-
"\1\2Ü\3\4",
|
433 |
],
|
434 |
[
|
435 |
"([\s\"'\(\)\-.,:;!?>\]])У([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
436 |
-
"\1Ü\2\3",
|
437 |
],
|
438 |
[
|
439 |
"([\s\"'\(\)\-.,:;!?>\]])Ую([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
440 |
-
"\1Üyü\2\3",
|
441 |
],
|
442 |
[
|
443 |
"([\s\"'\(\)\-.,:;!?>\]])УЮ([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
444 |
-
"\1ÜYÜ\2\3",
|
445 |
],
|
446 |
# ещё один заход (не помню уже точно для чего он, но для чего-то нужен)
|
447 |
[
|
448 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПШC])у([бвгджзйклмнпрстфхцчшщycñ])([ьеёиюэü])",
|
449 |
-
"\1\2ü\3\4",
|
450 |
],
|
451 |
-
["([\s\"'\(\)\-.,:;!?>\]])у([бвгджзйклмнпрстфхцчшщycñ])([ьеёиюэü])", "\1ü\2\3"],
|
452 |
[
|
453 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПШC])У([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
454 |
-
"\1\2Ü\3\4",
|
455 |
],
|
456 |
[
|
457 |
"([\s\"'\(\)\-.,:;!?>\]])У([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
458 |
-
"\1Ü\2\3",
|
459 |
],
|
460 |
# арабские слова на муи- муэ-
|
461 |
-
["([\s\"'\(\)\-.,:;!?>\]])му([иэ])", "\1mü\2"],
|
462 |
# буква o'
|
463 |
# ё
|
464 |
[
|
465 |
"([\s\"'\(\)\-.,:;!?>\]])ё([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеюü])",
|
466 |
-
"\1yö\2\3\4",
|
467 |
],
|
468 |
[
|
469 |
"([\s\"'\(\)\-.,:;!?>\]])Ё([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеюü])",
|
470 |
-
"\1Yö\2\3\4",
|
471 |
],
|
472 |
[
|
473 |
"([\s\"'\(\)\-.,:;!?>\]])Ё([БВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([БВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ЬЕЮÜ])",
|
474 |
-
"\1YÖ\2\3\4",
|
475 |
],
|
476 |
-
["([\s\"'\(\)\-.,:;!?>\]])ё([бвгджзйклмнпрстфхцчшщcñ])([ьеёюэü])", "\1yö\2\3"],
|
477 |
# о
|
478 |
# после о две согласных
|
479 |
[
|
480 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкшcБГКШC])о([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
481 |
-
"\1\2ö\3\4\5",
|
482 |
],
|
483 |
[
|
484 |
"([\s\"'\(\)\-.,:;!?>\]])о([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
485 |
-
"\1ö\2\3\4",
|
486 |
],
|
487 |
[
|
488 |
"([\s\"'\(\)\-.,:;!?>\]])([-\s\"'(бгкшcБГКШC])О([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
489 |
-
"\1\2Ö\3\4\5",
|
490 |
],
|
491 |
# после о одна согласная
|
492 |
[
|
493 |
"([\s\"'\(\)\-.,:;!?>\]])О([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
494 |
-
"\1Ö\2\3\4",
|
495 |
],
|
496 |
[
|
497 |
"([\s\"'\(\)\-.,:;!?>\]])([-\s\"'(бгкшcБГКШC])о([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
498 |
-
"\1\2ö\3\4",
|
499 |
],
|
500 |
-
["([\s\"'\(\)\-.,:;!?>\]])о([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])", "\1ö\2\3"],
|
501 |
[
|
502 |
"([\s\"'\(\)\-.,:;!?>\]])([-\s\"'(бгкшcБГКШC])О([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
503 |
-
"\1\2Ö\3\4",
|
504 |
],
|
505 |
[
|
506 |
"([\s\"'\(\)\-.,:;!?>\]])О([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
507 |
-
"\1Ö\2\3",
|
508 |
],
|
509 |
# 4. o', u' третий заход
|
510 |
-
["([бвгджзйклмнпрстфхцчшщcñ])ю", "\1ü"],
|
511 |
-
["([бвгджзйклмнпрстфхцчшщcñ])ё", "\1ö"],
|
512 |
# 5. o', u' четвёртый заход
|
513 |
-
["([ьеёюэöü])ю", "\1yü"],
|
514 |
# 6. буквы е и я
|
515 |
# случаи е -> ye и я -> ya
|
516 |
-
['([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöüeАЫОУЕИЁЭЮЯЬЪÖÜE(])е', "\1ye"],
|
517 |
[
|
518 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöüeАЫОУЕИЁЭЮЯЬЪÖÜE(])Е([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ\s"\'.,:;!?\)\-\[<])',
|
519 |
-
"\1YE\2",
|
520 |
],
|
521 |
[
|
522 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöÜeАЫОЯУЕИЁЭЮЯЬЪÖÜE(])Е([абвгдеёжзийклмнопрстуфхцчшщъыьэюяqcğñüö])',
|
523 |
-
"\1Ye\2",
|
524 |
],
|
525 |
-
['([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪE(])я', "\1ya"],
|
526 |
[
|
527 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪE(])Я([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ\s"\'.,:;!?\)\-\[<])',
|
528 |
-
"\1YA\2",
|
529 |
],
|
530 |
[
|
531 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪE(])Я([абвгдеёжзийклмнопрстуфхцчшщъыьэюяqcğñüö])',
|
532 |
-
"\1Ya\2",
|
533 |
],
|
534 |
-
['([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöüaeАЫОУЕИЁЭЮЯЬЪÖÜAE(])е', "\1ye"],
|
535 |
[
|
536 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöüaeАЫОУЕИЁЭЮЯЬЪÖÜAE(])Е([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ\s"\'.,:;!?\)\-\[<])',
|
537 |
-
"\1YE\2",
|
538 |
],
|
539 |
[
|
540 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöÜaeАЫОУЕИЁЭЮЯЬЪÖÜAE(])Е([абвгдеёжзийклмнопрстуфхцчшщъыьэюяqcğñüö])',
|
541 |
-
"\1Ye\2",
|
542 |
],
|
543 |
-
['([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъaeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪAE(])я', "\1ya"],
|
544 |
[
|
545 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъaeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪAE(])Я([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ\s"\'.,:;!?\)\-\[<])',
|
546 |
-
"\1YA\2",
|
547 |
],
|
548 |
[
|
549 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъaeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪAE(])Я([абвгдеёжзийклмнопрстуфхцчшщъыьэюяqcğñüö])',
|
550 |
-
"\1Ya\2",
|
551 |
],
|
552 |
# остальные вхождения е и я
|
553 |
["е", "e"],
|
|
|
11 |
# борнен
|
12 |
["борнен", "bornen"],
|
13 |
# бугунь
|
14 |
+
["([\s\"'\(\)\-.,:;!?>\]])бугун", r"\1bugün"],
|
15 |
# бузкесен
|
16 |
["бузкесен", "buzkesen"],
|
17 |
# буксир
|
|
|
38 |
# формы глагола буюмек
|
39 |
["бую([гдйлмнпрстчшc])(и)", "büyü\1\2"],
|
40 |
# буюп
|
41 |
+
["([\s\"'\(\)\-.,:;!?>\]])буюп([\s\"'.,:;!?\)\-\[<])", r"\1büyüp\2"],
|
42 |
# буют
|
43 |
["буют([^ыа])", "büyüt\1"],
|
44 |
# гонъюль
|
|
|
74 |
["койдеки([\s\"'.,:;!?\)\-\[<])", "köydeki\1"],
|
75 |
["койден([\s\"'.,:;!?\)\-\[<])", "köyden\1"],
|
76 |
["койлю", "köylü"],
|
77 |
+
["([\s\"'\(\)\-.,:;!?>\]])кою", r"\1köyü"],
|
78 |
# ком-кок
|
79 |
+
["([\s\"'\(\)\-.,:;!?>\]])ком-кок", r"\1köm-kök"],
|
80 |
# кок
|
81 |
+
["([\s\"'\(\)\-.,:;!?>\]])кок([^еёюяЕЁЮЯ])", r"\1kök\2"],
|
82 |
# кокос
|
83 |
["кокос", "kokos"],
|
84 |
# коллега и однокоренные
|
|
|
143 |
# копия
|
144 |
["копия", "kopiya"],
|
145 |
# коп
|
146 |
+
["([\s\"'\(\)\-.,:;!?>\]])коп([^еёюяЕЁЮЯ])", r"\1köp\2"],
|
147 |
# корея
|
148 |
["корея", "koreya"],
|
149 |
# корректор, корреспондент
|
|
|
163 |
# коше
|
164 |
["коше", "köşe"],
|
165 |
# куе
|
166 |
+
["([\s\"'\(\)\-.,:;!?>\]])куе", r"\1küye"],
|
167 |
# кулинар
|
168 |
["кулинар", "kulinar"],
|
169 |
# кульминация
|
|
|
173 |
# культура
|
174 |
["культура", "kultura"],
|
175 |
# курьк
|
176 |
+
["([\s\"'\(\)\-.,:;!?>\]])курк([\s\"'.,:;!?\)\-\[<])", r"\1kürk\2"],
|
177 |
+
["([\s\"'\(\)\-.,:;!?>\]])куркке", r"\1kürkke"],
|
178 |
+
["([\s\"'\(\)\-.,:;!?>\]])куркни", r"\1kürkni"],
|
179 |
+
["([\s\"'\(\)\-.,:;!?>\]])куркте", r"\1kürkte"],
|
180 |
+
["([\s\"'\(\)\-.,:;!?>\]])куркчи", r"\1kürkçi"],
|
181 |
+
["([\s\"'\(\)\-.,:;!?>\]])куркчю", r"\1kürkçü"],
|
182 |
# курсив
|
183 |
["курсив", "kursiv"],
|
184 |
# кушкулемек и однокоренные
|
|
|
203 |
# нумюне
|
204 |
["нумюне", "nümüne"],
|
205 |
# ог
|
206 |
+
['(["\s(-])ог([^ъ])', r"\1öг\2"],
|
207 |
# одеколон
|
208 |
["одеколон", "odekolon"],
|
209 |
# океан
|
|
|
221 |
["опция", "optsiya"],
|
222 |
["опци", "optsi"],
|
223 |
# орден и ордер
|
224 |
+
["([\s\"'\(\)\-.,:;!?>\]])орде([нр])", r"\1orde\2"],
|
225 |
# оригинал
|
226 |
["оригинал", "original"],
|
227 |
# ориентир
|
|
|
247 |
# ультра
|
248 |
["ультра", "ultra"],
|
249 |
# уника
|
250 |
+
["([\s\"'\(\)\-.,:;!?>\]])уник", r"\1unik"],
|
251 |
# универcаль, универмаг, университет
|
252 |
["универ", "univer"],
|
253 |
# унтер
|
254 |
+
["([\s\"'\(\)\-.,:;!?>\]])унтер", r"\1unter"],
|
255 |
# урьян
|
256 |
["урьян", "uryan"],
|
257 |
# джонк
|
|
|
269 |
["шунен", "şunen"],
|
270 |
["шуннен", "şunnen"],
|
271 |
# юз
|
272 |
+
["([\s\"'\(\)\-.,:;!?>\]])юз([\s\"'.,:;!?\)\-\[<])", r"\1yüz\2"],
|
273 |
# юзбашы
|
274 |
+
["([\s\"'\(\)\-.,:;!?>\]])юзбашы", r"\1yüzbaşı"],
|
275 |
# юзйыллыкъ
|
276 |
+
["([\s\"'\(\)\-.,:;!?>\]])юзйыл", r"\1yüzyıl"],
|
277 |
# юк
|
278 |
+
["([\s\"'\(\)\-.,:;!?>\]])юк([^ъ])", r"\1yüк\2"],
|
279 |
# юрип
|
280 |
+
["([\s\"'\(\)\-.,:;!?>\]])юрип", r"\1yürip"],
|
281 |
# 3-юнджи, 4-юнджи
|
282 |
+
["([34])-юнджи", r"\1-ünci"],
|
283 |
# некоторые глагольные фо��мы на -ама, -алма
|
284 |
# букама, букалма
|
285 |
+
["([\s\"'\(\)\-.,:;!?>\]])букама", r"\1bükama"],
|
286 |
+
["([\s\"'\(\)\-.,:;!?>\]])букалма", r"\1bükalma"],
|
287 |
# комама, комалма
|
288 |
+
["([\s\"'\(\)\-.,:;!?>\]])комама", r"\1kömama"],
|
289 |
+
["([\s\"'\(\)\-.,:;!?>\]])комалма", r"\1kömalma"],
|
290 |
# корама, коралма
|
291 |
+
["([\s\"'\(\)\-.,:;!?>\]])корама", r"\1körama"],
|
292 |
+
["([\s\"'\(\)\-.,:;!?>\]])коралма", r"\1köralma"],
|
293 |
# кочама, кочалма
|
294 |
+
["([\s\"'\(\)\-.,:;!?>\]])кочама", r"\1köçama"],
|
295 |
+
["([\s\"'\(\)\-.,:;!?>\]])кочалма", r"\1köçalma"],
|
296 |
# куяма, куялма
|
297 |
+
["([\s\"'\(\)\-.,:;!?>\]])куяма", r"\1küyama"],
|
298 |
+
["([\s\"'\(\)\-.,:;!?>\]])куялма", r"\1küyalma"],
|
299 |
# кулама, кулалма
|
300 |
+
# [ "([\s\"'\(\)\-.,:;!?>\]])кулама", r"\1külama" ],
|
301 |
+
# [ "([\s\"'\(\)\-.,:;!?>\]])кулалма", r"\1külalma" ],
|
302 |
# кусама, кусалма
|
303 |
+
["([\s\"'\(\)\-.,:;!?>\]])кусама", r"\1küsama"],
|
304 |
+
["([\s\"'\(\)\-.,:;!?>\]])кусалма", r"\1küsalma"],
|
305 |
# кутама, куталма
|
306 |
+
["([\s\"'\(\)\-.,:;!?>\]])кутама", r"\1kütama"],
|
307 |
+
["([\s\"'\(\)\-.,:;!?>\]])куталма", r"\1kütalma"],
|
308 |
# опама, опалма
|
309 |
+
["([\s\"'\(\)\-.,:;!?>\]])опама", r"\1öpama"],
|
310 |
+
["([\s\"'\(\)\-.,:;!?>\]])опалма", r"\1öpalma"],
|
311 |
# осама, осалма
|
312 |
+
["([\s\"'\(\)\-.,:;!?>\]])осама", r"\1ösama"],
|
313 |
+
["([\s\"'\(\)\-.,:;!?>\]])осалма", r"\1ösalma"],
|
314 |
# отама, оталма
|
315 |
+
# [ "([\s\"'\(\)\-.,:;!?>\]])отама", r"\1ötama" ],
|
316 |
+
["([\s\"'\(\)\-.,:;!?>\]])оталма", r"\1ötalma"],
|
317 |
# узама, узалма
|
318 |
+
# [ "([\s\"'\(\)\-.,:;!?>\]])узама", r"\1üzama" ],
|
319 |
+
["([\s\"'\(\)\-.,:;!?>\]])узалма", r"\1üzalma"],
|
320 |
# утама, уталма
|
321 |
+
["([\s\"'\(\)\-.,:;!?>\]])утама", r"\1ütama"],
|
322 |
+
["([\s\"'\(\)\-.,:;!?>\]])уталма", r"\1ütalma"],
|
323 |
# Имена собственные
|
324 |
["аджыумер", "acıümer"],
|
325 |
["аджыусеин", "acıüsein"],
|
326 |
["боливия", "boliviya"],
|
327 |
+
["([\s\"'\(\)\-.,:;!?>\]])ишунь", r"\1işün"],
|
328 |
["корбекул", "körbekül"],
|
329 |
["корьбекул", "körbekül"],
|
330 |
["куркулет", "kürkület"],
|
|
|
345 |
["юртер", "yurter"],
|
346 |
["ющенко", "yuşçenko"],
|
347 |
# -ьон
|
348 |
+
["([^\s])ьон", r"\1yon"],
|
349 |
# Я
|
350 |
[
|
351 |
"([\s\"'\(\)\-.,:;!?>\]])Я([\s\"'.,:;!?\)\-\[<])",
|
352 |
+
r"\1Ya\2",
|
353 |
], # TODO: check why there is no case for small letters
|
354 |
# Ё
|
355 |
+
["([\s\"'\(\)\-.,:;!?>\]])Ё([\s\"'.,:;!?\)\-\[<])", r"\1Yo\2"],
|
356 |
# йе
|
357 |
["йе", "yye"],
|
358 |
# йя
|
|
|
363 |
["нъ", "ñ"],
|
364 |
["дж", "c"],
|
365 |
# 2. o', u' первый заход - ё и ю после согласных
|
366 |
+
[r"([бвгджзйклмнпрстфхцчшщñcБВГДЖЗЙКЛМНПРСТФХЦЧШЩÑC])ю", r"\1ü"],
|
367 |
+
[r"([бвгджзйклмнпрстфхцчшщñcБВГДЖЗЙКЛМНПРСТФХЦЧШЩÑC])ё", r"\1ö"],
|
368 |
# 3. o', u' второй заход
|
369 |
# буква u'
|
370 |
# ю
|
371 |
[
|
372 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёюАЫОУЕИЁЮ])ю([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеюэü])',
|
373 |
+
r"\1yü\2\3\4",
|
374 |
],
|
375 |
[
|
376 |
'([\s"\'\(\)\-.,:;!?>\]"АЫОУЕИЁЮ])Ю([БВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([БВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ЬЕЮЭÜ])',
|
377 |
+
r"\1YÜ\2\3\4",
|
378 |
],
|
379 |
[
|
380 |
'([\s"\'\(\)\-.,:;!?>\]"(аыоуеиёюАЫОУЕИЁЮ])ю([бвгджзйклмнпрстфхцчшщcñ])([ьеюэü])',
|
381 |
+
r"\1yü\2\3",
|
382 |
],
|
383 |
[
|
384 |
'([\s"\'\(\)\-.,:;!?>\]"(АЫОУЕИЁЮ])Ю([БВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ЬЕЮЭÜ])',
|
385 |
+
r"\1YÜ\2\3",
|
386 |
],
|
387 |
["ю([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеюэü])", "yü\1\2\3"],
|
388 |
["ю([бвгджзйклмнпрстфхцчшщcñ])([ьеюэü])", "yü\1\2"],
|
|
|
391 |
# строчная у
|
392 |
[
|
393 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПCШ])у([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
394 |
+
r"\1\2ü\3\4\5",
|
395 |
],
|
396 |
[
|
397 |
"([\s\"'\(\)\-.,:;!?>\]])у([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
398 |
+
r"\1ü\2\3\4",
|
399 |
],
|
400 |
[
|
401 |
"([\s\"'\(\)\-.,:;!?>\]])ую([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
402 |
+
r"\1üyü\2\3\4",
|
403 |
],
|
404 |
# заглавная У
|
405 |
[
|
406 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПШC])У([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
407 |
+
r"\1\2Ü\3\4\5",
|
408 |
],
|
409 |
[
|
410 |
"([\s\"'\(\)\-.,:;!?>\]])У([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
411 |
+
r"\1Ü\2\3\4",
|
412 |
],
|
413 |
[
|
414 |
"([\s\"'\(\)\-.,:;!?>\]])Ую([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
415 |
+
r"\1Üyü\2\3\4",
|
416 |
],
|
417 |
[
|
418 |
"([\s\"'\(\)\-.,:;!?>\]])УЮ([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
419 |
+
r"\1ÜYÜ\2\3\4",
|
420 |
],
|
421 |
# после у или ую одна согласная
|
422 |
# строчная у
|
423 |
[
|
424 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПШC])у([бвгджзйклмнпрстфхцчшщycñ])([ьеёиюэü])",
|
425 |
+
r"\1\2ü\3\4",
|
426 |
],
|
427 |
+
["([\s\"'\(\)\-.,:;!?>\]])у([бвгджзйклмнпрстфхцчшщycñ])([ьеёиюэü])", r"\1ü\2\3"],
|
428 |
+
["([\s\"'\(\)\-.,:;!?>\]])ую([бвгджзйклмнпрстфхцчшщycñ])([ьеёиюэü])", r"\1üyü\2\3"],
|
429 |
# заглавная У
|
430 |
[
|
431 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПШC])У([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
432 |
+
r"\1\2Ü\3\4",
|
433 |
],
|
434 |
[
|
435 |
"([\s\"'\(\)\-.,:;!?>\]])У([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
436 |
+
r"\1Ü\2\3",
|
437 |
],
|
438 |
[
|
439 |
"([\s\"'\(\)\-.,:;!?>\]])Ую([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
440 |
+
r"\1Üyü\2\3",
|
441 |
],
|
442 |
[
|
443 |
"([\s\"'\(\)\-.,:;!?>\]])УЮ([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
444 |
+
r"\1ÜYÜ\2\3",
|
445 |
],
|
446 |
# ещё один заход (не помню уже точно для чего он, но для чего-то нужен)
|
447 |
[
|
448 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПШC])у([бвгджзйклмнпрстфхцчшщycñ])([ьеёиюэü])",
|
449 |
+
r"\1\2ü\3\4",
|
450 |
],
|
451 |
+
["([\s\"'\(\)\-.,:;!?>\]])у([бвгджзйклмнпрстфхцчшщycñ])([ьеёиюэü])", r"\1ü\2\3"],
|
452 |
[
|
453 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкмпшcБГКМПШC])У([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
454 |
+
r"\1\2Ü\3\4",
|
455 |
],
|
456 |
[
|
457 |
"([\s\"'\(\)\-.,:;!?>\]])У([бвгджзйклмнпрстфхцчшщcñyБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюüэЬЕЁИЮЭÜ])",
|
458 |
+
r"\1Ü\2\3",
|
459 |
],
|
460 |
# арабские слова на муи- муэ-
|
461 |
+
["([\s\"'\(\)\-.,:;!?>\]])му([иэ])", r"\1mü\2"],
|
462 |
# буква o'
|
463 |
# ё
|
464 |
[
|
465 |
"([\s\"'\(\)\-.,:;!?>\]])ё([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеюü])",
|
466 |
+
r"\1yö\2\3\4",
|
467 |
],
|
468 |
[
|
469 |
"([\s\"'\(\)\-.,:;!?>\]])Ё([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеюü])",
|
470 |
+
r"\1Yö\2\3\4",
|
471 |
],
|
472 |
[
|
473 |
"([\s\"'\(\)\-.,:;!?>\]])Ё([БВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([БВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ЬЕЮÜ])",
|
474 |
+
r"\1YÖ\2\3\4",
|
475 |
],
|
476 |
+
["([\s\"'\(\)\-.,:;!?>\]])ё([бвгджзйклмнпрстфхцчшщcñ])([ьеёюэü])", r"\1yö\2\3"],
|
477 |
# о
|
478 |
# после о две согласных
|
479 |
[
|
480 |
"([\s\"'\(\)\-.,:;!?>\]])([бгкшcБГКШC])о([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
481 |
+
r"\1\2ö\3\4\5",
|
482 |
],
|
483 |
[
|
484 |
"([\s\"'\(\)\-.,:;!?>\]])о([бвгджзйклмнпрстфхцчшщcñ])([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
485 |
+
r"\1ö\2\3\4",
|
486 |
],
|
487 |
[
|
488 |
"([\s\"'\(\)\-.,:;!?>\]])([-\s\"'(бгкшcБГКШC])О([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
489 |
+
r"\1\2Ö\3\4\5",
|
490 |
],
|
491 |
# после о одна согласная
|
492 |
[
|
493 |
"([\s\"'\(\)\-.,:;!?>\]])О([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
494 |
+
r"\1Ö\2\3\4",
|
495 |
],
|
496 |
[
|
497 |
"([\s\"'\(\)\-.,:;!?>\]])([-\s\"'(бгкшcБГКШC])о([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])",
|
498 |
+
r"\1\2ö\3\4",
|
499 |
],
|
500 |
+
["([\s\"'\(\)\-.,:;!?>\]])о([бвгджзйклмнпрстфхцчшщcñ])([ьеёиюэü])", r"\1ö\2\3"],
|
501 |
[
|
502 |
"([\s\"'\(\)\-.,:;!?>\]])([-\s\"'(бгкшcБГКШC])О([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
503 |
+
r"\1\2Ö\3\4",
|
504 |
],
|
505 |
[
|
506 |
"([\s\"'\(\)\-.,:;!?>\]])О([бвгджзйклмнпрстфхцчшщcñБВГДЖЗЙКЛМНПРСТФХЦЧШЩCÑ])([ьеёиюэüЬЕЁИЮЭÜ])",
|
507 |
+
r"\1Ö\2\3",
|
508 |
],
|
509 |
# 4. o', u' третий заход
|
510 |
+
["([бвгджзйклмнпрстфхцчшщcñ])ю", r"\1ü"],
|
511 |
+
["([бвгджзйклмнпрстфхцчшщcñ])ё", r"\1ö"],
|
512 |
# 5. o', u' четвёртый заход
|
513 |
+
["([ьеёюэöü])ю", r"\1yü"],
|
514 |
# 6. буквы е и я
|
515 |
# случаи е -> ye и я -> ya
|
516 |
+
['([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöüeАЫОУЕИЁЭЮЯЬЪÖÜE(])е', r"\1ye"],
|
517 |
[
|
518 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöüeАЫОУЕИЁЭЮЯЬЪÖÜE(])Е([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ\s"\'.,:;!?\)\-\[<])',
|
519 |
+
r"\1YE\2",
|
520 |
],
|
521 |
[
|
522 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöÜeАЫОЯУЕИЁЭЮЯЬЪÖÜE(])Е([абвгдеёжзийклмнопрстуфхцчшщъыьэюяqcğñüö])',
|
523 |
+
r"\1Ye\2",
|
524 |
],
|
525 |
+
['([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪE(])я', r"\1ya"],
|
526 |
[
|
527 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪE(])Я([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ\s"\'.,:;!?\)\-\[<])',
|
528 |
+
r"\1YA\2",
|
529 |
],
|
530 |
[
|
531 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪE(])Я([абвгдеёжзийклмнопрстуфхцчшщъыьэюяqcğñüö])',
|
532 |
+
r"\1Ya\2",
|
533 |
],
|
534 |
+
['([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöüaeАЫОУЕИЁЭЮЯЬЪÖÜAE(])е', r"\1ye"],
|
535 |
[
|
536 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöüaeАЫОУЕИЁЭЮЯЬЪÖÜAE(])Е([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ\s"\'.,:;!?\)\-\[<])',
|
537 |
+
r"\1YE\2",
|
538 |
],
|
539 |
[
|
540 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяьъöÜaeАЫОУЕИЁЭЮЯЬЪÖÜAE(])Е([абвгдеёжзийклмнопрстуфхцчшщъыьэюяqcğñüö])',
|
541 |
+
r"\1Ye\2",
|
542 |
],
|
543 |
+
['([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъaeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪAE(])я', r"\1ya"],
|
544 |
[
|
545 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъaeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪAE(])Я([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ\s"\'.,:;!?\)\-\[<])',
|
546 |
+
r"\1YA\2",
|
547 |
],
|
548 |
[
|
549 |
'([\s"\'\(\)\-.,:;!?>\]"аыоуеиёэюяöÜñqğьъaeАЫОУЕИЁЭЮЯÖÜÑQĞЬЪAE(])Я([абвгдеёжзийклмнопрстуфхцчшщъыьэюяqcğñüö])',
|
550 |
+
r"\1Ya\2",
|
551 |
],
|
552 |
# остальные вхождения е и я
|
553 |
["е", "e"],
|
tests/test_converter.py
CHANGED
@@ -1,24 +1,7 @@
|
|
1 |
-
import converter
|
2 |
from crh_transliterator.transliterator import transliterate
|
3 |
from tabulate import tabulate
|
4 |
|
5 |
|
6 |
-
def test_latin_converter():
|
7 |
-
cases = _read_test_cases()
|
8 |
-
failed = []
|
9 |
-
for case in cases:
|
10 |
-
if converter.to_latin(case[1]).lower() != case[0].lower():
|
11 |
-
failed.append(
|
12 |
-
(case[1].lower(), converter.to_latin(case[1]).lower(), case[0].lower())
|
13 |
-
)
|
14 |
-
if len(failed) > 0:
|
15 |
-
failed_rows = "\n".join([str(item) for item in failed])
|
16 |
-
raise Exception(
|
17 |
-
f"Failed {len(failed)}/{len(cases)} ({round((len(failed)/len(cases))*100,2)}%) cases.\n"
|
18 |
-
+ tabulate(failed, headers=["Original", "Converted", "Ground truth"])
|
19 |
-
)
|
20 |
-
|
21 |
-
|
22 |
def test_transliterator():
|
23 |
cases = _read_test_cases()
|
24 |
failed = []
|
|
|
|
|
1 |
from crh_transliterator.transliterator import transliterate
|
2 |
from tabulate import tabulate
|
3 |
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
def test_transliterator():
|
6 |
cases = _read_test_cases()
|
7 |
failed = []
|