Coverage for src / wiktextract / extractor / th / tags.py: 75%
26 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-12 08:09 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-12 08:09 +0000
1from .models import WordEntry
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}
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}
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 # Template:vi-ipa
90 "ฮานอย": "Hà-Nội",
91 "เว้": "Huế",
92 "นครโฮจิมินห์": "Saigon",
93 # Template:hi-ipa
94 "เดลี": "Delhi",
95 # Template:sa-ipa
96 "พระเวท": "Vedic",
97 "สันสกฤตคลาสสิก": "Classical-Sanskrit",
98}
100LABEL_TAGS = {
101 # https://th.wiktionary.org/wiki/มอดูล:labels/data
102 "คำย่อ": "abbreviation",
103 "อาการนาม": "abstract-noun",
104 "อักษรอ่านย่อ": "acronym",
105 "กรรตุวาจก": "active",
106 "สกรรม, อกรรม": "ambitransitive",
107 "มีชีวิต": "animate",
108 "บอกเล่า": "indicative",
109 "สมมุติ": "subjunctive",
110 "สั่ง": "imperative",
111 "คำกริยานุเคราะห์": "auxiliary",
112 "จำนวนเชิงการนับ": "cardinal",
113 "สมุหนาม": "collective",
114 "เพศรวม": "common",
115 "เปรียบเทียบได้": "comparable",
116 "เชื่อม": "copulative",
117 "นับได้": "countable",
118 "ทวิกรรม": "ditransitive",
119 "เพศหญิง": "feminine",
120 "สำนวน": "idiomatic",
121 "ไม่สมบูรณ์": "imperfective",
122 "คำอบุรุษกริยา": "impersonal",
123 "ในรูปเอกพจน์": "singular",
124 "ในรูปทวิพจน์": "dual",
125 "ในรูปพหูพจน์": "plural",
126 "ไม่มีชีวิต": "inanimate",
127 "ไม่ชี้เฉพาะ": "indefinite",
128 "อักษรย่อ": "initialism",
129 "อกรรม": "intransitive",
130 "สัทอักษรสากล": "IPA",
131 "เพศชาย": "masculine",
132 "เพศกลาง": "neuter",
133 "เปรียบเทียบไม่ได้": "not-comparable",
134 "เลียนเสียงธรรมชาติ": "onomatopoeic",
135 "จำนวนเชิงอันดับที่": "ordinal",
136 "พาร์ทิซิเพิล": "partitive",
137 "กรรมวาจก": "passive",
138 "สมบูรณ์": "perfect",
139 "พหูพจน์เท่านั้น": "plural-only",
140 "แสดงความเป็นเจ้าของ": "possessive",
141 "วลีภาคแสดง": "predicative",
142 "สะท้อน": "reflexive",
143 "เอกพจน์เท่านั้น": "singular-only",
144 "สภาว": "stative",
145 "สกรรม": "transitive",
146 "นับไม่ได้": "uncountable",
147 "โบราณ": "archaic",
148 "ภาษาเด็ก": "childish",
149 "ภาษาปาก": "colloquial",
150 "ล้าสมัย": "dated",
151 "นัยล้าสมัย": "dated",
152 "ดูหมิ่น": "derogatory",
153 "ภาษาถิ่น": "dialect",
154 "ในเชิงเปรียบเทียบ": "metaphoric",
155 "ทางการ": "formal",
156 "ขำขัน": "humorous",
157 "อติพจน์": "excessive",
158 "ไม่ทางการ": "informal",
159 "สแลงอินเทอร์เน็ต": ["Internet", "slang"],
160 "ไออาร์ซี": "IRC",
161 "ภาษาข่าว": "journalistic",
162 "ภาษาหนังสือ": "literary",
163 "คำสร้างใหม่": "neologism",
164 "ภาษาไม่มาตรฐาน": "nonstandard",
165 "เลิกใช้": "obsolete",
166 "ล่วงเกิน": "offensive",
167 "ร้อยกรอง": "poetic",
168 "สุภาพ": "polite",
169 "ไม่ควรใช้": "proscribed",
170 "พบได้ยาก": "rare",
171 # "ราชาศัพท์": "",
172 "สแลง": "slang",
173 # "ศัพท์เฉพาะ": "",
174 "หยาบคาย": "vulgar",
175 "กรีซโบราณ": "Ancient Greek",
176 "โรมโบราณ": "Ancient Rome",
177 "สะกดผิด": "misspelling",
178 # Template:zh-mw
179 # Module:zh/templates
180 "กั้น": "Gan",
181 "แคะ": "Hakka",
182 "จิ้น": "Jin",
183 # Template:ru-noun+
184 "ช.": "masculine",
185 "อชีว.": "inanimate",
186 "สัมพันธการก": "genitive",
187 "กรรตุการกพหูพจน์": ["nominative", "plural"],
188 "สัมพันธการกพหูพจน์": ["genitive", "plural"],
189 # Template:zh-forms
190 "ตัวเต็ม": "Traditional-Chinese",
191 "ตัวย่อ": "Simplified-Chinese",
192 "ตัวย่อรอบสอง": "Second-Round-Simplified-Chinese",
193 "รูปแบบอื่น": "alternative",
194 "obsolete": "obsolete",
195 # Template:zh-dial
196 "คลาสสิก": "Classical-Chinese",
197 "Written Vernacular Chinese": "Written-vernacular-Chinese",
198 "Written Standard Chinese": "Written-Standard-Chinese",
199 "จีนกลางตะวันออกเฉียงเหนือ": "Northeastern-Mandarin",
200 "จีนกลางแบบจี้หลู่": "Jilu-Mandarin",
201 "จีนกลางแบบเจียวเหลียว": "Jiaoliao-Mandarin",
202 "จีนกลาง": "Central-Plains-Mandarin",
203 "จีนกลางแบบหลันอิ๋น": "Lanyin-Mandarin",
204 "จีนกลางตะวันตกเฉียงใต้": "Southwestern-Mandarin",
205 "จีนกลางแบบเจียงหวย": "Jianghuai-Mandarin",
206 "ฮุ่ยโจว": "Huizhou",
207 "หมิ่นแบบผูเซียน": "Puxian-Min",
208 "หมิ่นตอนกลาง": "Central-Min",
209 "หมิ่นแบบจงซัน": "Zhongshan-Min",
210 "ผิงใต้": "Southern-Pinghua",
211 "ผิงเหนือ": "Northern-Pinghua",
212 # Template:en-noun
213 "พหูพจน์": "plural",
214 # Template:en-verb
215 "บุรุษที่สามเอกพจน์ปัจจุบันกาล": ["present", "singular", "third-person"],
216 "รูปกริยาขยายปัจจุบันกาล": ["participle", "present"],
217 "อดีตกาล": "past",
218 "รูปกริยาขยายอดีตกาล": ["participle", "past"],
219 "อดีตกาลและรูปกริยาขยายอดีตกาล": ["participle", "past"],
220 # Template:en-adj
221 "ขั้นกว่า": "comparative",
222 "ขั้นสุด": "superlative",
223 # Template:en-pron
224 "ตัวกำหนดเจ้าของ": ["determiner", "possessive"],
225 "สรรพนามเจ้าของ": ["possessive", "pronoun"],
226 "สะท้อนเอกพจน์": ["reflexive", "singular"],
227 "สะท้อนพหูพจน์": ["reflexive", "plural"],
228 # Template:eo-head
229 "กรรมการกเอกพจน์": ["accusative", "singular"],
230 "กรรมการกพหูพจน์": ["accusative", "plural"],
231 # Template:nl-noun
232 "ตัวบอกความเล็ก": "diminutive",
233 # Template:fr-noun
234 "เพศชายพหูพจน์": ["masculine", "plural"],
235 "เพศหญิงพหูพจน์": ["feminine", "plural"],
236 # Template:es-adj
237 "เพศชายและเพศหญิงพหูพจน์": ["masculine", "feminine", "plural"],
238 # มอดูล:Jpan-headword
239 "สกรรมหรืออกรรม": ["transitive", "intransitive"],
240 "ต้นเค้าศัพท์": "stem",
241 "โกดัง": "godan",
242 "อิจิดัง": "ichidan",
243 "ซูรุ": "suru",
244 "คูรุ": "kuru",
245 "-อิ": "-i",
246 "-นะ": "-na",
247 "โยดัง": "yodan",
248 "นิดัง": "nidan",
249 "-ริ": "-ri",
250 "-เซะ": "-se",
251 "-โกะ": "-ko",
252 "-ง": "-n",
253 "-นาริ": "-nari",
254 "-ตาริ": "-tari",
255 "-กุ": "-ku",
256 "-ชิกุ": "-shiku",
257 "-กะ": "-ka",
258 "adnominal": "adnominal",
259 "adverbial": "adverbial",
260 # Template:ko-noun
261 "ฮันกึล": "hangeul",
262 "ฮันจา": "hanja",
263 # Template:ja-kanjitab
264 "คีวจิไต": "kyūjitai",
265 # Template:hi-noun
266 "การสะกดภาษาอูรดู": "Urdu",
267 "เป็นทางการ": "formal",
268}
271TAGS = {**EXAMPLE_TAGS, **TRANSLATION_TAGS, **SOUND_TAGS, **LABEL_TAGS}
273TOPICS = {
274 # https://th.wiktionary.org/wiki/มอดูล:labels/data/topical
275 "การบัญชี": "accounting",
276 "สวนศาสตร์": "acoustics",
277 "อากาศยานศาสตร์": "aeronautics",
278 "เกษตรกรรม": "agriculture",
279 "อากาศยาน": "aircraft",
280 "การเล่นแร่แปรธาตุ": "alchemy",
281 "เครื่องดื่มแอลกอฮอล์": "alcohol",
282 "โรคพิษสุรา": "alcoholism",
283 "พีชคณิต": "algebra",
284 "เรขาคณิตเชิงพีชคณิต": "geometry",
285 "ทอพอโลยีเชิงพีชคณิต": "topology",
286 "แพทยศาสตร์ทางเลือก": "alternative-medicine",
287 "วิทยุสมัครเล่น": "radio",
288 "อเมริกันฟุตบอล": "football",
289 "เคมีวิเคราะห์": "chemistry",
290 "อนาธิปไตย": "anarchism",
291 "กายวิภาคศาสตร์": "anatomy",
292 "แอนิเมชัน": "anime",
293 "มานุษยวิทยา": "anthropology",
294 "วิทยาแมงมุม": "arachnology",
295 "โบราณคดี": "archaeology",
296 "การยิงธนู": "archery",
297 "สถาปัตยกรรม": "architecture",
298 "เลขคณิต": "arithmetic",
299 "ศิลปะ": "arts",
300 "ปัญญาประดิษฐ์": "AI",
301 "โหราศาสตร์": "astrology",
302 "อวกาศยานศาสตร์": "astronautics",
303 "ดาราศาสตร์": "astronomy",
304 "ฟิสิกส์ดาราศาสตร์": "astrophysics",
305 "กรีฑา": "athletics",
306 "ยานยนต์": "automotive",
307 "การบิน": "aviation",
308 "วิทยาแบคทีเรีย": "bacteria",
309 "แบดมินตัน": "badminton",
310 "กีฬาใช้บอล": "ball-games",
311 "การธนาคาร": "banking",
312 "เบสบอล": ["baseball", "ball-games"],
313 "บาสเกตบอล": ["basketball", "ball-games"],
314 "บีดีเอสเอ็ม": "BDSM",
315 "เบียร์": ["beer", "beverages"],
316 "ไบเบิล": ["biblical", "religion"],
317 "บิงโก": ["bingo", "games"],
318 "ชีวเคมี": "biochemistry",
319 "ชีววิทยา": "biology",
320 "เกมกระดาน": "board-games",
321 "พฤกษศาสตร์": "botany",
322 "มวย": ["boxing", "martial-arts"],
323 "ไบรโอโลยี": ["bryology", "botany"],
324 "ศาสนาพุทธ": ["Buddhism", "religion"],
325 "ธุรกิจ": "business",
326 "แคลคูลัส": ["calculus", "mathematics"],
327 "เกมไพ่": "card-games",
328 "หทัยวิทยา": ["cardiology", "medicine"],
329 "การทำแผนที่": ["cartography", "geography"],
330 # "ธาตุเคมี": "",
331 "เคมี": "chemistry",
332 "หมากรุกสากล": ["chess", "board-games"],
333 "ศาสนาคริสต์": "Christianity",
334 "การถ่ายภาพยนตร์": ["cinematography", "film"],
335 "ภาษาศาสตร์คอมพิวเตอร์": ["computing", "linguistics"],
336 "ภาษาคอมพิวเตอร์": "computing",
337 "วิทยาการคอมพิวเตอร์": "computing",
338 "การคอมพิวเตอร์": "computing",
339 "ศาสนาขงจื๊อ": "Confucianism",
340 "ตัจวิทยา": ["dermatology", "medicine"],
341 "เศรษฐศาสตร์": "economics",
342 "การศึกษา": "education",
343 "ไฟฟ้า": "electricity",
344 "แม่เหล็กไฟฟ้า": "electromagnetism",
345 "อิเล็กทรอนิกส์": ["electronics", "electricity"],
346 "จริยศาสตร์": ["ethics", "philosophy"],
347 "การออกกำลังกาย": ["exercise", "sports"],
348 "ภูมิศาสตร์": "geography",
349 "ธรณีวิทยา": "geology",
350 "เรขาคณิต": "geometry",
351 "กอล์ฟ": ["golf", "sports"],
352 "ไวยากรณ์": ["grammar", "linguistics"],
353 "ศาสนาฮินดู": ["Hinduism", "religion"],
354 "เทคโนโลยีสารสนเทศ": "computing",
355 "อินเทอร์เน็ต": "Internet",
356 "ศาสนาอิสลาม": "Islam",
357 "กฎหมาย": "law",
358 "ศัพทานุกรมศาสตร์": ["lexicography", "linguistics"],
359 "แอลจีบีที": "LGBT",
360 "ภาษาศาสตร์": "linguistics",
361 "วรรณกรรม": "literature",
362 "ตรรกศาสตร์": "logic",
363 "คณิตศาสตร์": "mathematics",
364 "แพทยศาสตร์": "medicine",
365 "อุตุนิยมวิทยา": "meteorology",
366 "การทหาร": "military",
367 "วิทยาแร่": "mineralogy",
368 "ราชาธิปไตย": "monarchy",
369 "ดนตรี": "music",
370 "นาโนเทคโนโลยี": ["nanotechnology", "engineering"],
371 "การเดินเรือ": "nautical",
372 "กษาปณวิทยา": ["numismatics", "hobbies"],
373 "โภชนาการ": "nutrition",
374 "ทัศนศาสตร์": "optics",
375 "พยาธิวิทยา": "pathology",
376 "เภสัชวิทยา": "pharmacology",
377 "ปรัชญา": "philosophy",
378 "สัทศาสตร์": "phonetics",
379 "สัทวิทยา": "phonology",
380 "คมีเชิงฟิสิกส์": "chemistry",
381 "ฟิสิกส์": "physics",
382 "สรีรวิทยา": "physiology",
383 "การเมือง": "politics",
384 "สื่อลามก": "pornography",
385 "การเขียนโปรแกรม": "programming",
386 "สัทสัมพันธ์": ["prosody", "phonology"],
387 "ศาสนา": "religion",
388 "วิทยาการหุ่นยนต์": ["robotics", "mechanical-engineering computing"],
389 "นิยายวิทยาศาสตร์": "science-fiction",
390 "วิทยาศาสตร์": "sciences",
391 "เพศวิถี": "sexuality",
392 # "การเดินเรือ": "",
393 "ซอกเกอร์": ["soccer", "ball-games"],
394 "สังคมศาสตร์": "social-science",
395 "ภาษาศาสตร์สังคม": ["sociolinguistics", "linguistics sociology"],
396 "สังคมวิทยา": "sociology",
397 "กีฬา": "sports",
398 "สถิติศาสตร์": "statistics",
399 "ศาสนาเต๋า": "Taoism",
400 "อนุกรมวิธาน": "taxonomy",
401 "เทคโนโลยี": "technology",
402 "ยูนิโคด": "Unicode",
403 "ผัก": ["vegetable", "food"],
404 "ไวน์": ["wine", "oenology"],
405 "สงครามโลกครั้งที่หนึ่ง": "World War I",
406 "สงครามโลกครั้งที่สอง": "World War II",
407 "พิษ": "poison",
408}
411def translate_raw_tags(data: WordEntry) -> None:
412 raw_tags = []
413 for raw_tag in data.raw_tags:
414 if raw_tag in TAGS and hasattr(data, "tags"):
415 tr_tag = TAGS[raw_tag]
416 if isinstance(tr_tag, str) and tr_tag not in data.tags:
417 data.tags.append(tr_tag)
418 elif isinstance(tr_tag, list):
419 for tag in tr_tag:
420 if tag not in data.tags: 420 ↛ 419line 420 didn't jump to line 419 because the condition on line 420 was always true
421 data.tags.append(tag)
422 elif raw_tag in TOPICS and hasattr(data, "topics"): 422 ↛ 423line 422 didn't jump to line 423 because the condition on line 422 was never true
423 topic = TOPICS[raw_tag]
424 if isinstance(topic, str):
425 data.topics.append(topic)
426 elif isinstance(topic, list):
427 data.topics.extend(topic)
428 else:
429 raw_tags.append(raw_tag)
430 data.raw_tags = raw_tags