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 = []
|