Coverage for src/wiktextract/extractor/el/tags.py: 84%

36 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-03 05:44 +0000

1"""TAGS 

2 

3The strings in lists on the right-hand side here should be *shared* tags 

4between different edition implementations. `valid_tags` is a dictionary 

5of these tags (and can be expanded if necessary, although it is unlikely 

6to be needed anymore because we have a lot of them), with some metadata 

7in the value used in the English mainline extractor. 

8 

9Otherwise, the implementation of tags is a translation effort: when this 

10edition of Wiktionary says 'x', what tags does that refer to? 

11""" 

12 

13from wiktextract.extractor.el.models import Form, Linkage, Sense, WordEntry 

14from wiktextract.tags import uppercase_tags, valid_tags 

15from wiktextract.topics import valid_topics 

16 

17# Tags used for modern Greek verb tables. 

18# 

19# Includes other verb related tags that may appear in headers etc. 

20# 

21# Some of the translations are from: 

22# * Greek: An Essential Grammar (Routledge Essential Grammars) 

23# 

24# * Reference: 

25# https://el.wiktionary.org/wiki/Κατηγορία:Πρότυπα_κλίσης_ρημάτων_(νέα_ελληνικά) 

26# 

27# * Standard table: 

28# https://el.wiktionary.org/wiki/ψάχνω 

29# * Non-standard table (relatively frequent): 

30# https://el.wiktionary.org/wiki/αναφωνώ which follows 

31# https://el.wiktionary.org/wiki/Πρότυπο:el-κλίσ-'λαλώ' 

32# * Others: 

33# https://el.wiktionary.org/wiki/τρώω 

34# FIX: 

35# * Users wrongly putting noun inflections in a Κλήση section 

36# https://el.wiktionary.org/wiki/δισεκατομμυριούχος 

37verb_table_tags_base: dict[str, list[str]] = { 

38 # Persons & numbers 

39 "α' ενικ.": ["first-person", "singular"], 

40 "β' ενικ.": ["second-person", "singular"], 

41 "γ' ενικ.": ["third-person", "singular"], 

42 "α' πληθ.": ["first-person", "plural"], 

43 "β' πληθ.": ["second-person", "plural"], 

44 "γ' πληθ.": ["third-person", "plural"], 

45 "α' πρόσωπο": ["first-person"], 

46 "β' πρόσωπο": ["second-person"], 

47 "γ' πρόσωπο": ["third-person"], 

48 "εγώ": ["first-person", "singular"], 

49 "εσύ": ["second-person", "singular"], 

50 "αυτός": ["third-person", "singular"], 

51 "εμείς": ["first-person", "plural"], 

52 "εσείς": ["second-person", "plural"], 

53 "αυτοί": ["third-person", "plural"], 

54 "(εσύ)": ["second-person", "singular"], 

55 "(εσείς)": ["second-person", "plural"], 

56 # Aspect groups 

57 # NOTE: redundant within most subcategories but needed to distinguish: 

58 # υποτακτική/προστακτική. 

59 # NOTE: The above distinction was deemed less important than being precise 

60 # over the main, most used forms, and so, these groups are ignored. 

61 # It also has the advantage of syncing standard and non-standard tables. 

62 "εξακολουθητικοί χρόνοι": [], # ["imperfective"], 

63 "συνοπτικοί χρόνοι": [], # ["perfective"], 

64 "συντελεσμένοι χρόνοι": [], # ["perfect"], 

65 "συντελεσμένοι χρόνοι (β΄ τύποι)": [ 

66 # "perfect", 

67 "type-b", 

68 ], 

69 "συντελεσμένοι χρόνοι β΄ (μεταβατικοί)": [ 

70 # "perfect", 

71 "type-b", 

72 "transitive", 

73 ], 

74 "συντελεσμένοι χρόνοι β΄ (αμετάβατοι)": [ 

75 # "perfect", 

76 "type-b", 

77 "intransitive", 

78 ], 

79 # Basic tenses / aspects 

80 "ενεστώτας": ["present"], 

81 "ενεστώτα": ["present"], 

82 "πρτ": ["imperfect"], 

83 "παρατατικός": ["imperfect"], 

84 "αόρ": ["aorist"], 

85 "αόριστος": ["aorist"], 

86 # Future 

87 "εξακολουθητικός μέλλοντας": ["future", "imperfect"], 

88 "εξ. μέλλ.": ["future", "imperfect"], 

89 "συνοπτ. μέλλ.": ["future"], 

90 "στιγμιαίος μέλλοντας": ["future"], # στιγμιαίος = συνοπτικός 

91 "στ.μέλλ": ["future"], 

92 "συντελ. μέλλ.": ["future", "perfect"], 

93 "συντελεσμένος μέλλοντας α'": ["future", "perfect", "type-a"], 

94 # Perfect subtypes 

95 "παρακείμενος": ["perfect"], 

96 "παρακείμενος α'": ["perfect", "type-a"], 

97 "υπερσυντέλικος": ["pluperfect"], 

98 "υπερσυντέλικος α'": ["pluperfect", "type-a"], 

99 # Forms / moods 

100 "υποτακτική": ["subjunctive"], 

101 "προστακτική": ["imperative"], 

102 "μετοχή": ["participle"], 

103 "μτχ.": ["participle"], 

104 # παθητική μετοχή παρακειμένου 

105 "μτχ.π.π": ["passive", "participle"], 

106 "μτχ.π.ε": ["active", "participle"], 

107 "μετοχή (ενεστώτας)": ["participle", "present"], 

108 "απαρέμφατο": ["infinitive"], 

109 # Voices 

110 "ενεργ.:": ["active"], 

111 "παθητική φωνή": ["passive"], 

112 "παθ.φωνή": ["passive"], 

113 "στην παθητική φωνή": ["passive"], 

114 "παθητικό": ["passive"], 

115 # ["passive-normally"] not valid, maybe add it similar to plural-normally 

116 "συνήθως στην παθητική φωνή": [], 

117 "π.αόρ": ["passive", "aorist"], 

118 "χωρίς παθητική φωνή": [], # passive-only is not valid (ADD IT?) 

119 # Others (τρώω table) 

120 "προσωπικές εγκλίσεις": [], # (noise) personal-moods 

121 "απρόσωπες εγκλίσεις": ["impersonal"], # impersonal-moods 

122 "μονολεκτικοί χρόνοι": [], # ["simple-tenses"], # no να/θα/έχει 

123 "περιφραστικοί χρόνοι": [], # ["periphrastic"], # with να/θα/έχει 

124 "απαρέμφατο (αόριστος)": ["infinitive", "aorist"], 

125} 

126 

127# https://el.wiktionary.org/wiki/free 

128english_tables_tags = { 

129 # Comparative 

130 # lit. "degree of comparison" but degree is a category already 

131 "παραθετικά": [], 

132 "θετικός": ["positive"], 

133 "συγκριτικός": ["comparative"], 

134 "υπερθετικός": ["superlative"], 

135 # Others 

136 "γ΄ ενικό ενεστώτα": ["third-person", "singular", "present"], 

137 "παθητική μετοχή": ["passive", "participle"], 

138 "ενεργητική μετοχή": ["active", "participle"], 

139 "μεταβατικό": ["transitive"], 

140 "αμετάβατο": ["intransitive"], 

141} 

142 

143# https://el.wiktionary.org/wiki/balai 

144esperanto_tables_tags = { 

145 "μέλλοντας": ["future"], 

146 "μορφή": [], # form is not valid 

147 "υποθετική": ["hypothetical"], 

148} 

149 

150turkish_tables_tags = { 

151 # 1. https://el.wiktionary.org/wiki/un 

152 "... μου": ["first-person", "singular"], 

153 "... σου": ["second-person", "singular"], 

154 "... του": ["third-person", "singular"], 

155 "... μας": ["first-person", "plural"], 

156 "... σας": ["second-person", "plural"], 

157 "... τους": ["third-person", "plural"], 

158 "είμαι": ["first-person", "singular", "present"], 

159 "είσαι": ["second-person", "singular", "present"], 

160 "είναι": ["third-person", "singular", "plural", "present"], 

161 "είμαστε": ["first-person", "plural", "present"], 

162 "είστε": ["second-person", "plural", "present"], 

163 "ήμουν": ["first-person", "singular", "past"], 

164 "ήσουν": ["second-person", "singular", "past"], 

165 "ήταν": ["third-person", "singular", "plural", "past"], 

166 "ήμασταν": ["first-person", "plural", "past"], 

167 "ήσασταν": ["second-person", "plural", "past"], 

168 # 2. https://el.wiktionary.org/wiki/içmek 

169 "o": ["third-person", "singular"], 

170 "sen": ["second-person", "singular"], 

171 "ben": ["first-person", "singular"], 

172 "onlar": ["third-person", "plural"], 

173 "siz": ["second-person", "plural"], 

174 "biz": ["first-person", "plural"], 

175 "άρνηση": ["negative"], 

176 "θετικός - ερώτηση": ["positive", "interrogative"], 

177 "άρνηση - ερώτηση": ["negative", "interrogative"], 

178 "ενεστώς απλός": ["present"], 

179 "παρατατικός (i was watching)": ["imperfect"], 

180 "απροσδιόριστος αόριστος": ["indefinite", "past"], 

181 "απροσδιόριστος παρατατικός": ["indefinite", "imperfect"], 

182 'past future ("i was going to watch")': ["past-future"], 

183 'unwitnessed past future ("i was supposedly going to watch")': [ 

184 "past-future" 

185 ], 

186 '"i used to watch" / "i would watch"': ["imperfect"], 

187 '"i used to watch" / "i would watch" (unwitnessed form)': ["imperfect"], 

188 "παθητικό απαρέμφατο": ["passive", "infinitive"], 

189 "ονομαστικές παράγωγες (isim-fiil)": ["noun"], 

190 "παθητικές ονομαστικές παραγωγές": ["passive", "noun"], 

191 "επιθετικές παράγωγες (sıfat-fiil)": ["adjective"], 

192 "επιρρηματικές παράγωγες (zarf-fiil)": ["adverb"], 

193 # 3. https://el.wiktionary.org/wiki/yemek 

194 "διαρκής παροντικός (ενεστώτας)": ["present"], 

195 "απλός παροντικός": ["present"], 

196 "διαρκής παρελθοντικός (παρατατικός)": ["imperfect"], 

197 "καταφατικοί τύποι": ["positive"], 

198 "αρνητικοί τύποι": ["negative"], 

199 "ερωτηματικοί τύποι": ["interrogative"], 

200 "ερωτημ-αρνητ. τύποι": ["interrogative", "negative"], 

201 # 4. https://el.wiktionary.org/wiki/gitmek 

202 "pozitiv - izrični oblik": ["positive"], 

203 "pozitiv - upitni oblik": ["positive", "interrogative"], 

204 "negativ - izrični oblik": ["negative"], 

205 "negativ - upitni oblik": ["negative", "interrogative"], 

206} 

207 

208# https://el.wiktionary.org/wiki/pompier 

209romanian_tables_tags = { 

210 "οριστική άρθρωση": ["definite"], 

211 "αόριστη άρθρωση": ["indefinite"], 

212} 

213 

214# https://el.wiktionary.org/wiki/afrikanisch 

215german_tables_tags = { 

216 "με οριστικό άρθρο": ["definite"], 

217 "με αόριστο άρθρο": ["indefinite"], 

218 "ένδειξη ευγένειας": ["polite"], # Sie 

219 "όλα τα γένη": ["masculine", "feminine", "neuter"], 

220 "ως κατηγορούμενο": ["predicative"], 

221} 

222 

223# https://el.wiktionary.org/wiki/os 

224spanish_tables_tags = { 

225 "1ο": ["first-person"], 

226 "2ο": ["second-person"], 

227 "3ο": ["third-person"], 

228 # "https://el.wiktionary.org/wiki/entender" 

229 "υποτακτική (subjuntivo)": ["subjunctive"], 

230 "οριστική (indicativo)": ["indicative"], 

231 "αυτοπαθής": ["reflexive"], 

232 "τονιζόμενη": [], # accent/accented is not valid 

233 # https://el.wiktionary.org/wiki/llegar 

234 "yo": ["first-person", "singular"], 

235 "tú": ["second-person", "singular"], 

236 "él, ella, ello, usted": ["third-person", "singular"], 

237 "usted": ["third-person", "singular"], 

238 "nosotros, nosotras": ["first-person", "plural"], 

239 "vosotros, vosotras": ["second-person", "plural"], 

240 "ellos, ellas, ustedes": ["third-person", "singular"], 

241 "ustedes": ["third-person", "plural"], 

242 "παρατατικός (ra)": ["imperfect"], 

243 "παρατατικός (se)": ["imperfect"], 

244 "καταφατικά": ["positive"], 

245 "δυνητική": ["potential"], 

246} 

247 

248# https://el.wiktionary.org/wiki/biały 

249polish_tables_tags = { 

250 "αρσενικό έμψυχο": ["masculine", "animate"], 

251 "αρσενικό άψυχο": ["masculine", "inanimate"], 

252} 

253 

254# https://el.wiktionary.org/wiki/любить 

255russian_tables_tags = { 

256 "α' πρόσ.": ["first-person", "singular"], 

257 "β' πρόσ.": ["second-person", "singular"], 

258 "γ' πρόσ.": ["third-person", "singular"], 

259 "μη συνοπτική όψη1": ["imperfective"], # συνοπτικό perfective 

260} 

261 

262# croître (παραδοσιακή ορθογραφία) 

263# croitre (ορθογραφία του 1990) 

264french_tags = { 

265 "(παραδοσιακή ορθογραφία)": [], # normal spelling 

266 "παραδοσιακή ορθογραφία": [], 

267 "(ορθογραφία του 1990)": ["dated"], # outdated-spelling is not valid 

268 "ορθογραφία του 1990": ["dated"], 

269 # Old French (fro) 

270 "cas sujet": ["subjective"], # subjective case 

271 "cas régime": ["objective"], # objective case 

272} 

273 

274# https://el.wiktionary.org/wiki/πιστεύω 

275# https://el.wiktionary.org/wiki/δύω 

276ancient_greek_tables_tags = { 

277 "ἐγὼ": ["first-person", "singular"], 

278 "ἐγώ": ["first-person", "singular"], 

279 "σὺ": ["first-person", "singular"], 

280 "σύ": ["first-person", "singular"], 

281 "οὗτος": ["first-person", "singular"], 

282 "οὖτος": ["first-person", "singular"], # spirit the other way 

283 "ἡμεῖς": ["first-person", "singular"], 

284 "ὑμεῖς": ["first-person", "singular"], 

285 "οὗτοι": ["first-person", "singular"], 

286 # 

287 "οριστική": ["indicative"], 

288 "ευκτική": ["optative"], 

289 "ονοματικοί τύποι": [], # EXTRA SPACES 

290 "ενεργητικός ενεστώτας": ["active", "present"], 

291 "ενεργητικός παρακείμενος": ["active", "perfect"], 

292 "ενεργητικός αόριστος α'": ["active", "aorist", "type-a"], 

293 "ενεργητικός αόριστος β'": ["active", "aorist", "type-b"], 

294 "ενεργητικός παρατατικός": ["active", "imperfect"], 

295 "ενεργητικός υπερσυντέλικος": ["active", "pluperfect"], 

296 "ενεργητικός μέλλοντας": ["active", "future"], 

297 "ονοματικοί τύποι": [], # ? 

298 "2o δυϊκός": ["second-person", "dual"], 

299 "3o δυϊκός": ["third-person", "dual"], 

300 "μετοχή : αρσενικό - θηλυκό - ουδέτερο": ["participle"], # BAD PARSING 

301 "στη μέση φωνή": ["middle"], # middle voice 

302 "μέσος μέλλοντας": ["middle", "future"], 

303 "μέσος αόριστος α'": ["middle", "aorist", "type-a"], 

304 "μέσος αόριστος β'": ["middle", "aorist", "type-b"], 

305 "μέσος / παθητικός ενεστώτας": ["mediopassive", "present"], 

306 "μέσος / παθητικός παρακείμενος": ["mediopassive", "perfect"], 

307 "μέσος / παθητικός παρατατικός": ["mediopassive", "imperfect"], 

308 "μέσος / παθητικός υπερσυντέλικος": ["mediopassive", "pluperfect"], 

309 "1η συζυγία - μεσοπαθητικός ενεστώτας": ["mediopassive", "present"], 

310 "2η συζυγία - ενεργητικός ενεστώτας": ["active", "present"], 

311 "παθητικός αόριστος α'": ["passive", "aorist", "type-a"], 

312 "παθητικός μέλλοντας α'": ["passive", "future", "type-a"], 

313 # https://el.wiktionary.org/wiki/δορυφόρος 

314 # Dual terms 

315 "κλητική ὦ!": ["vocative"], 

316 "ονομ-αιτ-κλ": ["nominative", "accusative", "vocative"], 

317 "γεν-δοτ": ["genitive", "dative"], 

318} 

319 

320ancient_greek_tags = { 

321 "δοτική": ["dative"], 

322 "αφαιρετική": ["ablative"], 

323 "τοπική": ["locative"], 

324 "δυϊκός": ["dual"], 

325 "γενική δοτική": ["genitive", "dative"], 

326 "εφελκυστικό νι": [], # "ephelcystic nu" is not valid 

327} 

328 

329# Tags need capitalization 

330transliteration_tags = { 

331 "λατινικοί χαρακτήρες": ["Latin", "transliteration"], 

332 "λατινικό αλφάβητο": ["Latin", "transliteration"], 

333 "αραβικό αλφάβητο": ["Arabic", "transliteration"], 

334 "κυριλλικοί χαρακτήρες": ["Cyrillic", "transliteration"], 

335 "yañalif": ["Yañalif", "transliteration"], 

336} 

337 

338zones_tags = { 

339 "ηπα": ["US"], 

340 "ηβ": ["UK"], 

341 "αμερικανικά αγγλικά": ["US", "English"], 

342 "βρετανικά αγγλικά": ["UK", "English"], 

343 "αμερικανική σημασία": ["US"], # US-meaning is not valid 

344 "βρετανική σημασία": ["UK"], 

345 "αυστραλία": ["Australia"], 

346 "γαλλία": ["France"], 

347} 

348 

349# TODO: Ideally empty. Move things around. 

350other_tags = { 

351 "σπάνιο": ["rare"], 

352 "συνήθως": [], # usually 

353 "εξαιρετικά": [], # very; usu. εξαιρετικά σπάνιο: very rare 

354 "όπως ενδεικτικά": [], # ~roughly means "for example..." 

355 "και τα παράγωγά του": [], # ~roughly means related 

356 "αρνητικά": ["negative"], 

357 "συγγενικά": [], # related 

358 "συνηρημένο": ["contracted"], # "βροντάω (συνηρημένο βροντῶ)" 

359 "πριν από φωνήεν": ["before-vowel"], 

360 "μόνο πριν από το ουσιαστικό": ["before-noun"], 

361 "βιβλιογραφική παραπομπή": [], # bibliographic reference 

362 "rōmaji": [], # romaji is not valid 

363 # gia fors 

364 "για πράγματα": [], # ~for things 

365 "για ζώα": [], # ~for animals 

366 "για πρόσωπο": [], # ~for people 

367 "για πρόσωπα": [], # ~for people 

368 "για άνθρωπο": [], # ~for people 

369 "για ανθρώπους": [], # ~for people 

370 # POS 

371 "ουσιαστικό": ["noun"], 

372 "ελλειπτικό ουσιαστικό": ["noun", "defective"], 

373 "ρήμα": ["verb"], 

374 "ελλειπτικό ρήμα": ["verb", "defective"], 

375 "αποθετικό ρήμα": ["deponent", "verb"], 

376 "αποθετικό": ["deponent"], 

377 "απρόσωπο ρήμα": ["verb", "impersonal"], 

378 "απρόσωπο": ["impersonal"], 

379 "επίρρημα": ["adverb"], 

380 "τοπικό επίρρημα": ["adverb"], # topical is not valid 

381 "χρονικό επίρρημα": ["adverb"], 

382 "τροπικό επίρρημα": ["adverb"], # tropic/tropical are not valid 

383 "τροπικό": [], 

384 "ποσοτικό επίρρημα": ["adverb"], 

385 "επίθετο": ["adjective"], 

386 "επιτατικό επίθετο": ["adjective"], 

387 "σε επιθετική λειτουργία": ["adjective"], 

388 "λειτουργία": [], # BAD PARSING of the above 

389 "επιθετική": ["adjective"], 

390 "ως επίθετο": ["adjective"], 

391 "επώνυμο": ["surname"], 

392 "επώνυμα": ["surname"], 

393 "επωνυμία": ["surname"], 

394 "θεωνύμιο": [], # God's name 

395 "προσωπική αντωνυμία": ["pronoun"], # really personal pronoun 

396 "αναφορική αντωνυμία": ["pronoun"], 

397 "δεικτική αντωνυμία": ["pronoun"], 

398 "οριστική αντωνυμία": ["pronoun", "definite"], 

399 "αόριστη αντωνυμία": ["pronoun", "indefinite"], 

400 "επιμεριστική αντωνυμία": ["pronoun", "distributive"], 

401 "ακρωνύμιο": ["acronym"], 

402 "αρκτικόλεξο": ["initialism"], 

403 "υποκοριστικό": ["diminutive"], 

404 "χαϊδευτικό": ["diminutive"], 

405 "σύνθετα": ["compound"], 

406 "συντομογραφία": ["abbreviation"], 

407 "γράμμα": ["letter"], 

408 "περιληπτικό": ["collective"], 

409 "οργανική": ["instrumental"], 

410 "γραφή": [], # writing is not valid 

411 "προσφώνηση": [], # really salutation 

412 # 

413 "άκλιτο": ["invariable"], 

414 "και άκλιτο": ["invariable"], 

415 "κτητική": ["possessive"], 

416 "μετρήσιμο": ["countable"], 

417 "μη μετρήσιμο": ["uncountable"], 

418 "μετρήσιμο και μη μετρήσιμο": ["countable", "uncountable"], 

419 "μεταβατικό και αμετάβατο": ["transitive", "intransitive"], 

420 "μεταβατικό & αμετάβατο": ["transitive", "intransitive"], 

421 "ουσιαστικοποιημένο": [], # really nominalized 

422 "αστερισμός": [], # constellation is not valid 

423 # Zones 

424 "τοπωνύμιο": ["toponymic"], # toponym/placename are not valid 

425 "πατριδωνυμικό": ["demonym"], 

426 "πρώην ονομασία": [], # naming is not valid (~city naming) 

427 # Styles / register 

428 "κυριολεκτικά": ["literally"], 

429 "μεταφορικά": ["figuratively"], # or metaphorically 

430 "κυριολεκτικά και μεταφορικά": ["literally", "figuratively"], 

431 "συνεκδοχικά": ["figuratively"], 

432 "καταχρηστικά": ["figuratively"], 

433 "κατ’ επέκταση": ["broadly"], 

434 "κατ' επέκταση": ["broadly"], 

435 "ειδικότερα": ["especially"], 

436 "γενικότερα": ["general"], # generally is not valid 

437 "αρχική σημασία": [], # originally is not valid 

438 # 

439 "λόγιο": ["formal"], 

440 "επίσημο": ["formal"], 

441 "λογοτεχνικό": ["literary"], 

442 "ποιητικός τύπος": ["poetic"], 

443 "παρωχημένο": ["dated"], 

444 "αρχαιοπρεπές": ["archaic"], 

445 "απαρχαιωμένο": ["obsolete"], 

446 "καθομιλουμένη": ["colloquial"], 

447 "χυδαίο": ["vulgar"], 

448 "λαϊκό": ["vulgar"], 

449 "λαϊκότροπο": ["vulgar"], 

450 "αργκό": ["slang"], # argot is not valid 

451 "διαδικτυακή αργκό": ["internet-slang"], 

452 "στρατιωτική αργκό": ["slang"], # military-slang is not valid 

453 "οικείο": ["familiar"], 

454 "προφορικό": ["familiar"], # oral is not valid 

455 "μειωτικό": ["offensive"], 

456 "υβριστικό": ["offensive"], 

457 "σκωπτικό": ["offensive"], 

458 "κακόσημο": ["disapproving"], 

459 "νεολογισμός": ["neologism"], 

460 "ιδιωματικό": ["idiomatic"], 

461 "και σήμερα σε χρήση ως ιδιωματικό": ["idiomatic"], 

462 "ιδιωματισμός": ["idiomatic"], # idiom is not valid 

463 "ανεπίσημο": ["informal"], 

464 "ειρωνικό": ["ironic"], 

465 # Greeks 

466 "καθαρεύουσα": ["Katharevousa"], 

467 "καθαρεύουσα (κατά την αρχαία κλίση)": ["Katharevousa"], 

468 "ελληνιστική κοινή": ["Koine"], 

469 "δημοτική": ["Demotic"], 

470 "ελληνιστική σημασία": ["Hellenistic"], 

471 "κρητικά": ["Cretan"], 

472 "κυπριακά": ["Cypriot"], 

473 "ιωνικός τύπος": ["Ionic"], 

474 "στην ιωνική διάλεκτο": ["Ionic"], 

475 "επικός τύπος": ["Epic"], 

476 "δωρικός τύπος": ["Doric"], 

477 "αιολικός τύπος": ["Aeolian"], 

478 "αττικός τύπος": ["Attic"], 

479} 

480 

481topic_map: dict[str, list[str]] = { 

482 "επάγγελμα": ["business"], # really profession 

483 "οικονομία": ["business"], # really economy 

484 "λογιστική": ["accounting"], 

485 "στατιστική": ["statistics"], 

486 "βιολογία": ["biology"], 

487 "βοτανική": ["botany"], 

488 "ιατρική": ["medicine"], 

489 "φαρμακευτική": ["medicine"], # pharmaceutical is not valid 

490 "ανατομία": ["anatomy"], 

491 "φυσιολογία": ["physiology"], 

492 "χημεία": ["chemistry"], 

493 "βιοχημεία": ["biochemistry"], 

494 "θρησκεία": ["religion"], 

495 "χριστιανισμός": ["Christianity"], 

496 "ισλαμισμός": ["Islam"], 

497 "μυθολογία": ["mythology"], 

498 "ελληνική μυθολογία": ["mythology", "Greek"], 

499 "σκανδιναβική μυθολογία": ["mythology", "Scandinavian"], 

500 "γραμματική": ["grammar"], 

501 "ιστορία": ["history"], 

502 "μουσική": ["music"], 

503 "μουσικό όργανο": ["music"], # music instrument 

504 "εργαλείο": ["tools"], 

505 "μαθηματικά": ["mathematics"], 

506 "πολιτική": ["politics"], 

507 "αθλητισμός": ["athletics"], 

508 "τεχνολογία": ["technology"], 

509 "φυσική": ["physics"], 

510 "ζωολογία": ["zoology"], 

511 "ιχθυολογία": ["ichthyology"], 

512 "γεωγραφία": ["geography"], 

513 "γεωμετρία": ["geometry"], 

514 "γεωλογία": ["geology"], 

515 "γεωπονία": ["agriculture"], # agronomy is not valid 

516 "φιλολογία": ["philology"], 

517 "γλώσσα": ["language"], 

518 "γλωσσολογία": ["linguistics"], 

519 "φωνητική": ["phonetics"], 

520 "αστρονομία": ["astronomy"], 

521 "ηλεκτρολογία": ["electricity"], # branch of physics 

522 "ηλεκτρονική": ["electronics"], 

523 "τηλεπικοινωνίες": ["telecommunications"], 

524 "αντικειμενοστρεφής προγραμματισμός": ["programming"], # OOP 

525 "προγραμματισμός": ["programming"], 

526 "λογισμικό": ["software"], 

527 "πληροφορική": ["computing"], 

528 "επιστήμη υπολογιστών": ["computing"], # computer science 

529 "υλικό υπολογιστή": ["computing"], # computer material 

530 "βάσεις δεδομένων": ["computing"], # database is not valid 

531 "δίκτυο υπολογιστών": ["computing"], # network is not valid 

532 "διαδίκτυο": ["Internet"], 

533 "φιλοσοφία": ["philosophy"], 

534 "ψυχολογία": ["psychology"], 

535 "ψυχιατρική": ["psychiatry"], 

536 "αρχιτεκτονική": ["architecture"], 

537 "οικοδομική": ["construction"], 

538 "μετεωρολογία": ["meteorology"], 

539 "ενδυμασία": ["clothing"], 

540 "υπόδηση": ["clothing"], # really footwear 

541 "ύφασμα": ["clothing"], # really fabric/textile 

542 "αρχαιολογία": ["archeology"], 

543 "ορυκτολογία": ["mineralogy"], 

544 "εκπαίδευση": ["education"], 

545 "τέχνη": ["art"], 

546 "γλυπτική": ["art"], # sculpting is not valid 

547 "ζωγραφική": ["art"], # painting is not valid 

548 "λογοτεχνία": ["literature"], 

549 "θέατρο": ["theater"], 

550 "χορός": ["dance"], 

551 "φωτογραφία": ["photography"], 

552 "κινηματογράφος": ["film"], 

553 "λογική": ["logic"], 

554 "επιστήμη": ["science"], 

555 "μηχανολογία": ["mechanical-engineering"], 

556 "τυπογραφία": ["typography"], 

557 "επιδημιολογία": ["epidemiology"], 

558 "οικολογία": ["ecology"], 

559 "κοινωνιολογία": ["sociology"], 

560 "ανθρώπινο σώμα": ["body"], 

561 "λαογραφία": ["folklore"], 

562 "μέσο μεταφορών": ["transport"], 

563 "αστρολογία": ["astrology"], 

564 "εραλδική": ["heraldry"], 

565 "ταξινομία": ["taxonomy"], 

566 "μεταλλουργία": ["metallurgy"], 

567 # 

568 "εθνωνύμιο": ["countries"], # ethnonym is not valid 

569 "εθνικό όνομα": ["countries"], # ethnonym is not valid 

570 "χώρα": ["countries"], 

571 "πόλη": ["cities"], 

572 "χρώμα": ["color"], 

573 # 

574 "μονάδα μέτρησης": ["units-of-measure"], 

575 "μετρική": ["units-of-measure"], 

576 "παραμύθι": ["fantasy"], # tale/fairy-tale are not valid 

577 "χαρτοπαίγνιο": ["card-games"], 

578 "παιχνίδι": ["games"], 

579 "σκάκι": ["board-games"], # chess 

580 "κεραμική": ["ceramics"], 

581 "άνεμος": ["weather"], # wind is not valid 

582 # 

583 "αξίωμα": [], # office/rank is not valid 

584 "οικογένεια": [], # family is not valid 

585 "νόμισμα": [], # coin/currency are not valid 

586 # Time 

587 "ημέρα": ["time"], # day is not valid 

588 "μήνας": ["time"], # month is not valid 

589 # Food 

590 "τρόφιμο": ["food"], 

591 "φαγητά": ["food"], 

592 "ποτό": ["food"], # drink is not valid 

593 "γαστρονομία": ["food"], # gastronomy is not valid 

594 "φρούτο": ["food"], # fruit is not valid 

595 "όσπριο": ["food"], # legume is not valid 

596 "γλυκό": ["food"], # sweet is not valid 

597 "τυρί": ["food"], # cheese is not valid 

598 "λαχανικό": ["vegetable"], 

599 "αλιεία": ["fishing"], 

600 "ψάρι": ["fish"], 

601 "μαλάκιο": ["fish"], # mollusc is not valid 

602 "ελληνική ποικιλία αμπέλου": ["wine"], 

603 "μαγειρική": ["cooking"], 

604 "κουζινικά": ["cooking"], # kitchen is not valid 

605 # 

606 "δέντρο": [], # tree is not valid 

607 "φυτό": [], # really plant 

608 "λουλούδι": [], # really flower 

609 "ζώο": [], # animal is not valid 

610 "θηλαστικό ζώο": ["mammals"], 

611 "πτηνό": [], # really bird 

612 "ερπετό": [], # reptile is not valid 

613 "φίδι": ["snakes"], 

614 "εντομολογία": ["entomology"], 

615 "έντομο": ["insects"], 

616 # 

617 "στρατιωτικός βαθμός": ["military"], 

618 "οπλισμός": ["weapon"], 

619 # 

620 "ναυτικός όρος": ["nautical"], 

621 "ναυπηγικός όρος": ["nautical"], 

622 "νομικός όρος": ["law"], 

623 "στρατιωτικός όρος": ["military"], 

624 "αεροπορικός όρος": ["aerospace"], 

625 "εκκλησιαστικός όρος": ["religion"], 

626} 

627 

628# TODO: 

629# This booms somewhere in the parsing 

630# (να, ας, αν, ίσως κλπ) γ' ενικό υποτακτικής αορίστου του ρήματος εντάσσω 

631# 

632# TO FIX LATER 

633DONTCARES = { 

634 ":": [], 

635 "να": [], 

636 "ας": [], 

637 "αν": [], 

638 "ίσως κλπ": [], 

639 "οι δεύτεροι άτονοι τύποι είναι εγκλιτικοί": [], 

640 "επική κλίση οι διαφορετικοί τύποι, με έντονα γράμματα": [], 

641 "ελληνιστική κοινή (αρχαία κλίση)δε μαρτυρείται δυϊκός αριθμός": [], 

642 "όταν ακολουθεί όνομα, η οξεία γίνεται βαρεία . • σημειώνεται η προσωδία του α εκεί που είναι μακρό": [], 

643 "δωρική κλίση οι διαφορετικοί τύποι, με έντονα γράμματα": [], 

644 "χωρίς άρθρο, συγκριτικός βαθμός με το άρθρο, σχετικός υπερθετικός βαθμός": [], 

645 "κλιτικοί τύποι από την αρχαία κλίση": [], # from βπ template for grc 

646 "παθητικού": [], # BAD PARSING 

647 "παρακειμένου": [], # BAD PARSING 

648 "σημειώνεται η προσωδία του α εκεί που είναι μακρό": [], 

649 "1η συζυγία - μεσοπαθητικός ενεστώτας (αποθετικό ρήμα)": [], 

650 "κλίση -ος, -α, -ον & σπανιότερα θηλυκό σε -η": [], 

651 "χωρίς άρθρο": [], 

652 "χωρίς": [], 

653 "κλίση χωρίς άρθρο": [], 

654 "χωρίς παραθετικά": [], 

655 "και": [], 

656 "του": [], 

657 "δείτε": [], 

658 "δείτε την έκφραση": [], 

659 "όπως": [], 

660 "στο": [], 

661 "τη λέξη": [], 

662 "τις λέξεις": [], 

663 "με": [], 

664 "σε": [], 

665 "ή": [], 

666 "η": [], 

667 "το": [], 

668 "+ να": [], 

669 "+ θα": [], 

670 # Bad page: https://el.wiktionary.org/wiki/enketi 

671 "ρήμα {{{1}}}i": ["verb"], 

672 # 

673 # BAD TABLE PARSING 

674 # 

675 # https://el.wiktionary.org/wiki/ὁ 

676 "γένη πτώσεις": [], 

677 "τῶ": [], 

678 "τώς": [], 

679 "τάν (ᾱ)": [], 

680 # https://el.wiktionary.org/wiki/με 

681 "πρόσωπα πτώσεις": [], 

682} 

683 

684tag_map: dict[str, list[str]] = { 

685 **DONTCARES, 

686 **verb_table_tags_base, 

687 **english_tables_tags, 

688 **esperanto_tables_tags, 

689 **turkish_tables_tags, 

690 **romanian_tables_tags, 

691 **german_tables_tags, 

692 **spanish_tables_tags, 

693 **polish_tables_tags, 

694 **russian_tables_tags, 

695 **french_tags, 

696 **ancient_greek_tables_tags, 

697 **ancient_greek_tags, 

698 **transliteration_tags, 

699 **zones_tags, 

700 **other_tags, 

701 # Gender 

702 "αρσενικό": ["masculine"], 

703 "θηλυκό": ["feminine"], 

704 "ουδέτερο": ["neuter"], 

705 "αρσενικό & θηλυκό": ["masculine", "feminine"], 

706 "αρσενικό ή θηλυκό": ["masculine", "feminine"], 

707 "αρσενικό ή ουδέτερο": ["masculine", "neuter"], 

708 "αρσενικό θηλυκό ουδέτερο": ["masculine", "feminine", "neuter"], 

709 "ουδέτερο στον ενικό": [], # neuter-when-singular not valid 

710 "ουδέτερο στον πληθυντικό": [], # idem, not valid 

711 "αρσενικό στον πληθυντικό": [], # masculine-when-plural not valid 

712 "θηλυκό στον ενικό": [], # feminine-when-singular not valid 

713 # Number 

714 "ενικός": ["singular"], 

715 "ενικός (singular)": ["singular"], 

716 "πληθυντικός": ["plural"], 

717 "πληθυντικός (plural)": ["plural"], 

718 "μόνο στον ενικό": ["singular-only"], 

719 "μόνο στον πληθυντικό": ["plural-only"], 

720 "ο αρχαίος τύπος, μόνο στον πληθυντικό": ["plural-only"], 

721 "μόνο πληθυντικός": ["plural-only"], 

722 "μόνο ενικός": ["singular-only"], 

723 "στον ενικό": ["singular"], 

724 "στον πληθυντικό": ["plural"], 

725 "συνήθως στον πληθυντικό": ["plural-normally"], 

726 "συνήθως στον ενικό": ["singular-normally"], 

727 "συνήθως ενικός": ["singular-normally"], 

728 # Case 

729 "ονομαστική": ["nominative"], 

730 "γενική": ["genitive"], 

731 "γενική:": ["genitive"], 

732 "αιτιατική": ["accusative"], 

733 "κλητική": ["vocative"], 

734 "ονομαστική αιτιατική": ["nominative", "accusative"], 

735 # Others 

736 "αόριστο": ["indefinite"], 

737 "οριστικό": ["definite"], 

738} 

739 

740 

741Taggable = WordEntry | Form | Sense | Linkage 

742"""An object with raw_tags, tags and topics attributes.""" 

743 

744 

745def translate_raw_tags(taggable: Taggable) -> None: 

746 """Translate raw_tags to tags/topics, preserving raw_tags. 

747 

748 This is a bit different from other extractors in order to type check. 

749 

750 INVARIANT: taggable's tags/topics should **remain** unique. 

751 If they were not unique before, there are no guarantees. 

752 

753 Use: 

754 # Apply to an entire WordEntry 

755 >>> translate_raw_tags(word_entry) 

756 

757 # Apply to each Form in a WordEntry 

758 >>> for form in word_entry.forms: 

759 ... translate_raw_tags(form) 

760 

761 # Apply to a list of Form objects 

762 >>> for form in form_list: 

763 ... translate_raw_tags(form) 

764 """ 

765 for raw_tag in taggable.raw_tags: 

766 clean_raw_tag = raw_tag.replace("\n", " ").lower() 

767 tags = tag_map.get(clean_raw_tag) 

768 if tags is not None: 

769 for tag in tags: 

770 if tag not in taggable.tags: 

771 taggable.tags.append(tag) 

772 else: 

773 topics = topic_map.get(clean_raw_tag) 

774 if topics is not None: 774 ↛ 775line 774 didn't jump to line 775 because the condition on line 774 was never true

775 for topic in topics: 

776 if topic not in taggable.topics: 

777 taggable.topics.append(topic)