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])
|