Spaces:
Running
Running
Yurii Paniv
commited on
Commit
·
ed1082e
1
Parent(s):
57f344b
Proper translit PoC
Browse files- README.md +5 -0
- crh_transliterator/__init__.py +0 -0
- crh_transliterator/cyr_to_lat.py +597 -0
- crh_transliterator/transliterator.py +12 -0
- pytest.ini +1 -1
- tests/test_converter.py +16 -5
README.md
CHANGED
|
@@ -1,2 +1,7 @@
|
|
| 1 |
# qirimli-tts
|
| 2 |
Text-to-Speech for Crimean Tatar language
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
# qirimli-tts
|
| 2 |
Text-to-Speech for Crimean Tatar language
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
# Attibution
|
| 6 |
+
|
| 7 |
+
Transliteration: [prosvita/crh.transliteration](https://github.com/prosvita/crh.transliteration)
|
crh_transliterator/__init__.py
ADDED
|
File without changes
|
crh_transliterator/cyr_to_lat.py
ADDED
|
@@ -0,0 +1,597 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
mappings = [
|
| 2 |
+
["«", '"'],
|
| 3 |
+
["»", '"'],
|
| 4 |
+
# 0. словарик
|
| 5 |
+
# алейкум
|
| 6 |
+
["алейкум", "aleyküm"],
|
| 7 |
+
# бейуде
|
| 8 |
+
["бейуде", "beyüde"],
|
| 9 |
+
# большевик
|
| 10 |
+
["большевик", "bolşevik"],
|
| 11 |
+
# борнен
|
| 12 |
+
["борнен", "bornen"],
|
| 13 |
+
# бугунь
|
| 14 |
+
["([\s\"'\(\)\-.,:;!?>\]])бугун", "\1bugün"],
|
| 15 |
+
# бузкесен
|
| 16 |
+
["бузкесен", "buzkesen"],
|
| 17 |
+
# буксир
|
| 18 |
+
["буксир", "buksir"],
|
| 19 |
+
# бульбуль
|
| 20 |
+
["бульбуль", "bülbül"],
|
| 21 |
+
# бульвар
|
| 22 |
+
["бульвар", "bulvar"],
|
| 23 |
+
# бульдозер
|
| 24 |
+
["бульдозер", "buldozer"],
|
| 25 |
+
# бульон
|
| 26 |
+
["бульон", "bulyon"],
|
| 27 |
+
# бунен
|
| 28 |
+
["бунен", "bunen"],
|
| 29 |
+
["буннен", "bunnen"],
|
| 30 |
+
# бус-бутюн
|
| 31 |
+
["бус-бутюн", "büs-bütün"],
|
| 32 |
+
# бутерброд
|
| 33 |
+
["бутерброд", "buterbrod"],
|
| 34 |
+
# буфер и буфет
|
| 35 |
+
["буфе([рт])", "bufe\1"],
|
| 36 |
+
# буюк
|
| 37 |
+
["буюк([^ъ])", "büyük\1"],
|
| 38 |
+
# формы глагола буюмек
|
| 39 |
+
["бую([гдйлмнпрстчшc])(и)", "büyü\1\2"],
|
| 40 |
+
# буюп
|
| 41 |
+
["([\s\"'\(\)\-.,:;!?>\]])буюп([\s\"'.,:;!?\)\-\[<])", "\1büyüp\2"],
|
| 42 |
+
# буют
|
| 43 |
+
["буют([^ыа])", "büyüt\1"],
|
| 44 |
+
# гонъюль
|
| 45 |
+
["гонъюл", "göñül"],
|
| 46 |
+
# горизонт
|
| 47 |
+
["горизонт", "gorizont"],
|
| 48 |
+
# госпиталь
|
| 49 |
+
["госпиталь", "gospital"],
|
| 50 |
+
# гунях
|
| 51 |
+
["гунях", "günâh"],
|
| 52 |
+
# гуна
|
| 53 |
+
["гуна", "güna"],
|
| 54 |
+
# гургуль
|
| 55 |
+
["гургуль", "gürgül"],
|
| 56 |
+
# гуя
|
| 57 |
+
["гуя", "güya"],
|
| 58 |
+
# ёлнен
|
| 59 |
+
["ёлнен", "yolnen"],
|
| 60 |
+
# зумбуль
|
| 61 |
+
["зумбуль", "zümbül"],
|
| 62 |
+
# кодекс
|
| 63 |
+
["кодекс", "kodeks"],
|
| 64 |
+
# кодификация и однокоренные
|
| 65 |
+
["кодифик", "kodifik"],
|
| 66 |
+
# козь
|
| 67 |
+
["козь([^я])", "köz\1"],
|
| 68 |
+
# кой
|
| 69 |
+
["кой([\s\"'.,:;!?\)\-\[<])", "köy\1"],
|
| 70 |
+
["койнинъ([\s\"'.,:;!?\)\-\[<])", "köyniñ\1"],
|
| 71 |
+
["койни([\s\"'.,:;!?\)\-\[<])", "köyni\1"],
|
| 72 |
+
["койге([\s\"'.,:;!?\)\-\[<])", "köyge\1"],
|
| 73 |
+
["койде([\s\"'.,:;!?\)\-\[<])", "köyde\1"],
|
| 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 |
+
# коллега и однокоренные
|
| 85 |
+
["коллег", "kolleg"],
|
| 86 |
+
["коллега", "kollega"],
|
| 87 |
+
# коллекция, коллектив и однокоренные
|
| 88 |
+
["коллек([цт])", "kollek\1"],
|
| 89 |
+
# комбинат и однокоренные
|
| 90 |
+
["комбин", "kombin"],
|
| 91 |
+
# комедия
|
| 92 |
+
["комедия", "komediya"],
|
| 93 |
+
# комендант и однокоренные
|
| 94 |
+
["коменда", "komenda"],
|
| 95 |
+
# комета
|
| 96 |
+
["комета", "kometa"],
|
| 97 |
+
# комиссия, комитет
|
| 98 |
+
["коми([ст])", "komi\1"],
|
| 99 |
+
# комментарий и однокоренные
|
| 100 |
+
["коммент", "komment"],
|
| 101 |
+
# коммерция и коммерсант
|
| 102 |
+
["коммер([сц])", "kommer\1"],
|
| 103 |
+
# компенсация и однокоренные
|
| 104 |
+
["компенс", "kompens"],
|
| 105 |
+
# компиляция и однокоренные
|
| 106 |
+
["компил", "kompil"],
|
| 107 |
+
# компьютер
|
| 108 |
+
["компьютер", "kompyuter"],
|
| 109 |
+
# конвейер
|
| 110 |
+
["конвейер", "konveyer"],
|
| 111 |
+
# конвенция и однокоренные
|
| 112 |
+
["конвен", "konven"],
|
| 113 |
+
# конверт
|
| 114 |
+
["конверт", "konvert"],
|
| 115 |
+
# конденсатор и однокоренные
|
| 116 |
+
["конденс", "kondens"],
|
| 117 |
+
# кондитер
|
| 118 |
+
["кондитер", "konditer"],
|
| 119 |
+
# коник (конический)
|
| 120 |
+
["коник", "konik"],
|
| 121 |
+
# консер
|
| 122 |
+
["консерв", "konserv"],
|
| 123 |
+
# контейнер
|
| 124 |
+
["контейнер", "konteyner"],
|
| 125 |
+
# континент
|
| 126 |
+
["континент", "kontinent"],
|
| 127 |
+
# конференция, конфет
|
| 128 |
+
["конфе", "konfe"],
|
| 129 |
+
# конфискация и однокоренные
|
| 130 |
+
["конфискац", "konfiskats"],
|
| 131 |
+
# концентрация и однокоренные
|
| 132 |
+
["концен", "kontsen"],
|
| 133 |
+
# концерт
|
| 134 |
+
["концерт", "kontsert"],
|
| 135 |
+
# коньки
|
| 136 |
+
["коньки", "konki"],
|
| 137 |
+
# коньки
|
| 138 |
+
["коньяк", "konyak"],
|
| 139 |
+
# конъюктура
|
| 140 |
+
["конъюктур", "konyuktur"],
|
| 141 |
+
# копирлемек и однокоренные
|
| 142 |
+
["копирле", "kopirle"],
|
| 143 |
+
# копия
|
| 144 |
+
["копия", "kopiya"],
|
| 145 |
+
# коп
|
| 146 |
+
["([\s\"'\(\)\-.,:;!?>\]])коп([^еёюяЕЁЮЯ])", "\1köp\2"],
|
| 147 |
+
# корея
|
| 148 |
+
["корея", "koreya"],
|
| 149 |
+
# корректор, корреспондент
|
| 150 |
+
["корре", "korre"],
|
| 151 |
+
# коридор
|
| 152 |
+
["коридор", "koridor"],
|
| 153 |
+
# косметика
|
| 154 |
+
["косме", "kosme"],
|
| 155 |
+
# костюм
|
| 156 |
+
["костюм", "kostüm"],
|
| 157 |
+
# космик (космический)
|
| 158 |
+
["космик", "kosmik"],
|
| 159 |
+
# котировка
|
| 160 |
+
["котировка", "kotirovka"],
|
| 161 |
+
# котлет
|
| 162 |
+
["котлет", "kotlet"],
|
| 163 |
+
# коше
|
| 164 |
+
["коше", "köşe"],
|
| 165 |
+
# куе
|
| 166 |
+
["([\s\"'\(\)\-.,:;!?>\]])куе", "\1küye"],
|
| 167 |
+
# кулинар
|
| 168 |
+
["кулинар", "kulinar"],
|
| 169 |
+
# кульминация
|
| 170 |
+
["кульминац", "kulminats"],
|
| 171 |
+
# культивация
|
| 172 |
+
["культив", "kultiv"],
|
| 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 |
+
# кушкулемек и однокоренные
|
| 185 |
+
["кушку", "küşkü"],
|
| 186 |
+
# куюк
|
| 187 |
+
["куюк", "küyük"],
|
| 188 |
+
# медьюн
|
| 189 |
+
["медьюн", "medyun"],
|
| 190 |
+
# месуль
|
| 191 |
+
["месуль", "mesül"],
|
| 192 |
+
["месули", "mesüli"],
|
| 193 |
+
# мефкуре
|
| 194 |
+
["мефкуре", "mefküre"],
|
| 195 |
+
# могедек
|
| 196 |
+
["могедек", "mögedek"],
|
| 197 |
+
# муурь
|
| 198 |
+
["муур", "müür"],
|
| 199 |
+
# муче
|
| 200 |
+
["муче", "müçe"],
|
| 201 |
+
# муюз
|
| 202 |
+
["муюз", "müyüz"],
|
| 203 |
+
# нумюне
|
| 204 |
+
["нумюне", "nümüne"],
|
| 205 |
+
# ог
|
| 206 |
+
['(["\s(-])ог([^ъ])', "\1öг\2"],
|
| 207 |
+
# одеколон
|
| 208 |
+
["одеколон", "odekolon"],
|
| 209 |
+
# океан
|
| 210 |
+
["океан", "okean"],
|
| 211 |
+
# …ольчер
|
| 212 |
+
["ольчер", "ölçer"],
|
| 213 |
+
# олимп
|
| 214 |
+
["олимп", "olimp"],
|
| 215 |
+
# онен
|
| 216 |
+
["онен", "onen"],
|
| 217 |
+
["оннен", "onnen"],
|
| 218 |
+
# операция и однокоренные
|
| 219 |
+
["опера", "opera"],
|
| 220 |
+
# опция и однокоренные
|
| 221 |
+
["опция", "optsiya"],
|
| 222 |
+
["опци", "optsi"],
|
| 223 |
+
# орден и ордер
|
| 224 |
+
["([\s\"'\(\)\-.,:;!?>\]])орде([нр])", "\1orde\2"],
|
| 225 |
+
# оригинал
|
| 226 |
+
["оригинал", "original"],
|
| 227 |
+
# ориентир
|
| 228 |
+
["ориент", "oriyent"],
|
| 229 |
+
# оркестр
|
| 230 |
+
["оркестр", "orkestr"],
|
| 231 |
+
# офис
|
| 232 |
+
["офис", "ofis"],
|
| 233 |
+
# офицер
|
| 234 |
+
["офицер", "ofitser"],
|
| 235 |
+
# офсет
|
| 236 |
+
["офсет", "ofset"],
|
| 237 |
+
# оюннен
|
| 238 |
+
["оюннен", "oyunnen"],
|
| 239 |
+
# публикация и однокоренные
|
| 240 |
+
["публик", "publik"],
|
| 241 |
+
# публицистика и однокоренные
|
| 242 |
+
["публиц", "publits"],
|
| 243 |
+
# сурет
|
| 244 |
+
["сурет", "süret"],
|
| 245 |
+
# ультиматум и однокоренные
|
| 246 |
+
["ультимат", "ultimat"],
|
| 247 |
+
# ультра
|
| 248 |
+
["ультра", "ultra"],
|
| 249 |
+
# уника
|
| 250 |
+
["([\s\"'\(\)\-.,:;!?>\]])уник", "\1unik"],
|
| 251 |
+
# универcаль, универмаг, университет
|
| 252 |
+
["универ", "univer"],
|
| 253 |
+
# унтер
|
| 254 |
+
["([\s\"'\(\)\-.,:;!?>\]])унтер", "\1unter"],
|
| 255 |
+
# урьян
|
| 256 |
+
["урьян", "uryan"],
|
| 257 |
+
# джонк
|
| 258 |
+
["джонкю", "cönkü"],
|
| 259 |
+
["джонк([^ъ])", "cönk\1"],
|
| 260 |
+
# джуньджу
|
| 261 |
+
["джуньджу", "cüncü"],
|
| 262 |
+
# шовинизм и однокоренные
|
| 263 |
+
["шовини", "şovini"],
|
| 264 |
+
# шоссе
|
| 265 |
+
["шоссе", "şosse"],
|
| 266 |
+
# шофёр
|
| 267 |
+
["шоф[её]р", "şoför"],
|
| 268 |
+
# шунен
|
| 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"],
|
| 331 |
+
["къарагоз", "qaragöz"],
|
| 332 |
+
["къуртумер", "qurtümer"],
|
| 333 |
+
["къуртусеин", "qurtüsein"],
|
| 334 |
+
["марьино", "maryino"],
|
| 335 |
+
["одесса", "odessa"],
|
| 336 |
+
["одеса", "odesa"],
|
| 337 |
+
["потелов", "potelov"],
|
| 338 |
+
["пушкин", "puşkin"],
|
| 339 |
+
["сеитумер", "seitümer"],
|
| 340 |
+
["сеитусеин", "seitüsein"],
|
| 341 |
+
["сейитумер", "seyitümer"],
|
| 342 |
+
["сейитусеин", "seyitüsein"],
|
| 343 |
+
["щёлкино", "şçolkino"],
|
| 344 |
+
["эмирусеин", "emirüsein"],
|
| 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 |
+
# йя
|
| 359 |
+
["йя", "yya"],
|
| 360 |
+
# 1. буквы гъ, къ, нъ, дж
|
| 361 |
+
["гъ", "ğ"],
|
| 362 |
+
["къ", "q"],
|
| 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"],
|
| 389 |
+
# у и ую
|
| 390 |
+
# после у или ую две согласных
|
| 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"],
|
| 554 |
+
["я", "â"],
|
| 555 |
+
# 7. все оставшиеся вхождения о, у, ё, ю
|
| 556 |
+
["Ю([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ])", "YU\1"],
|
| 557 |
+
["ю", "yu"],
|
| 558 |
+
["Ё([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ])", "YO\1"],
|
| 559 |
+
["ё", "yo"],
|
| 560 |
+
["у", "u"],
|
| 561 |
+
["о", "o"],
|
| 562 |
+
# 8. убираем ь и ъ
|
| 563 |
+
["ь", ""],
|
| 564 |
+
["ъ", ""],
|
| 565 |
+
# 9. все остальные буквы
|
| 566 |
+
# заглавные Ц и Щ
|
| 567 |
+
["Ц([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ])", "TS\1"],
|
| 568 |
+
["Ц", "Ts"],
|
| 569 |
+
["Щ([АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯQCĞÑÜÖ])", "ŞÇ\1"],
|
| 570 |
+
["Щ", "Şç"],
|
| 571 |
+
# строчные
|
| 572 |
+
["а", "a"],
|
| 573 |
+
["б", "b"],
|
| 574 |
+
["в", "v"],
|
| 575 |
+
["г", "g"],
|
| 576 |
+
["д", "d"],
|
| 577 |
+
["ж", "j"],
|
| 578 |
+
["з", "z"],
|
| 579 |
+
["и", "i"],
|
| 580 |
+
["й", "y"],
|
| 581 |
+
["к", "k"],
|
| 582 |
+
["л", "l"],
|
| 583 |
+
["м", "m"],
|
| 584 |
+
["н", "n"],
|
| 585 |
+
["п", "p"],
|
| 586 |
+
["р", "r"],
|
| 587 |
+
["с", "s"],
|
| 588 |
+
["т", "t"],
|
| 589 |
+
["ф", "f"],
|
| 590 |
+
["х", "h"],
|
| 591 |
+
["ц", "ts"],
|
| 592 |
+
["ч", "ç"],
|
| 593 |
+
["ш", "ş"],
|
| 594 |
+
["щ", "şç"],
|
| 595 |
+
["ы", "ı"],
|
| 596 |
+
["э", "e"],
|
| 597 |
+
]
|
crh_transliterator/transliterator.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from .cyr_to_lat import mappings
|
| 2 |
+
import re
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
def transliterate(text: str):
|
| 6 |
+
text = text.lower() # always treat lowercase
|
| 7 |
+
text = " " + text + " "
|
| 8 |
+
|
| 9 |
+
for mapping in mappings:
|
| 10 |
+
text = re.sub(mapping[0], mapping[1], text)
|
| 11 |
+
|
| 12 |
+
return text[1:-1]
|
pytest.ini
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
# pytest.ini
|
| 2 |
[pytest]
|
| 3 |
-
addopts = --cov --cov-report html --cov-report xml --cov-report term --cov-branch
|
|
|
|
| 1 |
# pytest.ini
|
| 2 |
[pytest]
|
| 3 |
+
addopts = --cov --cov-report html --cov-report xml --cov-report term --cov-branch
|
tests/test_converter.py
CHANGED
|
@@ -1,20 +1,31 @@
|
|
| 1 |
import converter
|
|
|
|
| 2 |
from tabulate import tabulate
|
| 3 |
|
| 4 |
|
| 5 |
-
def
|
| 6 |
cases = _read_test_cases()
|
|
|
|
| 7 |
for case in cases:
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
|
| 11 |
-
def
|
| 12 |
cases = _read_test_cases()
|
| 13 |
failed = []
|
| 14 |
for case in cases:
|
| 15 |
-
if
|
| 16 |
failed.append(
|
| 17 |
-
(case[1].lower(),
|
| 18 |
)
|
| 19 |
if len(failed) > 0:
|
| 20 |
failed_rows = "\n".join([str(item) for item in failed])
|
|
|
|
| 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 = []
|
| 25 |
for case in cases:
|
| 26 |
+
if transliterate(case[1]).lower() != case[0].lower():
|
| 27 |
failed.append(
|
| 28 |
+
(case[1].lower(), transliterate(case[1]).lower(), case[0].lower())
|
| 29 |
)
|
| 30 |
if len(failed) > 0:
|
| 31 |
failed_rows = "\n".join([str(item) for item in failed])
|