Coverage for src/wiktextract/extractor/ku/tags.py: 88%
31 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-04 10:58 +0000
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-04 10:58 +0000
1from .models import WordEntry
3GENDER_NUMBER_TAGS = {
4 # https://ku.wiktionary.org/wiki/Modul:gender_and_number
5 "m": "feminine",
6 "n": "masculine",
7 "nt": "neuter",
8 "g": "common-gender",
9 "anim": "animate",
10 "inan": "inanimate",
11 "animal": "animal-not-person",
12 "pers": "personal",
13 "npers": "impersonal",
14 "vir": "virile",
15 "nvir": "nonvirile",
16 "yj": "singular",
17 "du": "dual",
18 "pj": "plural",
19 "impf": "imperfective",
20 "pf": "perfective",
21 "gh": "transitive",
22 "ngh": "intransitive",
23}
25TABLE_TAGS = {
26 # Şablon:ku-tewîn-nav
27 "Yekjimar": "singular",
28 "Pirjimar": "plural",
29 "Navkî": "nominative",
30 "Îzafe": "construct",
31 "Çemandî": "oblique",
32 "Nîşandera çemandî": ["demonstrative", "oblique"],
33 "Bangkirin": "vocative",
34 "Bangkirî": "vocative",
35 "Binavkirî": "definite",
36 "Nebinavkirî": "indefinite",
37 "Mê (yj.)": ["feminine", "singular"],
38 "Nêr (yj.)": ["masculine", "singular"],
39 "Mê û nêr (pj.)": ["feminine", "masculine", "plural"],
40 # Şablon:ku-tew-nav
41 "Mê": "feminine",
42 "Nêr": "masculine",
43 # Şablon:ku-tewîn-rd
44 "Pozîtîv": "positive",
45 "Komparatîv": "comparative",
46 "Sûperlatîv": "superlative",
47 # Şablon:ku-tewîn-lk
48 "RP.\nNiha": "present",
49 "Fermanî": "imperative",
50 "RP.\nBoriya\nsade": "past",
51 # Şablon:ku-tewandin
52 "Dema niha": "present",
53 "Dema borî": "past",
54 "Reh": "root",
55 "Raweya pêşkerî (daxuyanî) - Indicative": "indicative",
56 "Dema niha - Present": "present",
57 "Raboriya sade - Preterite\nDema boriya têdeyî": "past",
58 "Erênî": "positive",
59 "Neyînî": "negative",
60 "Raboriya berdest - Imperfect\nÇîrokiya dema niha": "imperfect",
61 "Raboriya dûr - Pluperfect\nÇirokiye boriya têdeyî": "pluperfect",
62 "Dema bê - Future": "future",
63 "Dahatiya pêş - Future perfect": ["future", "perfect"],
64 "Raboriya dûdar - Perfect\nDema boriya dûdar": "perfect",
65 "Çîrokiya boriya dûdar - Nonconfirmative pluperfect": [
66 "nonconfirmative",
67 "pluperfect",
68 ],
69 # "Raweya xwestekî (bilanî, daxwazî) - Subjunctive": "subjunctive",
70 "Dema nihaya xwestekî - Present subjunctive\nNihaya bilaniyê": [
71 "present",
72 "subjunctive",
73 ],
74 "Dema boriya xwestekî - Preterite subjunctive": [
75 "preterite",
76 "subjunctive",
77 ],
78 "Raboriya bilaniyê - Imperfect subjunctive": ["imperfect", "subjunctive"],
79 "Raboriya dûr a bilaniyê - Pluperfect subjunctive": [
80 "pluperfect",
81 "subjunctive",
82 ],
83 "Çîrokiya dema nihaya mercî - Present conditional": [
84 "present",
85 "conditional",
86 ],
87 "Dema boriya mercî - Preterite conditional": ["preterite", "conditional"],
88 "Raweya fermanî - Imperative": "imperative",
89 "Standard": "standard",
90}
92GLOSS_TAGS = {
93 # Modul:ferhengok
94 # Modul:ferhengok/dane
95 "berfirehkirî": "broadly",
96 # Modul:dara_kategoriyan/ferhengokkatbike/dane/ferhengok
97 "dewleta Ewropayê": "Europe",
98 "dewleta Asyayê": "Asia",
99 "dewleta Afrîkayê": "Africa",
100 "dewleta Amerîkaya Başûr": "South-America",
101 "devokî": "dialectal",
102 "formên kevnbûyî": "archaic",
103 "hevdeng": "homophone",
104 "japonî": "Japanese",
105 "metonîm": "metonymically",
106 "mîtolojiya ermenî": "Armenian",
107 "mîtolojiya îranî": "Iranian",
108 "mîtolojiya kurdî": "Kurdish",
109 "mîtolojiya misrî": "Egyptian",
110 "mîtolojiya yûnanî": "Greek",
111 "nifir": "vulgar",
112 "neolojîzm": "neologism",
113 "niqteşanî": "punctuation",
114 "na": "name",
115 # Modul:dara kategoriyan/ferhengokkatbike/dane/rêzimanî
116 "zimanê zarokan": "childish",
117 "şaşnivîsî": "misspelling",
118 "latînîkirin": "romanization",
119 "palîndrom": "palindrome",
120 "paşnav": "surname",
121 "navê keçan": "name",
122 "navê kesan": "name",
123 "navê lawan": "name",
124 # "rêziman": "lemmas",
125 "dengê siriştî": "onomatopoeic",
126 "argo": "slang",
127 "argoya fandomê": "slang",
128 # "jinkanî": "women's-speech",
129 "artîkel": "article",
130 "akronîm": "acronym",
131 "baneşan": "interjection",
132 # "bazinedaçek": "circumposition",
133 "biwêjî": "idiomatic",
134 "cînav": "pronoun",
135 # "cotepeyv": "",
136 "daçek": "prepositional",
137 "girêdek": "conjunction",
138 "gotinên pêşiyan": "proverb",
139 "hejmar": "numeral",
140 "hevok": "phrase",
141 "hoker": "adverb",
142 "neqiyasbar": "not-comparable",
143 "kurtenav": "abbreviation",
144 "kurtkirin": "contraction",
145 "lêker": "verb",
146 "Lêker": "verb",
147 "navdêr": "noun",
148 "Navdêr": "noun",
149 "jimarbar": ["countable", "noun"],
150 "nejimarbar": ["uncountable", "noun"],
151 "navgir": "interfix",
152 "paşdaçek": "postpositional",
153 "paşgir": "suffix",
154 "pêşdaçek": "prepositional",
155 "pêşgir": "prefix",
156 "pirtik": "particle",
157 "reh": "root",
158 "rengdêr": "adjective",
159 "Rengdêr": "adjective",
160 "sembol": "symbol",
161 "serenav": "proper-noun",
162 "tîp": "letter",
163 "tewandin": "conjugative",
164 "rehê lêkeran": ["verb", "root"],
165 "rehê dema niha": ["present", "root"],
166 "rehê dema borî": ["past", "root"],
167 "partîsîp": "participle",
168 "partîsîpa niha": ["present", "participle"],
169 "partîsîpa borî": ["past", "participle"],
170 "komparatîv": "comparative",
171 "sûperlatîv": "superlative",
172 "xweşbêjî": "euphemistic",
173 "formên serenavan": ["proper-noun", "form-of"],
174 "formên navdêran": ["noun", "form-of"],
175 "formên cînavan": ["pronoun", "form-of"],
176 "formên hokeran": ["adverb", "form-of"],
177 "formên rengdêran": ["adjective", "form-of"],
178 "formên lêkeran": ["verb", "form-of"],
179 "awarte": ["irregular", "verb"],
180 "gerguhêz": ["transitive", "verb"],
181 "negerguhêz": ["intransitive", "verb"],
182 "lêkerên biwêjî": ["phrasal", "verb"],
183 "lêkerên biwêjî yên gerguhêz": ["transitive", "phrasal", "verb"],
184 "lêkerên biwêjî yên negerguhêz": ["intransitive", "phrasal", "verb"],
185 "lêkerên hevedudanî": ["compound", "verb"],
186 "lêkerên hevedudanî yên gerguhêz": ["compound", "verb", "transitive"],
187 "lêkerên hevedudanî yên negerguhêz": ["compound", "verb", "intransitive"],
188 "lêkerên pêkhatî": ["compound", "verb"],
189 "lêkerên pêkhatî yên gerguhêz": ["compound", "verb", "transitive"],
190 "lêkerên pêkhatî yên negerguhêz": ["compound", "verb", "intransitive"],
191 # "lêkerên xwerû": "proper-noun",
192 "lêkerên xwerû yên gerguhêz": ["verb", "transitive"],
193 "lêkerên xwerû yên negerguhêz": ["verb", "intransitive"],
194 "serenavên mê": ["feminine", "proper-noun"],
195 "rengdêrên mê": ["feminine", "adjective"],
196 "navdêrên mê": ["feminine", "noun"],
197 "cînavên mê": ["feminine", "pronoun"],
198 "serenavên nêr": ["masculine", "proper-noun"],
199 "rengdêrên nêr": ["masculine", "adjective"],
200 "navdêrên nêr": ["masculine", "noun"],
201 "cînavên nêr": ["masculine", "pronoun"],
202 "serenavên nêtar": ["neuter", "proper-noun"],
203 "rengdêrên nêtar": ["neuter", "adjective"],
204 "navdêrên nêtar": ["neuter", "noun"],
205 "cînavên nêtar": ["neuter", "pronoun"],
206 "serenavên mê û nêr": ["feminine", "masculine", "proper-noun"],
207 "navdêrên mê û nêr": ["feminine", "masculine", "noun"],
208 "rengdêrên mê û nêr": ["feminine", "masculine", "adjective"],
209 "cînavên mê û nêr": ["feminine", "masculine", "pronoun"],
210 "serenavên giştî": ["general", "proper-noun"],
211 "rengdêrên giştî": ["general", "adjective"],
212 "navdêrên giştî": ["general", "noun"],
213 "cînavên giştî": ["general", "pronoun"],
214 "serenavên ku bi gelemperî mê ne": ["feminine", "proper-noun"],
215 "rengdêrên ku bi gelemperî mê ne": ["feminine", "adjective"],
216 "navdêrên ku bi gelemperî mê ne": ["feminine", "noun"],
217 "cînavên ku bi gelemperî mê ne": ["feminine", "pronoun"],
218 "serenavên ku bi gelemperî nêr in": ["masculine", "proper-noun"],
219 "rengdêrên ku bi gelemperî nêr ne": ["masculine", "adjective"],
220 "navdêrên ku bi gelemperî nêr ne": ["masculine", "noun"],
221 "cînavên ku bi gelemperî nêr ne": ["masculine", "pronoun"],
222 "serenavên ku bi gelemperî pirjimar in": ["plural", "proper-noun"],
223 "rengdêrên ku bi gelemperî pirjimar ne": ["plural", "adjective"],
224 "navdêrên ku bi gelemperî pirjimar ne": ["plural", "noun"],
225 "cînavên ku bi gelemperî pirjimar ne": ["plural", "pronoun"],
226 # Modul:dara_kategoriyan/ferhengokkatbike/dane/mane
227 # "biçûkxister": "",
228 "fermî": "formal",
229 # "henekî": "",
230 # "kêmtir": "",
231 "kevnare": "archaic",
232 "kêmpeyda": "rare",
233 "kevnbûyî": "obsolete",
234 "kolankî": "colloquial",
235 "mecazî": "figurative",
236 "nadir": "rare",
237 "nefermî": "informal",
238 # "qebe": "",
239 "wêjeyî": "literary",
240 # "xirab": "bad",
241 "kurdî-erebî": "Kurdish-Arabic",
242 "kurdî-krîlî": "Kurdish-Cyrillic",
243}
245SOUND_TAGS = {
246 "DYA": "USA",
247 "Teksas": "Texas",
248 "Berlîn": "Berlin",
249 "Almanya": "Germany",
250 "Connecticut": "Connecticut",
251 "QY": "UK",
252 "Başûrê Îngilistanê": "Southern-England",
253 "Bidlîs": "Bitlis",
254 "London": "London",
255 "Awistirya": "Austria",
256 "Îzmîr": "İzmir",
257 "Tirkiye": "Turkey",
258 "Awistralya": "Australia",
259 "Lyon": "Lyon",
260 "Fransa": "France",
261 "Îran": "Iran",
262 "Îtalya": "Italy",
263 "Çîn": "China",
264}
266TAGS = {**GENDER_NUMBER_TAGS, **TABLE_TAGS, **GLOSS_TAGS, **SOUND_TAGS}
268TOPICS = {
269 # Modul:dara_kategoriyan/ferhengokkatbike/dane/ferhengok
270 "ajal": "livestock",
271 "aman": "kitchenware",
272 "amûr": "tools",
273 "anatomî": "anatomy",
274 "antropolojî": "anthropology",
275 "astrolojî": "astrology",
276 "avjenî": ["swimming", "sports"],
277 "astronomî": "astronomy",
278 # "avahî û pêkhate": "Buildings and structures",
279 # "avahî": "buildings",
280 # "alavên malê": "home appliances",
281 # "atmosfer": "atmosphere",
282 "alava muzîkê": "music",
283 "astronotîk": "astronautics",
284 # "ba": "wind",
285 "berhemên behrê": ["seafood", "cuisine"],
286 "bajar": "cities",
287 "balinde": "birds",
288 "basketbol": ["basketball", "ball-games"],
289 "bijîşkî": "medicine",
290 "biyolojî": "biology",
291 "boks": ["boxing", "martial-arts"],
292 "buxik": ["insects", "entomology"],
293 "behr": "seas",
294 "berf": "snow",
295 "bazarkarî": "marketing",
296 "Cihûtî": "Judaism",
297 "cilûberg": "clothing",
298 "civak": "society",
299 "cih": "places",
300 "çand": "culture",
301 "çandinî": "agriculture",
302 "çek": "weaponry",
303 "çiya": "mountains",
304 "devkî": "oral",
305 "dewleta Ewropayê": "countries",
306 "dewleta Asyayê": "countries",
307 "dewleta Afrîkayê": "countries",
308 "dar": "trees",
309 "dîn": "religion",
310 "dîrok": "history",
311 "dewlet": "countries",
312 "dehsal": "decades",
313 "dewleta Amerîkaya Başûr": "countries",
314 "deryagerî": "nautical",
315 "demsal": "seasons",
316 "ekonomî": "economics",
317 # "evîn": "love",
318 # "element": "chemical elements",
319 "erdnîgarî": "geography",
320 # "emir": "age",
321 "elektrîk": "electricity",
322 "fêkî": "fruits",
323 "felsefe": "philosophy",
324 "femînîzm": "feminism",
325 "fizîk": "physics",
326 "futbol": "football",
327 "fîzyolojî": "physiology",
328 "guhandar": "mammals",
329 # "gund": "villages",
330 # "hest": "emotions",
331 # "hiş": "mind",
332 # "hemû mijar": "list of topics",
333 "herêm": "region",
334 "hewa": "weather",
335 "hiqûq": "law",
336 "hewavanî": "aviation",
337 "heywan": "animals",
338 "Hinduîzm": ["hinduism", "religion"],
339 "huner": "arts",
340 "informatîk": "information-technology",
341 "înternet": "Internet",
342 "Îslam": ["Islam", "religion"],
343 "îdeolojî": "ideology",
344 # "jîndar": "lifeforms",
345 "jeolojî": "geology",
346 # "kar": "work",
347 "karsazî": "business",
348 "kîmya": "chemistry",
349 "kişik": ["chess", "board-games"],
350 "kompûternasî": "computing",
351 # "kulîlk": "flowers",
352 # "kes": "people",
353 # "lîsteya ferhengan": "All topics",
354 "leşkerî": "military",
355 "lîstik": "games",
356 "lîstikên vîdeoyî": "video-games",
357 "lîstika zarokan": "children's-games",
358 "leş": ["body", "anatomy"],
359 "mitfax": "kitchen",
360 # "mînak": "example",
361 # "mal": "home",
362 # "malbat": "family",
363 "masî": ["fish", "zoology"],
364 "matematîk": "mathematics",
365 # "mehên salê": "months",
366 "mekanîk": "mechanics",
367 "Mesîhî": "Christianity",
368 # "meslek": "occupations",
369 "metrolojî": "metrology",
370 "mîtolojî": "mythology",
371 "mîtolojiya ermenî": "mythology",
372 "mîtolojiya îranî": "mythology",
373 "mîtolojiya kurdî": "mythology",
374 "mîtolojiya misrî": "mythology",
375 "mîtolojiya yûnanî": "mythology",
376 "mobîlya": "furniture",
377 "mode": "fashion",
378 "muzîk": "music",
379 # "omirov": "human",
380 "makîne": "machining",
381 "mîmarî": "architecture",
382 # "malper": "websites",
383 # "mirin": "death",
384 "muzîsyen": "music",
385 # "nifş": "generations",
386 "navçe": "districts",
387 "Navçe": "districts",
388 "navgîn": "vehicles",
389 "nivîsîn": "writing",
390 "nexweşî": "pathology",
391 "neqliyat": "transport",
392 # "ode": "rooms",
393 "optîk": "optics",
394 # "octanes": "oceans",
395 "otomotîv": "automotive",
396 "parzemîn": "continents",
397 "parêzgeh": "provinces",
398 "perwerde": "education",
399 "psîkolojî": "psychology",
400 "psîkyatrî": "psychiatry",
401 "por": "hairdressing",
402 # "Pêxemberên Îslamê": "islamic prophets",
403 # "pûrizm": "",
404 "rêzimanî": "grammar",
405 "remldarî": "divination",
406 "reng": "color",
407 "riwek": "botany",
408 "riweknasî": "botany",
409 "robar": "rivers",
410 "Robar": "rivers",
411 "sosyolojî": "sociology",
412 "salnameya koçî": "Islamic months",
413 "sebze": "vegetable",
414 "siyaset": "politics",
415 "spor": "sports",
416 # "sal": "years",
417 "sûc": "crime",
418 "sîstemên nivîsînê": "writing",
419 "Şahname": "shahnameh",
420 "şîranî": "desserts",
421 "teknolojî": "technology",
422 "tenîs": ["tennis", "sports"],
423 "teolojî": "theology",
424 "tilyak": "drugs",
425 # "termên teqwîmê": "calendar terms",
426 "toksîkolojî": "toxicology",
427 "televizyon": "television",
428 "vexwarin": "beverages",
429 "wêje": "literature",
430 "wênegirî": "photography",
431 # "www": "",
432 "xweza": "nature",
433 "xwarin û vexwarin": ["food", "beverages"],
434 "xişok": "reptiles",
435 "xwarin": "food",
436 "zanist": "sciences",
437 "zeman": "time",
438 "Zerdeştî": ["Zoroastrianism", "religion"],
439 "ziman": "language",
440 "zimannasî": "linguistics",
441 "zoolojî": "zoology",
442 "zanistên sepandî": "applied-sciences",
443 "Herêm": "region",
444}
447PRONOUN_TAGS = {
448 # Template:ku-tewîn-lk
449 # https://en.wikipedia.org/wiki/Kurdish_grammar
450 "ez": ["first-person", "singular"],
451 "tu": ["second-person", "singular"],
452 "ew": ["third-person", "singular"],
453 "em, hûn, ew": ["first-person", "second-person", "third-person", "plural"],
454 "min": ["first-person", "singular"],
455 "te": ["second-person", "singular"],
456 "wê/wî": ["third-person", "singular"],
457 "me, we, wan": ["first-person", "second-person", "third-person", "plural"],
458}
461def translate_raw_tags(data: WordEntry) -> None:
462 raw_tags = []
463 for raw_tag in data.raw_tags:
464 has_tag = False
465 for index, tag_dict in enumerate([TAGS, PRONOUN_TAGS]):
466 if raw_tag in tag_dict and hasattr(data, "tags"):
467 tr_tag = tag_dict[raw_tag]
468 if isinstance(tr_tag, str):
469 data.tags.append(tr_tag)
470 elif isinstance(tr_tag, list): 470 ↛ 472line 470 didn't jump to line 472 because the condition on line 470 was always true
471 data.tags.extend(tr_tag)
472 if index == 0:
473 has_tag = True
474 if raw_tag in TOPICS and hasattr(data, "topics"):
475 topic = TOPICS[raw_tag]
476 if isinstance(topic, str): 476 ↛ 478line 476 didn't jump to line 478 because the condition on line 476 was always true
477 data.topics.append(topic)
478 elif isinstance(topic, list):
479 data.topics.extend(topic)
480 has_tag = True
481 if not has_tag:
482 raw_tags.append(raw_tag)
483 data.raw_tags = raw_tags