Coverage for src/wiktextract/extractor/pt/tags.py: 90%
20 statements
« prev ^ index » next coverage.py v7.6.10, created at 2024-12-27 08:07 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2024-12-27 08:07 +0000
1from .models import WordEntry
3# Predefinição:gramática
4HEAD_LINE_TAGS = {
5 "masculino": "masculine",
6 "feminino": "feminine",
7 "género comum": "common",
8 "dois géneros": "dual",
9 "comum aos dois géneros": ["common", "dual"],
10 "neutro": "neutral",
11 "masculino plural": ["masculine", "plural"],
12 "masculino singular": ["masculine", "singular"],
13 "masculino de dois números": "masculine",
14 "masculino comum aos dois números": ["masculine", "common"],
15 "masculino invariável": ["masculine", "invariable"],
16 "masculino dual": ["masculine", "dual"],
17 "feminino plural": ["feminine", "plural"],
18 "feminino singular": ["feminine", "singular"],
19 "feminino de dois números": "feminine",
20 "feminino comum aos dois números": ["feminine", "common"],
21 "feminino invariável": ["feminine", "invariable"],
22 "feminino dual": ["feminine", "dual"],
23 "género comum e plural": ["common", "plural"],
24 "género comum e singular": ["common", "singular"],
25 "género comum e comum aos dois números": "common",
26 "dois géneros plural": "plural",
27 "dois géneros singular": "singular",
28 "comum aos dois géneros plural": ["common", "plural"],
29 "comum aos dois géneros singular": ["common", "singular"],
30 "comum aos dois géneros e aos dois números": "common",
31 "neutro plural": ["neutral", "plural"],
32 "neutro singular": ["neutral", "singular"],
33 "neutro de dois números": "neutral",
34 "neutro comum aos dois números": ["neutral", "common"],
35 "neutro invariável": ["neutral", "invariable"],
36 "neutro dual": ["neutral", "dual"],
37 "plural": "plural",
38 "singular": "singular",
39 "sem plural": "no-plural",
40 "singular e plural": ["singular", "plural"],
41 # "dois números": "",
42 "comum aos dois números": "common",
43 "dual": "dual",
44 "invariável": "invariable",
45 # "uniforme": "",
46 # "biforme": "",
47 "contável": "countable",
48 "incontável": "uncountable",
49 "primeira pessoa": "first-person",
50 "primeira pessoa do singular": ["first-person", "singular"],
51 "primeira pessoa do plural": ["first-person", "plural"],
52 "segunda pessoa": "second-person",
53 "segunda pessoa do singula": ["second-person", "singular"],
54 "segunda pessoa do plural": ["second-person", "plural"],
55 "terceira pessoa": "third-person",
56 "terceira pessoa do singular": ["third-person", "singular"],
57 "terceira pessoa do plural": ["third-person", "plural"],
58 "cardinal": "cardinal",
59 "ordinal": "ordinal",
60 "multiplicativo": "multiplicative",
61 # "fracionário": "",
62 "distributivo": "distributive",
63 "coletivo": "collective",
64 "pessoal": "personal",
65 "demonstrativo": "demonstrative",
66 "possessivo": "possessive",
67 "relativo": "relative",
68 "interrogativo": "interrogative",
69 # "tratamento": "",
70 "indefinido": "indefinite",
71 "definido": "definite",
72 # "próprio": "",
73 "comum": "common",
74 "concreto": "concrete",
75 "abstrato": "abstract",
76 "composto": "compound",
77 # "simples": "",
78 # "primitivo": "",
79 # "derivado": "",
80 "animado": "animate",
81 "inanimado": "inanimate",
82 "intransitivo": "intransitive",
83 "transitivo": "transitive",
84 "transitivo indireto": ["indirect", "transitive"],
85 "transitivo direto": ["direct", "transitive"],
86 "transitivo direto e indireto": ["direct", "indirect", "transitive"],
87 "pronominal": "pronominal",
88 "pronominal transitivo indireto": ["pronominal", "indirect", "transitive"],
89 "bitransitivo": "ditransitive",
90 "reflexivo": "reflexive",
91 "auxiliar": "auxiliary",
92 "impessoal": "impersonal",
93 "predicativo": "predicative",
94 "com valor de verbo": "verb",
95 "de lugar": "place",
96 # "de modo": "",
97 # "de tempo": "",
98 # "de intensidade": "",
99 "maiúscula": "capitalized",
100 "minúscula": "lowercase",
101}
103TABLE_TAGS = {
104 # Predefinição:flex.pt
105 "Masculino": "masculine",
106 "Feminino": "feminine",
107 "Plural": "plural",
108 "Singular": "singular",
109 # Predefinição:flex.pt.subst.completa
110 "Coletivo": "collective",
111 "Normal": "standard",
112 "Aumentativo": "augmentative",
113 "Diminutivo": "diminutive",
114 # Predefinição:conj.pt
115 "Infinitivo impessoal": ["impersonal", "infinitive"],
116 "Gerúndio": "gerund",
117 "Particípio": "participle",
118 "primeira": "first-person",
119 "segunda": "second-person",
120 "terceira": "third-person",
121 "Modo\nIndicativo": "indicative",
122 "Presente": "present",
123 "Pretérito imperfeito": ["past", "continuative"],
124 "Pretérito perfeito": "past",
125 "Pretérito mais-que-perfeito": "pluperfect",
126 "Futuro do presente": ["future", "present"],
127 "Futuro do pretérito": ["future", "past"],
128 "Modo\nSubjuntivo\n(Conjuntivo)": ["subjunctive", "conjunctive"],
129 "Futuro": "future",
130 "Modo\nImperativo": "imperative",
131 "Afirmativo": "affirmative",
132 "Negativo": "negative",
133 "Infinitivo pessoal": ["personal", "infinitive"],
134 # Predefinição:conj.en
135 "Infinitivo": "infinitive",
136 "Passado simples": "past",
137}
139# https://pt.wiktionary.org/wiki/Predefinição:escopo/núcleo
140GLOSS_TAGS = {
141 "Grafia portuguesa": "Portugal",
142 "Grafia brasileira": "Brazil",
143 "histórico": "historical",
144 "antigo": "archaic",
145 "arcaico": "archaic",
146 "em desuso": "obsolete",
147 "obsoleto": "obsolete",
148 "pouco comum": "uncommon",
149 "raro": "rare",
150 "obsceno": "vulgar",
151 "coloquial": "colloquial",
152 "familiar": "familiar",
153 "informal": "informal",
154 # "popular": "",
155 "figurado": "figuratively",
156 "depreciativo": "derogatory",
157 "pejorativo": "pejorative",
158 "poético": "poetic",
159 "internetês": ["Internet", "slang"],
160 "ironia": "ironic",
161 # "alemanismo": "",
162 # "italianismo": "Italianism",
163 # "germanismo": "Germanism",
164 # "francesismo": "",
165 # "galicismo": "Gallicism",
166 "anglicismo": "Anglicism",
167 # "portuguesismo": "Portuguesism",
168 # "estrangeirismo": "loanword",
169 "regionalism": "regional",
170 "Angola": "Angola",
171 "Brasil": "Brazil",
172 # "Amazônia": "Amazonia",
173 "Nordeste do Brasil": "Northeast-Brazil",
174 "Norte do Brasil": "North-Brazil",
175 "Centro-Oeste do Brasil": "Central-West-Brazil",
176 "Sudeste do Brasil": "Southeast-Brazil",
177 "Sul do Brasil": "Southern-Brazil",
178 "Acre": "Acre",
179 "Alagoas": "Alagoas",
180 "Amapá": "Amapá",
181 "Amazonas": "Amazonas",
182 "Bahia": "Bahia",
183 "dialeto caipira": "dialectal",
184 "Ceará": "Ceará",
185 # "Distrito Federal": "Federal District",
186 "Espírito Santo": "Espírito Santo",
187 "Goiás": "Goias",
188 "Maranhão": "Maranhão",
189 "Mato Grosso": "Mato Grosso",
190 "Mato Grosso do Sul": "Mato Grosso do Sul",
191 "Minas Gerais": "Minas Gerais",
192 "Pará": "Pará",
193 "Paraíba": "Paraíba",
194 "Paraná": "Paraná",
195 "Pernambuco": "Pernambuco",
196 "Piauí": "Piauí",
197 "Rio de Janeiro": "Rio de Janeiro",
198 "Rio Grande do Norte": "Rio Grande do Norte",
199 "Rio Grande do Sul": "Rio Grande do Sul",
200 "Rondônia": "Rondônia",
201 "Roraima": "Roraima",
202 # "baralhete": "",
203 # "canteiros": "",
204 # "alvanéis": "",
205 # "telheiros": "",
206 # "músicos": "",
207 # "cesteiros": "",
208 "transitivo": "transitive",
209 "intransitivo": "intransitive",
210 "reflexivo": "reflexive",
211 "pronominal": "pronominal",
212 "plural": "plural",
213}
215OTHER_TAGS = {
216 "comparativo de superioridade": ["comparative", "superior"],
217 "superlativo absoluto sintético": ["absolute", "superlative"],
218 "superlativo relativo de superioridade": [
219 "relative",
220 "superlative",
221 "superior",
222 ],
223}
225TAGS = {**HEAD_LINE_TAGS, **TABLE_TAGS, **GLOSS_TAGS, **OTHER_TAGS}
227# https://pt.wiktionary.org/wiki/Predefinição:escopo/núcleo
228TOPICS = {
229 "anatomia": "anatomy",
230 "arquitetura": "architecture",
231 "botânica": "botany",
232 "ciência da computação": "computing",
233 "comunicação": "communications",
234 # "ciência dos materiais": "",
235 "engenharia": "engineering",
236 # "pedagogia": "pedagogy",
237 # "cronônimo": "chrononym",
238 "basquetebol": "basketball",
239 "beisebol": "baseball",
240 "críquete": "cricket",
241 "desporto": "sports",
242 "esporte": "sports",
243 "ténis": "tennis",
244 "tênis": "tennis",
245 "esgrima": "fencing",
246 "geografia": "geography",
247 # "toponímia": "",
248 # "territory": "",
249 "zoologia": "zoology",
250 "ornitologia": "ornithology",
251 # "artrópodes": "",
252 "entomologia": "entomology",
253 "ictiologia": "ichthyology",
254 "veterinária": "veterinary",
255 # "antropónimo": "",
256 "alimentação": "food",
257 "arte": "arts",
258 "aeronáutica": "aeronautics",
259 "aritmética": "arithmetic",
260 "Meteorologia": "meteorology",
261 "design": "design",
262 "patologia": "pathology",
263 "etnologia": "ethnology",
264 "farmacologia": "pharmacology",
265 "transporte": "transport",
266 "Ginecologia": "gynecology",
267 "linguística": "linguistics",
268 "indústria têxtil": "textiles",
269 "mídia": "media",
270 "ciência da informação": "information-science",
271 "ludologia": "ludology",
272 "náutica": "nautical",
273 "mitologia": "mythology",
274 "mineralogia": "mineralogy",
275 "mobiliário": "furniture",
276 "numismática": "numismatics",
277 # "Esoterismo": "",
278 "profissão": "profession",
279 # "parapsiquismo": "",
280 "vestuário": "clothing",
281 "direito": "law",
282 "química": "chemistry",
283 "videojogo": "video-games",
284 "vídeo game": "video-games",
285 "viticultura": "viticulture",
286}
289def translate_raw_tags(data: WordEntry) -> None:
290 raw_tags = []
291 for raw_tag in data.raw_tags:
292 if raw_tag in TAGS or raw_tag.lower() in TAGS:
293 tr_tag = TAGS.get(raw_tag, TAGS.get(raw_tag.lower()))
294 if isinstance(tr_tag, str):
295 data.tags.append(tr_tag)
296 elif isinstance(tr_tag, list): 296 ↛ 291line 296 didn't jump to line 291 because the condition on line 296 was always true
297 data.tags.extend(tr_tag)
298 elif (raw_tag in TOPICS or raw_tag.lower() in TOPICS) and hasattr( 298 ↛ 301line 298 didn't jump to line 301 because the condition on line 298 was never true
299 data, "topics"
300 ):
301 data.topics.append(TOPICS.get(raw_tag, TOPICS.get(raw_tag.lower())))
302 else:
303 raw_tags.append(raw_tag)
304 data.raw_tags = raw_tags