Coverage for src/wiktextract/extractor/tr/tags.py: 75%
29 statements
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-15 05:18 +0000
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-15 05:18 +0000
1from .models import BaseModel
3# Modül:temalar/veri/söz_biçim
4GLOSS_TAGS = {
5 "mecaz": "metaphoric", # "Şablon:mecaz"
6 "bazen": "sometimes",
7 "özellikle": "especially",
8 "ender": "rare",
9 "kısa": "short-form",
10 "Almanya": "Germany",
11 "Amerika Birleşik Devletleri": "US",
12 "Asya": "Asia",
13 "Avrupa": "Europe",
14 "Avrupa Birliği": "European-Union",
15 "Avustralya": "Australia",
16 "Avusturya": "Austria",
17 "Fransa": "France",
18 "Hindistan": "India",
19 "Hinduizm": "Hinduism",
20 "Irak": "Iraq",
21 "İngiltere": "England",
22 "İrlanda": "Ireland",
23 "İsviçre": "Switzerland",
24 "Kanada": "Canada",
25 "retorik": "rhetoric",
26 "Türkiye": "Turkey",
27 "Yeni Zelanda": "New Zealand",
28 "halk ağzı": "dialectal",
29 "argo": "slang",
30 "artık kullanılmayan sözcükler": "obsolete",
31 "aşağılayıcı ifadeler": "pejorative",
32 "çocuk dili": "childish",
33 "eskimekte": "obsolete",
34 "eskimiş": "obsolete",
35 "günlük konuşma dili": "vernacular",
36 "hakaret yollu sözcükler": "offensive",
37 "internet jargonu": ["Internet", "jargon"],
38 "kaba konuşma": "vulgar",
39 "kısa biçimler": "short-form",
40 "konuşma dili ifadeleri": "vernacular",
41 "mecazlar": "metaphoric",
42 "örtmeceler": "euphemistic",
43 "resmî dil": "official-language",
44 "şaka yollu sözcükler": "humorous",
45 "şiirsel terimler": "poetic",
46 "teklifsiz konuşma": "informal",
47 "kökler": "root",
48 # Modül:temalar/veri/söz türü
49 "adlar": "noun",
50 "adıllar": "pronoun",
51 "akronimler": "acronym",
52 "atasözleri": "proverb",
53 "bağlaçlar": "conjunction",
54 "belirli adlar": ["definite", "name"],
55 "belirsiz adlar": ["indefinite", "name"],
56 "belirteçler": "adverb",
57 "belgisiz adıllar": ["indefinite", "pronoun"],
58 "çekimli adlar": ["declinable", "noun"],
59 "çekimli adıllar": ["declinable", "pronoun"],
60 "çekimli eylemler": ["declinable", "pronoun"],
61 "çekimli kısaltmalar": ["declinable", "abbreviation"],
62 "çekimli ortaçlar": ["declinable", "participle"],
63 "çekimli ön adlar": ["declinable", "adjective"],
64 "çekimli özel adlar": ["declinable", "name"],
65 "çekimli sayı adları": ["declinable", "numeral"],
66 "çekimli son ekler": ["declinable", "suffix"],
67 "çoğul ad formları": ["plural", "noun"],
68 "deyimler": "idiomatic",
69 "dişil adlar": ["feminine", "noun"],
70 "dişil çekimli adlar": ["feminine", "declinable", "noun"],
71 "edatlar": "prepositional",
72 "erkek adları": ["masculine", "name"],
73 "eylemler": "verb",
74 "geçişli eylemler": ["transitive", "verb"],
75 "geçişsiz eylemler": ["intransitive", "verb"],
76 "dönüşlü eylemler": ["reflexive", "verb"],
77 "işteş eylemler": ["reciprocal", "verb"],
78 "geçişli": "transitive",
79 "geçişsiz": "intransitive",
80 "dönüşlü": "reflexive",
81 "işteş": "reciprocal",
82 "düzensiz eylemler": ["irregular", "verb"],
83 "harfler": "letter",
84 "kişi adılları": ["personal", "pronoun"],
85 "sayı adları": ["numeral", "name"],
86 "sayılabilen adlar": ["countable", "noun"],
87 "sayılamayan adlar": ["uncountable", "noun"],
88 "sıral sayılar": ["ordinal", "numeral"],
89}
91POS_HEADER_TAGS = {
92 # Şablon:tr-ad
93 "belirtme hâli": "accusative",
94 "çoğulu": "plural",
95 # Şablon:en-ad
96 "üçüncü tekil kişi geniş zaman": ["third-person", "singular", "present"],
97 "şimdiki zaman": "present",
98 "geçmiş zaman ve yakın geçmiş zaman": "past",
99 "sayılabilen ve sayılamayan": ["countable", "uncountable"],
100 "sayılabilen": "countable",
101 "sayılamayan": "uncountable",
102 # Şablon:de-ad
103 "tamlayan hâli": "genitive",
104 "dişil": "feminine",
105 "d": "feminine",
106 "e": "masculine",
107 "eril": "masculine",
108 "sahiplik şekli": "possessive", # Şablon:sahiplik
109 # Şablon:tr-eylem
110 "üçüncü tekil şahıs geniş zaman çekimi": [
111 "third-person",
112 "singular",
113 "present",
114 ],
115 # Şablon:tr-ön ad
116 "karşılaştırma": "comparative",
117 "üstünlük": "superlative",
118}
120TRANSLATION_TAGS = {
121 # Modül:cinsiyet_ve_numara
122 "n": "neutral",
123 "g": "general",
124 "anim": "animate",
125 "cansız": "inanimate",
126 "pers": "personal",
127 "npers": "impersonal",
128 "te": "singular",
129 "ik": "dual",
130 "ç": "plural",
131 "impf": "imperfective",
132 "pf": "perfective",
133}
135LINKAGE_TAGS = {
136 "eskimiş": "obsolete",
137}
139TABLE_TAGS = {
140 # Şablon:tr-ad-tablo
141 "tekil": "singular",
142 "çoğul": "plural",
143 "yalın": "nominative",
144 "belirtme": "accusative",
145 "yönelme": "dative",
146 "bulunma": "locative",
147 "ayrılma": "ablative",
148 "tamlayan": "genitive",
149 "iyelik": "possessive",
150 "1. tekil": ["first-person", "singular"],
151 "2. tekil": ["second-person", "singular"],
152 "3. tekil": ["third-person", "singular"],
153 "1. çoğul": ["first-person", "plural"],
154 "2. çoğul": ["second-person", "plural"],
155 "3. çoğul": ["third-person", "plural"],
156 # Şablon:tr-eylem-tablo
157 "olumlu çekimler": "positive",
158 "belirli geçmiş": ["definite", "past"],
159 "belirsiz geçmiş": ["indefinite", "past"],
160 "şimdiki": "present",
161 "gelecek": "future",
162 # "basit": "simple",
163 # "hikaye": "",
164 # "rivayet": "",
165 "şart": "conditional",
166 "gereklilik": "necessitative",
167 "olumsuz çekimler": "negative",
168}
171TAGS = {
172 **GLOSS_TAGS,
173 **POS_HEADER_TAGS,
174 **TRANSLATION_TAGS,
175 **LINKAGE_TAGS,
176 **TABLE_TAGS,
177}
179# https://tr.wiktionary.org/wiki/Modül:temalar/veri/konu
180# https://tr.wiktionary.org/wiki/Modül:temalar/veri/grup
181TOPICS = {
182 "anatomi": "anatomy",
183 "diller": "language",
184 "akışkanlar mekaniği": "fluid-dynamics",
185 "antropoloji": "anthropology",
186 "arıcılık": "beekeeping",
187 "aritmetik": "arithmetic",
188 "arkeoloji": "archaeology",
189 "askeriye": "military",
190 "astroloji": "astrology",
191 "aşçılık": "cooking",
192 "avcılık": "hunting",
193 "bakteriyoloji": "bacteriology",
194 "bale": "ballet",
195 "balıkçılık": "fishing",
196 "bankacılık": "banking",
197 "basketbol": "basketball",
198 "basın-yayın": "publishing",
199 "bilardo": "billiards",
200 "bilgisayar bilimi": ["computer", "science"],
201 "bilgisayar dili": "computer-languages",
202 "bilim": "science",
203 "bilişim": "informatics",
204 "binalar": "building",
205 "binicilik": "equestrianism",
206 "Birleşik Krallık": "UK",
207 "bitki anatomisi": "botany",
208 "bitki bilimi": "botany",
209 # "bitki hastalıkları": "",
210 "biyokimya": "biochemistry",
211 "biyoloji": "biology",
212 "biyoteknoloji": "biotechnology",
213 "boks": "boxing",
214 "böcek bilimi": "entomology",
215 "Budizm": "Buddhism",
216 "budun bilimi": "ethnology",
217 "cerrahi": "surgery",
218 "ceza hukuku": "law",
219 "cinsellik": "sexuality",
220 "cinsellik bilimi": "sexology",
221 "cinsiyet": "sexuality",
222 "coğrafya": "geography",
223 "dans": "dancing",
224 "demiryolu ulaşımı": ["railways", "transport"],
225 "dermatoloji": "dermatology",
226 "dil bilgisi": "grammar",
227 "dil bilimi": "linguistics",
228 "din": "religion",
229 "diplomasi": "diplomacy",
230 "diş hekimliği": "dentistry",
231 "doğa bilimi": "natural-sciences",
232 "dokuma": "weaving",
233 "drama": "drama",
234 "eczacılık": "pharmacology",
235 "edebiyat": "literature",
236 "eğitim": "education",
237 "eğlence": "entertainment",
238 "ekonomi": "economics",
239 "elektrik": "electricity",
240 "elektrik mühendisliği": "electrical-engineering",
241 "elektromanyetizm": "electromagnetism",
242 "elektronik": "electronics",
243 "enerji": "energy",
244 "epistemoloji": "epistemology",
245 "eşey": "sex",
246 "etik": "ethics",
247 "evlilik": "marriage",
248 "evrim": "evolution",
249 "fahişelik": "prostitution",
250 "farmakoloji": "pharmacology",
251 "felsefe": "philosophy",
252 "filateli": "philately",
253 "finans": "finance",
254 "fitopatoloji": "phytopathology",
255 "fizik": "physics",
256 "fizyoloji": "physiology",
257 "fotoğrafçılık": "photography",
258 "futbol": "football",
259 "genetik": "genetics",
260 "geometri": "geometry",
261 "gezegen bilimi": ["planets", "science"],
262 "giyim": "clothing",
263 "gök bilimi": "astronomy",
264 "hapishane": "prison",
265 "haritacılık": "cartography",
266 "hastalık": "illness",
267 "hava": "weather",
268 "hava taşıtı": "aircraft",
269 "havacılık": "aviation",
270 "havacılık ve uzay mühendisliği": ["aviation", "aerospace", "engineering"],
271 "hayvan bilimi": "zoology",
272 "hayvancılık": "husbandry",
273 "hematoloji": "hematology",
274 "hidroloji": "hydrology",
275 "hijyen": "hygiene",
276 "Hristiyanlık": "Christianity",
277 "hobiler": "hobbies",
278 "hukuk": "law",
279 "hükûmet": "government",
280 "İbrahimî dinler": "Abrahamic-religions",
281 "iç giyim": "underwear",
282 "idam": "execution",
283 "ideolojiler": "ideology",
284 "iklim bilimi": "climatology",
285 "iletişim": "communications",
286 "imalat": "manufacturing",
287 "immünoloji": "immunology",
288 "internet": "Internet",
289 # "intihar": "suicide",
290 "iskambil": "card-games",
291 "iskân": "inhabiting",
292 "İslam": "Islam",
293 "İslâm": "Islam",
294 "istatistik": "statistics",
295 "işletme": "business",
296 "işletmeler": "business",
297 "itfaiyecilik": "firefighting",
298 "jeofizik": "geophysics",
299 "jeoloji": "geology",
300 "jinekoloji": "gynecology",
301 # "kadın": "woman",
302 # "kâğıt": "paper",
303 "kara ulaşımı": ["road", "transport"],
304 "kardiyoloji": "cardiology",
305 "Katoliklik": "Catholicism",
306 "kırtasiye": "stationery",
307 "kimya": "chemistry",
308 "kişilik": "personality",
309 # "kitap": "book",
310 "Kitab-ı Mukaddes": "biblical",
311 "konstrüksiyon": "construction",
312 "kozmetik": "cosmetics",
313 "kriket": "cricket",
314 "kriminoloji": "criminology",
315 "kriptografi": "cryptography",
316 "kristalografi": "crystallography",
317 "kuantum mekaniği": "quantum-mechanics",
318 "kumaş": "fabrics",
319 "kuş bilimi": "ornithology",
320 "kültür": "culture",
321 "LGBT": "LGBT",
322 "madencilik": "mining",
323 "marangozluk": "carpentry",
324 "masa oyunu": "board-games",
325 "matbaacılık": "printing",
326 "makine mühendisliği": "mechanical-engineering",
327 "malzeme bilimi": "material-science",
328 "malzemeler": "materials",
329 "mandıracılık": "dairy",
330 "mantık": "logic",
331 "manyetizma": "magnetism",
332 "matematik": "mathematics",
333 "matematiksel analiz": "mathematical-analysis",
334 "medya": "media",
335 "mekanik": "mechanics",
336 "metalurji": "metallurgy",
337 "meteoroloji": "meteorology",
338 "metroloji": "metrology",
339 "mikoloji": "mycology",
340 "mikrobiyoloji": "microbiology",
341 "mimarlık": "architecture",
342 "mineraloji": "mineralogy",
343 "mitoloji": "mythology",
344 "mobilya": "furniture",
345 "moda": "fashion",
346 "moleküler biyoloji": "molecular-biology",
347 "monarşi": "monarchy",
348 "mühendislik": "engineering",
349 "müzik": "music",
350 "müzisyenler": "musician",
351 "nörobilim": "neuroscience",
352 "nöroloji": "neurology",
353 "nümismatik": "numismatics",
354 "okçuluk": "archery",
355 "Okültizm": "occult",
356 "okyanus bilimi": "oceanography",
357 "olasılık": "probability",
358 "olasılık kuramı": "probability-theory",
359 "onkoloji": "oncology",
360 "opera": "opera",
361 "optik": "optics",
362 "organik kimya": "organic-chemistry",
363 "Ortodoksluk": "Orthodoxy",
364 "ormancılık": "forestry",
365 "ortografi": "orthography",
366 "otomotiv": "automobile-industry",
367 "oyun": "games",
368 "ölçü birimleri": "units-of-measure",
369 # "ölüm": "death",
370 "Paganizm": "paganism",
371 "paleontoloji": "paleontology",
372 "para": "money",
373 "parapsikoloji": "parapsychology",
374 "patoloji": "pathology",
375 "pazarlama": "marketing",
376 "petroloji": "petrology",
377 "polis": "police",
378 "politika": "politics",
379 "posta": "mail",
380 "programlama": "programming",
381 "Protestanlık": "Protestantism",
382 "psikiyatri": "psychiatry",
383 "radyo": "radio",
384 "radyo ve televizyon yayıncılığı": ["radio", "television", "broadcasting"],
385 "reklamcılık": "advertising",
386 # "resim": "painting",
387 # "restoranlar": "restaurant",
388 "robotik": "robotics",
389 "ruh bilimi": "psychology",
390 "sağlık": "health",
391 "sanat": "arts",
392 # "sandalyeler": "chairs",
393 "satranç": "chess",
394 "sayılar teorisi": "number-theory",
395 "seramik": "ceramics",
396 # "ses": "voice",
397 "ses bilgisi": "phonetics",
398 "ses bilimi": "phonology",
399 # "sinema": "cinema",
400 "sismoloji": "seismology",
401 "sitoloji": "cytology",
402 "sosyal bilimler": "sociology",
403 "sözdebilim": "pseudoscience",
404 "spor": "sports",
405 # "suç": "crime",
406 # "suç önleme": "crime-prevention",
407 "Sünnilik": "Sunnism",
408 "Şamanizm": "shamanism",
409 "Şiilik": "Shi'ism",
410 "şiir sanatı": "poetry",
411 "taksonomi": "taxonomy",
412 "takvim": "calendar",
413 "tarım": "agriculture",
414 "tarih": "history",
415 "teknoloji": "technology",
416 "tekstil": "fabrics",
417 "telefonculuk": "telephony",
418 "telekomünikasyon": "telecommunications",
419 "televizyon": "television",
420 "termodinamik": "thermodynamics",
421 "tıp": "medicine",
422 "ticaret": "commerce",
423 "tiyatro": "theater",
424 "toksikoloji": "toxicology",
425 "toplum bilimi": "sociology",
426 "ulaşım": "communications",
427 "uygulamalı bilimler": "applied-sciences",
428 # "uyku": "sleep",
429 # "uzay": "space",
430 "veritabanı": "databases",
431 "veteriner hekimliği": ["veterinary", "medicine"],
432 "video oyunları": "video-games",
433 "volkanoloji": "volcanology",
434 "vücut": "body",
435 "Yahudilik": "Judaism",
436 "yapı bilgisi": "morphology",
437 "yazı": "writing",
438 "yazılım": "software",
439 "yazılım mühendisliği": "software-engineering",
440 "yollar": "road",
441 "yönetim": "management",
442 "yüzey bilimi": "geomorphology",
443 "zaman": "time",
444 # Modül:temalar/veri/grup
445 # "adalar": "island",
446 "aletler": "tools",
447 "alkollü içecekler": "beverages",
448 "ateşli silahlar": "firearms",
449 "atgiller": "horses",
450 "balıklar": "fish",
451 # "belediyeler": "municipalities",
452 "böcekler": "insects",
453 "bilimsel adlar": "scientific",
454 "bitkiler": "vegetable",
455 # "çay": "tea",
456 "çiçekler": "flowery",
457 "doğangiller": "falconry",
458 "gezegenler": "planets",
459 "haftanın günleri": "weekdays",
460 "içecekler": "beverages",
461 # "ilçeler": "districts",
462 # "kahve": "coffee",
463 "kemikler": "bone",
464 "kemiriciler": "rodents",
465 "kıtalar": "continents",
466 # "köyler": "village",
467 # "kuşlar": "birds",
468 "memeliler": "mammals",
469 "mevsimler": "seasons",
470 "renkler": "color",
471 "sebzeler": "vegetable",
472 "silahlar": "weapon",
473 "şehirler": "cities",
474 "takılar": "jewellery",
475 "taşıtlar": "vehicles",
476 "top oyunları": "ball-games",
477 "ülkeler": "country",
478 "yapılar": "architecture",
479 "yılanlar": "snakes",
480 "yiyecekler": "food",
481}
484def translate_raw_tags(data: BaseModel) -> None:
485 raw_tags = []
486 for raw_tag in data.raw_tags:
487 if raw_tag in TAGS and hasattr(data, "tags"):
488 tr_tag = TAGS[raw_tag]
489 if isinstance(tr_tag, str) and tr_tag not in data.tags:
490 data.tags.append(tr_tag)
491 elif isinstance(tr_tag, list): 491 ↛ 486line 491 didn't jump to line 486 because the condition on line 491 was always true
492 for t in tr_tag:
493 if t not in data.tags: 493 ↛ 492line 493 didn't jump to line 492 because the condition on line 493 was always true
494 data.tags.append(t)
495 elif raw_tag in TOPICS and hasattr(data, "topics"):
496 topic = TOPICS[raw_tag]
497 if isinstance(topic, str) and topic not in data.topics: 497 ↛ 499line 497 didn't jump to line 499 because the condition on line 497 was always true
498 data.topics.append(topic)
499 elif isinstance(topic, list):
500 for t in topic:
501 if t not in data.topics:
502 data.topics.append(t)
503 else:
504 raw_tags.append(raw_tag)
505 data.raw_tags = raw_tags