Coverage for src/wiktextract/extractor/th/tags.py: 75%

26 statements  

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

1from .models import WordEntry 

2 

3EXAMPLE_TAGS = { 

4 # แม่แบบ:zh-x, มอดูล:zh-usex/data 

5 "MSC": "Modern-Standard-Chinese", 

6 "Pinyin": "Pinyin", 

7 "trad.": "Traditional-Chinese", 

8 "simp.": "Simplified-Chinese", 

9} 

10 

11TRANSLATION_TAGS = { 

12 # แม่แบบ:t 

13 # https://th.wiktionary.org/wiki/มอดูล:gender_and_number/data 

14 "ญ.": "feminine", 

15 "ช.": "masculine", 

16 "ก.": "neuter", 

17 "ร.": "common", 

18 "ชีว.": "animate", 

19 "อชีว.": "inanimate", 

20 "สัต.": "animal-not-person", 

21 "บุค.": "personal", 

22 "อบุค.": "impersonal", 

23 "เอก.": "singular", 

24 "ทวิ.": "dual", 

25 "พหู.": "plural", 

26 "ไม่สมบูรณ์": "imperfective", 

27 "สมบูรณ์": "perfective", 

28} 

29 

30SOUND_TAGS = { 

31 # Template:th-pron 

32 "การแผลงเป็น": "romanization", 

33 "อักษรโรมัน": "romanization", 

34 "ไพบูลย์พับบลิชชิง": "Paiboon", 

35 "ราชบัณฑิตยสภา": "Royal-Institute", 

36 "การแบ่งพยางค์": "phoneme", 

37 "US": "US", 

38 "UK": "UK", 

39 "เสียงสมาส": "compound", 

40 "ไม่ตามอักขรวิธี": "unorthographical", 

41 "เสียงสระสั้น": "short", 

42 # Template:zh-pron 

43 "จีนกลาง": "Mandarin", 

44 "มาตรฐาน": "Standard", 

45 "พินอิน": "Pinyin", 

46 "จู้อิน": "Bopomofo", 

47 "Xi'an": "Xi'an", 

48 "Guanzhong Pinyin": ["Guanzhong", "Pinyin"], 

49 "ดุงกาน": "Dungan", 

50 "Cyrillic": "Cyrillic", 

51 "Wiktionary": "Wiktionary-specific", 

52 "กวางตุ้ง": "Cantonese", 

53 "Jyutping": "Jyutping", 

54 "PFS": "Phak-fa-su", 

55 "หมิ่นเหนือ": "Min-Bei", 

56 "KCR": "Kienning-Colloquial-Romanized", 

57 "หมิ่นตะวันออก": "Min-Dong", 

58 "BUC": "Foochow-Romanized", 

59 "หมิ่นใต้": "Min-Nan", 

60 "ฮกเกี้ยน": "Hokkien", 

61 "POJ": "POJ", 

62 "แต้จิ๋ว": "Teochew", 

63 "Peng'im": "Peng'im", 

64 "จีนมาตรฐาน": "Standard-Chinese", 

65 "ทงย่งพินอิน": "Tongyong-Pinyin", 

66 "เวด-ไจลส์": "Wade–Giles", 

67 "เยล": "Yale", 

68 "กั๋วยฺหวี่หลัวหม่าจื้อ": "Gwoyeu-Romatsyh", 

69 "พัลลาดีอุส": "Palladius", 

70 "สัทอักษรสากลจีนวิทยา": "Sinological-IPA", 

71 "กวางตุ้งมาตรฐาน": "Standard-Cantonese", 

72 "กว่างโจว–ฮ่องกง": ["Guangzhou", "Hong Kong"], 

73 "ยฺหวืดเพ็ง": "Jyutping", 

74 "เพ็งยั้ม": ["Cantonese", "Pinyin"], 

75 "อักษรโรมันมณฑลกวางตุ้ง": "Guangdong-Romanization", 

76 "Pha̍k-fa-sṳ": "Phak-fa-su", 

77 "Kienning Colloquial Romanized": "Kienning-Colloquial-Romanized", 

78 "Pe̍h-ōe-jī": "POJ", 

79 "Tâi-lô": "Tai-lo", 

80 "Phofsit Daibuun": "Phofsit-Daibuun", 

81 "เสฉวน": "Sichuan", 

82 "เฉิงตู": "Chengdu", 

83 "Sichuanese Pinyin": ["Sichuanese", "Pinyin"], 

84 "Scuanxua Ladinxua Xin Wenz": "Latinxua-Sin-Wenz", 

85 "Pe̍h-ōe-jī-like": "POJ", 

86 "อู๋": "Wu", 

87 "เซียง": "Xiang", 

88 "Wiktionary Romanisation": ["Wiktionary-specific", "romanization"], 

89} 

90 

91LABEL_TAGS = { 

92 # https://th.wiktionary.org/wiki/มอดูล:labels/data 

93 "คำย่อ": "abbreviation", 

94 "อาการนาม": "abstract-noun", 

95 "อักษรอ่านย่อ": "acronym", 

96 "กรรตุวาจก": "active", 

97 "สกรรม, อกรรม": "ambitransitive", 

98 "มีชีวิต": "animate", 

99 "บอกเล่า": "indicative", 

100 "สมมุติ": "subjunctive", 

101 "สั่ง": "imperative", 

102 "คำกริยานุเคราะห์": "auxiliary", 

103 "จำนวนเชิงการนับ": "cardinal", 

104 "สมุหนาม": "collective", 

105 "เพศรวม": "common", 

106 "เปรียบเทียบได้": "comparable", 

107 "เชื่อม": "copulative", 

108 "นับได้": "countable", 

109 "ทวิกรรม": "ditransitive", 

110 "เพศหญิง": "feminine", 

111 "สำนวน": "idiomatic", 

112 "ไม่สมบูรณ์": "imperfective", 

113 "คำอบุรุษกริยา": "impersonal", 

114 "ในรูปเอกพจน์": "singular", 

115 "ในรูปทวิพจน์": "dual", 

116 "ในรูปพหูพจน์": "plural", 

117 "ไม่มีชีวิต": "inanimate", 

118 "ไม่ชี้เฉพาะ": "indefinite", 

119 "อักษรย่อ": "initialism", 

120 "อกรรม": "intransitive", 

121 "สัทอักษรสากล": "IPA", 

122 "เพศชาย": "masculine", 

123 "เพศกลาง": "neuter", 

124 "เปรียบเทียบไม่ได้": "not-comparable", 

125 "เลียนเสียงธรรมชาติ": "onomatopoeic", 

126 "จำนวนเชิงอันดับที่": "ordinal", 

127 "พาร์ทิซิเพิล": "partitive", 

128 "กรรมวาจก": "passive", 

129 "สมบูรณ์": "perfect", 

130 "พหูพจน์เท่านั้น": "plural-only", 

131 "แสดงความเป็นเจ้าของ": "possessive", 

132 "วลีภาคแสดง": "predicative", 

133 "สะท้อน": "reflexive", 

134 "เอกพจน์เท่านั้น": "singular-only", 

135 "สภาว": "stative", 

136 "สกรรม": "transitive", 

137 "นับไม่ได้": "uncountable", 

138 "โบราณ": "archaic", 

139 "ภาษาเด็ก": "childish", 

140 "ภาษาปาก": "colloquial", 

141 "ล้าสมัย": "dated", 

142 "นัยล้าสมัย": "dated", 

143 "ดูหมิ่น": "derogatory", 

144 "ภาษาถิ่น": "dialect", 

145 "ในเชิงเปรียบเทียบ": "metaphoric", 

146 "ทางการ": "formal", 

147 "ขำขัน": "humorous", 

148 "อติพจน์": "excessive", 

149 "ไม่ทางการ": "informal", 

150 "สแลงอินเทอร์เน็ต": ["Internet", "slang"], 

151 "ไออาร์ซี": "IRC", 

152 "ภาษาข่าว": "journalistic", 

153 "ภาษาหนังสือ": "literary", 

154 "คำสร้างใหม่": "neologism", 

155 "ภาษาไม่มาตรฐาน": "nonstandard", 

156 "เลิกใช้": "obsolete", 

157 "ล่วงเกิน": "offensive", 

158 "ร้อยกรอง": "poetic", 

159 "สุภาพ": "polite", 

160 "ไม่ควรใช้": "proscribed", 

161 "พบได้ยาก": "rare", 

162 # "ราชาศัพท์": "", 

163 "สแลง": "slang", 

164 # "ศัพท์เฉพาะ": "", 

165 "หยาบคาย": "vulgar", 

166 "กรีซโบราณ": "Ancient Greek", 

167 "โรมโบราณ": "Ancient Rome", 

168 "สะกดผิด": "misspelling", 

169 # Template:zh-mw 

170 # Module:zh/templates 

171 "กั้น": "Gan", 

172 "แคะ": "Hakka", 

173 "จิ้น": "Jin", 

174 # Template:ru-noun+ 

175 "ช.": "masculine", 

176 "อชีว.": "inanimate", 

177 "สัมพันธการก": "genitive", 

178 "กรรตุการกพหูพจน์": ["nominative", "plural"], 

179 "สัมพันธการกพหูพจน์": ["genitive", "plural"], 

180 # Template:zh-forms 

181 "ตัวเต็ม": "Traditional-Chinese", 

182 "ตัวย่อ": "Simplified-Chinese", 

183 "ตัวย่อรอบสอง": "Second-Round-Simplified-Chinese", 

184 "รูปแบบอื่น": "alternative", 

185 "obsolete": "obsolete", 

186 # Template:zh-dial 

187 "คลาสสิก": "Classical-Chinese", 

188 "Written Vernacular Chinese": "Written-vernacular-Chinese", 

189 "Written Standard Chinese": "Written-Standard-Chinese", 

190 "จีนกลางตะวันออกเฉียงเหนือ": "Northeastern-Mandarin", 

191 "จีนกลางแบบจี้หลู่": "Jilu-Mandarin", 

192 "จีนกลางแบบเจียวเหลียว": "Jiaoliao-Mandarin", 

193 "จีนกลาง": "Central-Plains-Mandarin", 

194 "จีนกลางแบบหลันอิ๋น": "Lanyin-Mandarin", 

195 "จีนกลางตะวันตกเฉียงใต้": "Southwestern-Mandarin", 

196 "จีนกลางแบบเจียงหวย": "Jianghuai-Mandarin", 

197 "ฮุ่ยโจว": "Huizhou", 

198 "หมิ่นแบบผูเซียน": "Puxian-Min", 

199 "หมิ่นตอนกลาง": "Central-Min", 

200 "หมิ่นแบบจงซัน": "Zhongshan-Min", 

201 "ผิงใต้": "Southern-Pinghua", 

202 "ผิงเหนือ": "Northern-Pinghua", 

203 # Template:en-noun 

204 "พหูพจน์": "plural", 

205 # Template:en-verb 

206 "บุรุษที่สามเอกพจน์ปัจจุบันกาล": ["present", "singular", "third-person"], 

207 "รูปกริยาขยายปัจจุบันกาล": ["participle", "present"], 

208 "อดีตกาล": "past", 

209 "รูปกริยาขยายอดีตกาล": ["participle", "past"], 

210 # Template:en-adj 

211 "ขั้นกว่า": "comparative", 

212 "ขั้นสุด": "superlative", 

213 # Template:en-pron 

214 "ตัวกำหนดเจ้าของ": ["determiner", "possessive"], 

215 "สรรพนามเจ้าของ": ["possessive", "pronoun"], 

216 "สะท้อนเอกพจน์": ["reflexive", "singular"], 

217 "สะท้อนพหูพจน์": ["reflexive", "plural"], 

218 # Template:eo-head 

219 "กรรมการกเอกพจน์": ["accusative", "singular"], 

220 "กรรมการกพหูพจน์": ["accusative", "plural"], 

221 # Template:nl-noun 

222 "ตัวบอกความเล็ก": "diminutive", 

223 # Template:fr-noun 

224 "เพศชายพหูพจน์": ["masculine", "plural"], 

225 "เพศหญิงพหูพจน์": ["feminine", "plural"], 

226 # Template:es-adj 

227 "เพศชายและเพศหญิงพหูพจน์": ["masculine", "feminine", "plural"], 

228} 

229 

230 

231TAGS = {**EXAMPLE_TAGS, **TRANSLATION_TAGS, **SOUND_TAGS, **LABEL_TAGS} 

232 

233TOPICS = { 

234 # https://th.wiktionary.org/wiki/มอดูล:labels/data/topical 

235 "การบัญชี": "accounting", 

236 "สวนศาสตร์": "acoustics", 

237 "อากาศยานศาสตร์": "aeronautics", 

238 "เกษตรกรรม": "agriculture", 

239 "อากาศยาน": "aircraft", 

240 "การเล่นแร่แปรธาตุ": "alchemy", 

241 "เครื่องดื่มแอลกอฮอล์": "alcohol", 

242 "โรคพิษสุรา": "alcoholism", 

243 "พีชคณิต": "algebra", 

244 "เรขาคณิตเชิงพีชคณิต": "geometry", 

245 "ทอพอโลยีเชิงพีชคณิต": "topology", 

246 "แพทยศาสตร์ทางเลือก": "alternative-medicine", 

247 "วิทยุสมัครเล่น": "radio", 

248 "อเมริกันฟุตบอล": "football", 

249 "เคมีวิเคราะห์": "chemistry", 

250 "อนาธิปไตย": "anarchism", 

251 "กายวิภาคศาสตร์": "anatomy", 

252 "แอนิเมชัน": "anime", 

253 "มานุษยวิทยา": "anthropology", 

254 "วิทยาแมงมุม": "arachnology", 

255 "โบราณคดี": "archaeology", 

256 "การยิงธนู": "archery", 

257 "สถาปัตยกรรม": "architecture", 

258 "เลขคณิต": "arithmetic", 

259 "ศิลปะ": "arts", 

260 "ปัญญาประดิษฐ์": "AI", 

261 "โหราศาสตร์": "astrology", 

262 "อวกาศยานศาสตร์": "astronautics", 

263 "ดาราศาสตร์": "astronomy", 

264 "ฟิสิกส์ดาราศาสตร์": "astrophysics", 

265 "กรีฑา": "athletics", 

266 "ยานยนต์": "automotive", 

267 "การบิน": "aviation", 

268 "วิทยาแบคทีเรีย": "bacteria", 

269 "แบดมินตัน": "badminton", 

270 "กีฬาใช้บอล": "ball-games", 

271 "การธนาคาร": "banking", 

272 "เบสบอล": ["baseball", "ball-games"], 

273 "บาสเกตบอล": ["basketball", "ball-games"], 

274 "บีดีเอสเอ็ม": "BDSM", 

275 "เบียร์": ["beer", "beverages"], 

276 "ไบเบิล": ["biblical", "religion"], 

277 "บิงโก": ["bingo", "games"], 

278 "ชีวเคมี": "biochemistry", 

279 "ชีววิทยา": "biology", 

280 "เกมกระดาน": "board-games", 

281 "พฤกษศาสตร์": "botany", 

282 "มวย": ["boxing", "martial-arts"], 

283 "ไบรโอโลยี": ["bryology", "botany"], 

284 "ศาสนาพุทธ": ["Buddhism", "religion"], 

285 "ธุรกิจ": "business", 

286 "แคลคูลัส": ["calculus", "mathematics"], 

287 "เกมไพ่": "card-games", 

288 "หทัยวิทยา": ["cardiology", "medicine"], 

289 "การทำแผนที่": ["cartography", "geography"], 

290 # "ธาตุเคมี": "", 

291 "เคมี": "chemistry", 

292 "หมากรุกสากล": ["chess", "board-games"], 

293 "ศาสนาคริสต์": "Christianity", 

294 "การถ่ายภาพยนตร์": ["cinematography", "film"], 

295 "ภาษาศาสตร์คอมพิวเตอร์": ["computing", "linguistics"], 

296 "ภาษาคอมพิวเตอร์": "computing", 

297 "วิทยาการคอมพิวเตอร์": "computing", 

298 "การคอมพิวเตอร์": "computing", 

299 "ศาสนาขงจื๊อ": "Confucianism", 

300 "ตัจวิทยา": ["dermatology", "medicine"], 

301 "เศรษฐศาสตร์": "economics", 

302 "การศึกษา": "education", 

303 "ไฟฟ้า": "electricity", 

304 "แม่เหล็กไฟฟ้า": "electromagnetism", 

305 "อิเล็กทรอนิกส์": ["electronics", "electricity"], 

306 "จริยศาสตร์": ["ethics", "philosophy"], 

307 "การออกกำลังกาย": ["exercise", "sports"], 

308 "ภูมิศาสตร์": "geography", 

309 "ธรณีวิทยา": "geology", 

310 "เรขาคณิต": "geometry", 

311 "กอล์ฟ": ["golf", "sports"], 

312 "ไวยากรณ์": ["grammar", "linguistics"], 

313 "ศาสนาฮินดู": ["Hinduism", "religion"], 

314 "เทคโนโลยีสารสนเทศ": "computing", 

315 "อินเทอร์เน็ต": "Internet", 

316 "ศาสนาอิสลาม": "Islam", 

317 "กฎหมาย": "law", 

318 "ศัพทานุกรมศาสตร์": ["lexicography", "linguistics"], 

319 "แอลจีบีที": "LGBT", 

320 "ภาษาศาสตร์": "linguistics", 

321 "วรรณกรรม": "literature", 

322 "ตรรกศาสตร์": "logic", 

323 "คณิตศาสตร์": "mathematics", 

324 "แพทยศาสตร์": "medicine", 

325 "อุตุนิยมวิทยา": "meteorology", 

326 "การทหาร": "military", 

327 "วิทยาแร่": "mineralogy", 

328 "ราชาธิปไตย": "monarchy", 

329 "ดนตรี": "music", 

330 "นาโนเทคโนโลยี": ["nanotechnology", "engineering"], 

331 "การเดินเรือ": "nautical", 

332 "กษาปณวิทยา": ["numismatics", "hobbies"], 

333 "โภชนาการ": "nutrition", 

334 "ทัศนศาสตร์": "optics", 

335 "พยาธิวิทยา": "pathology", 

336 "เภสัชวิทยา": "pharmacology", 

337 "ปรัชญา": "philosophy", 

338 "สัทศาสตร์": "phonetics", 

339 "สัทวิทยา": "phonology", 

340 "คมีเชิงฟิสิกส์": "chemistry", 

341 "ฟิสิกส์": "physics", 

342 "สรีรวิทยา": "physiology", 

343 "การเมือง": "politics", 

344 "สื่อลามก": "pornography", 

345 "การเขียนโปรแกรม": "programming", 

346 "สัทสัมพันธ์": ["prosody", "phonology"], 

347 "ศาสนา": "religion", 

348 "วิทยาการหุ่นยนต์": ["robotics", "mechanical-engineering computing"], 

349 "นิยายวิทยาศาสตร์": "science-fiction", 

350 "วิทยาศาสตร์": "sciences", 

351 "เพศวิถี": "sexuality", 

352 # "การเดินเรือ": "", 

353 "ซอกเกอร์": ["soccer", "ball-games"], 

354 "สังคมศาสตร์": "social-science", 

355 "ภาษาศาสตร์สังคม": ["sociolinguistics", "linguistics sociology"], 

356 "สังคมวิทยา": "sociology", 

357 "กีฬา": "sports", 

358 "สถิติศาสตร์": "statistics", 

359 "ศาสนาเต๋า": "Taoism", 

360 "อนุกรมวิธาน": "taxonomy", 

361 "เทคโนโลยี": "technology", 

362 "ยูนิโคด": "Unicode", 

363 "ผัก": ["vegetable", "food"], 

364 "ไวน์": ["wine", "oenology"], 

365 "สงครามโลกครั้งที่หนึ่ง": "World War I", 

366 "สงครามโลกครั้งที่สอง": "World War II", 

367 "พิษ": "poison", 

368} 

369 

370 

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

372 raw_tags = [] 

373 for raw_tag in data.raw_tags: 

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

375 tr_tag = TAGS[raw_tag] 

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

377 data.tags.append(tr_tag) 

378 elif isinstance(tr_tag, list): 

379 for tag in tr_tag: 

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

381 data.tags.append(tag) 

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

383 topic = TOPICS[raw_tag] 

384 if isinstance(topic, str): 

385 data.topics.append(topic) 

386 elif isinstance(topic, list): 

387 data.topics.extend(topic) 

388 else: 

389 raw_tags.append(raw_tag) 

390 data.raw_tags = raw_tags