Coverage for src/wiktextract/extractor/cs/tags.py: 66%

32 statements  

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

1from .models import WordEntry 

2 

3# https://cs.wiktionary.org/wiki/Modul:Priznaky/seznam 

4LABEL_TAGS = { 

5 "v Americe": "US", 

6 "argot": "slang", 

7 "archaicky": "archaic", 

8 "básnicky": "poetic", 

9 "bavorský výraz": "Bavarian", 

10 "biblický výraz": "Biblical", 

11 "cirkusový slang": "slang", 

12 "častěji": "often", 

13 # "částečně": "partially", 

14 "v Čechách": "Bohemia", 

15 "dětsky": "childish", 

16 "divadelní slang": "slang", 

17 "dokonavé": "perfective", 

18 # "domácky": "", 

19 "dopravní slang": "slang", 

20 "doslovně": "literary", 

21 "drogový slang": "slang", 

22 # "dříve": "formerly", 

23 "eufemisticky": "euphemistic", 

24 "expresivně": "expressively", 

25 "familiárně": "familiar", 

26 "formálně": "formally", 

27 "hanlivě": "derogatory", 

28 # "brněnský hantec": "", 

29 "historicky": "historical", 

30 "hornický slang": "slang", 

31 "horolezecký slang": "slang", 

32 "hovorově": "colloquially", 

33 "muzikantský slang": "slang", 

34 "hyperonymum": "hypernym", 

35 "hyponymum": "hyponym", 

36 "internetový slang": "slang", 

37 "intranzitivní": "intransitive", 

38 "ironicky": "ironic", 

39 "karetní slang": "slang", 

40 "knižně": "literary", 

41 "kriminální slang": ["criminal-slang", "slang"], 

42 "křesťanský slang": ["Christian", "slang"], 

43 "latinsky": "Latin", 

44 "slang mládeže": "slang", 

45 "v plurálu": "plural", 

46 "v moderním kontextu": "modern", 

47 "na Moravě": "Moravia", 

48 "motoristický slang": "slang", 

49 "myslivecký slang": "slang", 

50 "slang námořníků": "slang", 

51 "nářečně": "dialectal", 

52 "nedokonavé": "imperfect", 

53 "neformálně": "informal", 

54 "neologismus": "neologism", 

55 "jen neosobní": "impersonal", 

56 "nepočitatelné": "uncountable", 

57 # "nepřesně": "", 

58 "nesprávně": "incorrectly", 

59 "neutrálně": "neutral", 

60 # "nezvratné": "", 

61 # "v obecném jazyce": "", 

62 "oblastně": "regional", 

63 "obrazně": "figuratively", 

64 # "odborně": "", 

65 # "okazionalismus": "", 

66 "pejorativně": "pejorative", 

67 "počitatelné": "countable", 

68 "policejní slang": "slang", 

69 "pomnožné": "multiplicative", 

70 "poněkud zastarale": "outdated", 

71 "pražský výraz": "Prague", 

72 "přechýleně": "oblique", 

73 "přeneseně": "figuratively", 

74 # "přibližně": "", 

75 "v Rakousku": "Austria", 

76 "řemeslnický slang": "slang", 

77 "v širším slova smyslu": "broadly", 

78 "v užším slova smyslu": "narrowly", 

79 "slangově": "slang", 

80 "v současnosti": "present", 

81 "současným pravopisem": "contemporary", 

82 "spisovné skloňování": "literary", 

83 "sportovní slang": "slang", 

84 "starým pravopisem": "archaic", 

85 "staročesky": "Old-Cezch", 

86 "studentský slang": "slang", 

87 "technický slang": "slang", 

88 "televizní slang": "slang", 

89 "trampský slang": "slang", 

90 "tranzitivní": "transitive", 

91 "vězeňský slang": "slang", 

92 "vodácký slang": "slang", 

93 "vojenský slang": "slang", 

94 "vulgárně": "vulgar", 

95 # "vznešeně": "noble", 

96 # "xenofobní výraz": "", 

97 "z angličtiny": "English", 

98 "zastarale": "obsolete", 

99 "zdravotnický slang": "slang", 

100 "zdrobněle": "diminutive", 

101 "zkráceně": "abbreviation", 

102 "zkratkou": "abbreviation", 

103 "zřídka": "rare", 

104 "zveličele": "exaggerated", 

105 "zvratné": "reflexive", 

106 "železničářský slang": "slang", 

107 "žertovně": "humorous", 

108 "židovský slang": ["Jewish", "slang"], 

109 "ambitranzitivní": "ambitransitive", 

110} 

111 

112GENDER_TAGS = { 

113 "mužský": "masculine", 

114 "životný": "animate", 

115 "neživotný": "inanimate", 

116 "femininum (ženský rod)": "feminine", 

117 "ženský": "feminine", 

118 "ženský rod": "feminine", 

119 "neutrum (střední rod)": "neuter", 

120 "střední": "neuter", 

121 "střední rod": "neuter", 

122 "maskulinum (mužský rod)": "masculine", 

123 "mužský rod": "masculine", 

124 # "všechny rody": "", 

125} 

126 

127TABLE_TAGS = { 

128 # Šablona:Substantivum_(cs) 

129 "jednotné": "singular", 

130 "množné": "plural", 

131 "nominativ": "nominative", 

132 "genitiv": "genitive", 

133 "dativ": "dative", 

134 "akuzativ": "accusative", 

135 "vokativ": "vocative", 

136 "lokál": "locative", 

137 "instrumentál": "instrumental", 

138 # Šablona:Adjektivum_(cs) 

139 "mužský\nživotný": ["masculine", "animate"], 

140 "mužský\nneživotný": ["masculine", "inanimate"], 

141 # Šablona:Stupňování_(cs) 

142 "pozitiv": "positive", 

143 "komparativ": "comparative", 

144 "superlativ": "superlative", 

145 # Šablona:Sloveso_(cs) 

146 "Oznamovací způsob": "indicative", 

147 "číslo jednotné": "singular", 

148 "číslo množné": "plural", 

149 "1.": "first-person", 

150 "2.": "second-person", 

151 "3.": "third-person", 

152 "přítomný čas": "present", 

153 "Rozkazovací způsob": "imperative", 

154 "číslo\njednotné": "singular", 

155 "Příčestí": "participle", 

156 "mužský životný\ni neživotný": ["masculine", "animate", "inanimate"], 

157 "mužský neživotný\na ženský": ["masculine", "animate", "feminine"], 

158 "činné": "active", 

159 "Přechodníky": "transgressive", 

160 "ženský\nstřední": ["feminine", "neuter"], 

161 "mužský\nženský\nstřední": ["masculine", "feminine", "neuter"], 

162 "přítomný": "present", 

163 # Šablona:Sloveso_(de) 

164 "Indikativ": "indicative", 

165 "aktivum": "active", 

166 "singulár": "singular", 

167 "plurál": "plural", 

168 "prézens": "present", 

169 "préteritum": "preterite", 

170 "perfektum": ["present", "perfect"], 

171 "plusquamperfektum": ["past", "perfect"], 

172 "futurum 1": "future-i", 

173 "futurum 2": "future-ii", 

174 "konjunktiv I": "conjunctive-i", 

175 "konjunktiv II": "conjunctive-ii", 

176 "Imperativ": "imperative", 

177 "Infinitiv": "infinitive", 

178 "Příčestí činné (přítomné)": ["active", "participle", "present"], 

179 "silná": "strong", 

180 "slabá": "weak", 

181 "smíšená": "mixed", 

182 # Template:Adjektivum (nl) skloňování 

183 "společný": "common", 

184 "střední": "neuter", 

185 # Template:Adjektivum (nl) stupňování 

186 "neurčitý": "indefinite", 

187 "určitý": "definite", 

188 "Komparativ": "comparative", 

189 "Superlativ": "superlative", 

190 # Template:Sloveso (en) 

191 "infinitiv": "infinitive", 

192 "3. osoba": "third-person", 

193 "vid průběhový": ["present", "progressive"], 

194 # Template:Sloveso (fr) 

195 "Číslo jednotné": "singular", 

196 "Číslo množné": "plural", 

197 "1. je (j')": "first-person", 

198 "2. tu": "second-person", 

199 "3. il / elle": "third-person", 

200 "1. nous": "first-person", 

201 "2. vous": "second-person", 

202 "3. ils / elles": "third-person", 

203 "Jednoduché\nčasy": "simple", 

204 "Prézens": "present", 

205 "Imperfektum": "imperfect", 

206 "Passé simple": "past", 

207 "Futurum I": "future-i", 

208 "Složené\nčasy": "compound", 

209 "Passé composé": ["past", "compound"], 

210 "Plusquamperfektum": ["past", "perfect"], 

211 "Passé antérieur": ["past", "anterior"], 

212 "Futurum II": "future-ii", 

213 "Spojovací způsob": "subjunctive", 

214 "1. que je (j')": "first-person", 

215 "2. que tu": "second-person", 

216 "3. qu'il / elle": "third-person", 

217 "1. que nous": "first-person", 

218 "2. que vous": "second-person", 

219 "3. qu'ils / elles": "third-person", 

220 "Passé": "past", 

221 "Podmiňovací způsob": "conditional", 

222 "Číslo\n jednotné": "singular", 

223 "Přechodník": "transgressive", 

224 # Template:Sloveso (es) 

225 "způsob oznamovací": "indicative", 

226 "souminulý čas": "past", 

227 "minulý čas dokonavý": ["past", "perfective"], 

228 "budoucí čas": "future", 

229 "podmiňovací": "conditional", 

230 "způsob spojovací": "connective", 

231 "souminulý čas (ra)": "past", 

232 "souminulý čas (se)": "past", 

233 "způsob rozkazovací": "imperative", 

234 "kladný": "affirmative", 

235 "záporný": "negative", 

236 "neosobní tvary": "impersonal", 

237 "gerundium": "gerund", 

238 "příčestí": "participle", 

239 "příčestí minulé": ["past", "participle"], 

240} 

241 

242SOUND_TAGS = { 

243 "Pinyin": "Pinyin", 

244 "Bopomofo": "Bopomofo", 

245 "bopomofo": "Bopomofo", 

246 "hiragana": "hiragana", 

247 "romaji": "Rōmaji", 

248 "Jyutping": "Jyutping", 

249} 

250 

251 

252TAGS = {**LABEL_TAGS, **GENDER_TAGS, **TABLE_TAGS, **SOUND_TAGS} 

253 

254TOPICS = { 

255 "v alchymii": "alchemy", 

256 "v anatomii": "anatomy", 

257 "v antropologii": "anthropology", 

258 "v archeologii": "archaeology", 

259 "v architektuře": "architecture", 

260 "v astrologii": "astrology", 

261 "v bankovnictví": "banking", 

262 "v basketbalu": "basketball", 

263 "v biochemii": "biochemistry", 

264 "v biologii": "biology", 

265 "v botanice": "botany", 

266 "v buddhizmu": "Buddhism", 

267 "církevní": "ecclesiastical", 

268 "cirkusový slang": "circus", 

269 "v cukrovarnictví": "sugar-making", 

270 "v diplomacii": "diplomacy", 

271 "v dopravě": "transport", 

272 "dopravní slang": "transport", 

273 "drogový slang": "drugs", 

274 "v ekologii": "ecology", 

275 "v ekonomii": "economics", 

276 "v elektrotechnice": "electrical-engineering", 

277 "v energetice": "energy", 

278 "v entomologii": "entomology", 

279 "v epidemiologii": "epidemiology", 

280 # "v estetice": "", 

281 "v etnografii": "ethnography", 

282 "v lékárenství": "pharmacy", 

283 "ve filmu": "film", 

284 "ve filosofii": "philosophy", 

285 "ve finančnictví": "finance", 

286 "ve folklóru": "folklore", 

287 "ve fotografii": "photography", 

288 "ve fyzice": "physics", 

289 "ve fyziologii": "physiology", 

290 "v gastronomii": "gastronomy", 

291 "v genetice": "genetics", 

292 "v geodézii": "geodesy", 

293 "v geologii": "geology", 

294 "v geometrii": "geometry", 

295 "v historii": "history", 

296 "v ledním hokeji": "ice-hockey", 

297 "v hornictví": "mining", 

298 "hornický slang": "mining", 

299 "horolezecký slang": "mountaineering", 

300 "v hudbě": "music", 

301 "muzikantský slang": "music", 

302 "v hutnictví": "metallurgy", 

303 # "chatovací zkratka": "", 

304 "v chemii": "chemistry", 

305 # "v chodském nářečí": "", 

306 "v ichtyologii": "ichthyology", 

307 "v informatice": "computer-science", 

308 "internetový slang": "Internet", 

309 "v islámu": "Islam", 

310 "v jazykovědě": "linguistics", 

311 "v jaderné fyzice": "nuclear-physics", 

312 # "v kartářství": "", 

313 "v karetních hrách": "card-games", 

314 "karetní slang": "card-games", 

315 "keramika": "ceramics", 

316 "v knihovnictví": "librarianship", 

317 "v komunikaci": "communications", 

318 "v konspiračních teoriích": "conspiracy", 

319 # "v koželužství": "", 

320 "v krejčovství": "tailor", 

321 "v křesťanství": "Christianity", 

322 # "v kvalitářství": "", 

323 # "v kybernetice": "", 

324 "v lesnictví": "forestry", 

325 "v letectví": "aviation", 

326 "v lexikologii": "lexicology", 

327 "v literatuře": "literature", 

328 "v logice": "logic", 

329 "v loďařství": "shipbuilding", 

330 "v matematice": "mathematics", 

331 "v lékařství": "medicine", 

332 "v meteorologii": "meteorology", 

333 "v mezinárodním právu": "law", 

334 "v mineralogii": "mineralogy", 

335 "v mykologii": "mycology", 

336 "myslivecký slang": "hunting", 

337 "v mytologii": "mythology", 

338 "v náboženství": "religion", 

339 "v obchodním styku": "business", 

340 "v obuvnictví": "shoemaking", 

341 "v optice": "optics", 

342 "v pedagogice": "education", 

343 "v pivovarnictví": "brewing", 

344 "v plavbě": "sailing", 

345 "v pojišťovnictví": "insurance", 

346 "v politice": "politics", 

347 "policejní slang": "police", 

348 "v polygrafii": "printing", 

349 "v poštovnictví": "mail", 

350 "v potravinářství": "food", 

351 "v právu": "law", 

352 "v psychologii": "psychology", 

353 "v publicistice": "journalism", 

354 "v prostředí obchodu s nemovitostmi": "real-estate", 

355 "v rybářství": "fishing", 

356 "v římském právu": "law", 

357 "sexualita": "sexuality", 

358 "v sklářství": "glassmaking", 

359 "v sociologii": "sociology", 

360 "současným pravopisem": "orthography", 

361 "ve sportu": "sports", 

362 "sportovní slang": "sports", 

363 "ve statistice": "statistics", 

364 "ve stavebnictví": "construction", 

365 "ve stylistice": "stylistics", 

366 "v šermu": "fencing", 

367 "v technice": "technology", 

368 "technický slang": "technical", 

369 "televizní slang": "television", 

370 "v teologii": "theology", 

371 "v textilnictví": "textiles", 

372 "v truhlářství": "carpentry", 

373 "v typografii": "typography", 

374 "v umění": "arts", 

375 "v urbanismu": "urbanism", 

376 "ve včelařství": "beekeeping", 

377 "ve veterinářství": ["veterinary", "medicine"], 

378 "vězeňský slang": "prison", 

379 "vodácký slang": "boating", 

380 "v vodním stavitelství": ["hydraulics", "engineering"], 

381 "ve vojenství": "military", 

382 "vojenský slang": "military", 

383 "ve výpočetní technice": "computer-sciences", 

384 "ve vulkanologii": "volcanology", 

385 "ve výtvarnictví": "arts", 

386 "v zahradnictví": "horticulture", 

387 "zdravotní": "health", 

388 "zdravotnický slang": "medicine", 

389 "v zemědělství": "agriculture", 

390 "v geografii": "geography", 

391 "v zoologii": "zoology", 

392 "ve zvukařství": "sound-engineering", 

393 "železničářský slang": "railways", 

394 "žurnalisticky": "journalism", 

395} 

396 

397 

398def translate_raw_tags(data: WordEntry) -> None: 

399 raw_tags = [] 

400 for raw_tag in data.raw_tags: 

401 found_tag = False 

402 if raw_tag in TAGS and hasattr(data, "tags"): 

403 found_tag = True 

404 tr_tag = TAGS[raw_tag] 

405 if isinstance(tr_tag, str) and tr_tag not in data.tags: 

406 data.tags.append(tr_tag) 

407 elif isinstance(tr_tag, list): 407 ↛ 411line 407 didn't jump to line 411 because the condition on line 407 was always true

408 for tag in tr_tag: 

409 if tag not in data.tags: 409 ↛ 408line 409 didn't jump to line 408 because the condition on line 409 was always true

410 data.tags.append(tag) 

411 if raw_tag in TOPICS and hasattr(data, "topics"): 411 ↛ 412line 411 didn't jump to line 412 because the condition on line 411 was never true

412 found_tag = True 

413 topic = TOPICS[raw_tag] 

414 if isinstance(topic, str) and topic not in data.topics: 

415 data.topics.append(topic) 

416 elif isinstance(topic, list): 

417 for t in topic: 

418 if t not in data.topics: 

419 data.topics.append(t) 

420 if not found_tag: 

421 raw_tags.append(raw_tag) 

422 data.raw_tags = raw_tags