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

24 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2025-10-13 10:14 +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 "การแผลงเป็น\nอักษรโรมัน": "romanization", # Template:th-pron 

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

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

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

35 "US": "US", 

36 "UK": "UK", 

37 # Template:zh-pron 

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

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

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

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

42 "Xi'an": "Xi'an", 

43 "Guanzhong Pinyin": ["Guanzhong", "Pinyin"], 

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

45 "Cyrillic": "Cyrillic", 

46 "Wiktionary": "Wiktionary-specific", 

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

48 "Jyutping": "Jyutping", 

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

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

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

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

53 "BUC": "Foochow-Romanized", 

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

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

56 "POJ": "POJ", 

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

58 "Peng'im": "Peng'im", 

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

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

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

62 "เยล": "Yale", 

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

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

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

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

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

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

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

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

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

72 "Kienning Colloquial Romanized": "Kienning-Colloquial-Romanized", 

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

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

75 "Phofsit Daibuun": "Phofsit-Daibuun", 

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

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

78 "Sichuanese Pinyin": ["Sichuanese", "Pinyin"], 

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

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

81 "อู๋": "Wu", 

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

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

84} 

85 

86LABEL_TAGS = { 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

164 # Template:zh-mw 

165 # Module:zh/templates 

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

167 "แคะ": "Hakka", 

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

169 # Template:ru-noun+ 

170 "ช.": "masculine", 

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

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

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

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

175 # Template:zh-forms 

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

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

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

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

180 "obsolete": "obsolete", 

181 # Template:zh-dial 

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

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

184 "Written Standard Chinese": "Written-Standard-Chinese", 

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

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

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

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

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

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

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

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

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

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

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

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

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

198} 

199 

200 

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

202 

203TOPICS = { 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

337 "พิษ": "poison", 

338} 

339 

340 

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

342 raw_tags = [] 

343 for raw_tag in data.raw_tags: 

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

345 tr_tag = TAGS[raw_tag] 

346 if isinstance(tr_tag, str): 

347 data.tags.append(tr_tag) 

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

349 data.tags.extend(tr_tag) 

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

351 topic = TOPICS[raw_tag] 

352 if isinstance(topic, str): 

353 data.topics.append(topic) 

354 elif isinstance(topic, list): 

355 data.topics.extend(topic) 

356 else: 

357 raw_tags.append(raw_tag) 

358 data.raw_tags = raw_tags