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

1from .models import BaseModel 

2 

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} 

90 

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} 

119 

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} 

134 

135LINKAGE_TAGS = { 

136 "eskimiş": "obsolete", 

137} 

138 

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} 

169 

170 

171TAGS = { 

172 **GLOSS_TAGS, 

173 **POS_HEADER_TAGS, 

174 **TRANSLATION_TAGS, 

175 **LINKAGE_TAGS, 

176 **TABLE_TAGS, 

177} 

178 

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} 

482 

483 

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