@@ -10,19 +10,35 @@ class MsfCase(Block):
1010 adposmap = {
1111 'v+Loc' : 'Ine' ,
1212 'uvnitř+Gen' : 'Ine' ,
13+ 'uvnitř+' : 'Ine' ,
14+ 'mezi_uvnitř+Gen' : 'Ine' , # annotation error?
1315 'uprostřed+Gen' : 'Ces' ,
1416 'mezi+Ins' : 'Int' ,
17+ 'mezi+Nom' : 'Int' , # annotation error
18+ 'mezi+Voc' : 'Int' , # annotation error
1519 'vně+Gen' : 'Ext' ,
20+ 'stranou+Gen' : 'Ext' ,
21+ 'stranou+Dat' : 'Ext' ,
1622 'na+Loc' : 'Ade' ,
23+ 'na_mimo+Loc' : 'Ade' , # annotation error?
24+ 'na_úroveň+Gen' : 'Ade' ,
25+ 'na_úroveň+' : 'Ade' ,
26+ 'v_proces+Gen' : 'Ade' , # ???
1727 'v_rámec+Gen' : 'Ade' , # ???
28+ 'v_rámec+' : 'Ade' , # ???
29+ 'v_řada+Gen' : 'Ade' , # ???
30+ 'z_oblast+Gen' : 'Ade' , # ???
1831 'vedle+Gen' : 'Apu' ,
1932 'u+Gen' : 'Chz' ,
2033 'kolem+Gen' : 'Cir' ,
34+ 'kol+Gen' : 'Cir' ,
2135 'dokola+Gen' : 'Cir' ,
2236 'okolo+Gen' : 'Cir' ,
2337 'v_oblast+Gen' : 'Cir' ,
38+ 'v_oblast+' : 'Cir' ,
2439 'blízko+Dat' : 'Prx' ,
2540 'blízko+Gen' : 'Prx' ,
41+ 'blízko+' : 'Prx' ,
2642 'nedaleko+Gen' : 'Prx' ,
2743 'daleko+Gen' : 'Prx' , # lemma of 'nedaleko'
2844 'poblíž+Gen' : 'Prx' ,
@@ -32,66 +48,134 @@ class MsfCase(Block):
3248 'vespod+Gen' : 'Sub' ,
3349 'před+Ins' : 'Ant' ,
3450 'vpředu+Gen' : 'Ant' ,
51+ 'na_čelo+Gen' : 'Ant' ,
52+ 'v_čelo+Gen' : 'Ant' ,
53+ 'v_čelo+' : 'Ant' ,
3554 'za+Ins' : 'Pst' ,
3655 'naproti+Dat' : 'Opp' ,
3756 'od+Gen' : 'Abl' ,
57+ 'od+Dat' : 'Abl' , # annotation error
58+ 'směr_od+Gen' : 'Abl' ,
59+ 'z_strana+Gen' : 'Abl' ,
60+ 'z_strana+' : 'Abl' ,
3861 'z+Gen' : 'Ela' ,
62+ 'z+Nom' : 'Ela' , # annotation error
63+ 'z+Dat' : 'Ela' , # annotation error
3964 'zevnitř+Gen' : 'Ela' ,
4065 'zprostřed+Gen' : 'Cne' ,
4166 's+Gen' : 'Del' ,
4267 'zpod+Gen' : 'Sbe' ,
4368 'zpoza+Gen' : 'Pse' ,
4469 'po+Loc' : 'Per' ,
70+ 'cesta+Gen' : 'Per' ,
71+ 'cesta+Ins' : 'Per' ,
4572 'napříč+Gen' : 'Crs' ,
4673 'napříč+Ins' : 'Crs' ,
4774 'podél+Gen' : 'Lng' ,
4875 'skrz+Acc' : 'Inx' ,
4976 'přes+Acc' : 'Spx' ,
77+ 'přes+Nom' : 'Spx' , # annotation error
5078 'ob+Acc' : 'Cix' ,
5179 'po+Acc' : 'Ter' ,
80+ 'po+Nom' : 'Ter' , # annotation error
81+ 'po+Gen' : 'Ter' , # annotation error
5282 'do+Gen' : 'Ill' ,
83+ 'do+Acc' : 'Ill' , # annotation error
84+ 'do_/+Gen' : 'Ill' ,
5385 'dovnitř+Gen' : 'Ill' ,
5486 'doprostřed+Gen' : 'Cnl' ,
5587 'mezi+Acc' : 'Itl' ,
5688 'na+Acc' : 'All' ,
89+ 'na+Nom' : 'All' , # annotation error
5790 'na+Gen' : 'All' , # annotation error
5891 'k+Dat' : 'Apl' ,
92+ 'k+Nom' : 'Apl' , # annotation error
93+ 'vstříc+Dat' : 'Apl' ,
94+ 'do_oblast+Gen' : 'Apl' ,
95+ 'směr+' : 'Apl' ,
96+ 'směr_k+Dat' : 'Apl' ,
97+ 'směr_k+' : 'Apl' ,
98+ 'směr_na+Acc' : 'Apl' ,
99+ 'v_směr_k+Dat' : 'Apl' ,
59100 'nad+Acc' : 'Spl' ,
101+ 'nad+Nom' : 'Spl' , # annotation error
60102 'pod+Acc' : 'Sbl' ,
61103 'před+Acc' : 'Anl' ,
104+ 'před+Gen' : 'Anl' , # annotation error
62105 'za+Acc' : 'Psl' ,
106+ 'dík_za+Acc' : 'Psl' , # annotation error?
63107 'dokud' : 'Tan' ,
64108 'nežli' : 'Tan' ,
65109 'v+Acc' : 'Tem' ,
66110 'v+Nom' : 'Tem' , # annotation error
111+ 'v+Gen' : 'Tem' , # annotation error
112+ 'při_příležitost+Gen' : 'Tem' ,
113+ 'současně_s+Ins' : 'Tem' ,
114+ 'u_příležitost+Gen' : 'Tem' ,
67115 'v_období+Gen' : 'Tpx' ,
68116 'počátkem+Gen' : 'Din' ,
117+ 'počátek+Gen' : 'Din' ,
118+ 'počínat+Ins' : 'Din' ,
119+ 'počínat+' : 'Din' ,
69120 'začátkem+Gen' : 'Din' ,
121+ 'začátek+Gen' : 'Din' ,
70122 'během+Gen' : 'Dur' ,
71123 'postupem+Gen' : 'Dur' ,
124+ 'postup+Gen' : 'Dur' ,
72125 'při+Loc' : 'Dur' ,
73126 'v_průběh+Gen' : 'Dur' ,
74127 'za+Gen' : 'Der' ,
75128 'koncem+Gen' : 'Dtr' ,
76129 'konec+Gen' : 'Dtr' ,
130+ 'k_konec+Gen' : 'Dtr' ,
131+ 'končit+Ins' : 'Dtr' ,
77132 'závěrem+Gen' : 'Dtr' ,
133+ 'závěr+Gen' : 'Dtr' ,
134+ 'na_závěr+Gen' : 'Dtr' ,
135+ 'v_závěr+Gen' : 'Dtr' ,
78136 'jakmile' : 'Tps' ,
79137 'jen_co' : 'Tps' ,
138+ 'před_po+Loc' : 'Tps' ,
80139 'počínaje+Ins' : 'Teg' ,
81140 'jménem+Nom' : 'Atr' ,
141+ 'jméno+Nom' : 'Atr' ,
82142 'zdali' : 'Atr' ,
83143 'že' : 'Atr' ,
144+ 'z_řada+Gen' : 'Gen' ,
84145 's+Ins' : 'Com' ,
146+ 's+Nom' : 'Com' , # annotation error
85147 'spolu_s+Ins' : 'Com' ,
148+ 'spolu_s+' : 'Com' ,
86149 'společně_s+Ins' : 'Com' ,
150+ 'společně_s+' : 'Com' ,
151+ 'v_čelo_s+Ins' : 'Com' ,
152+ 'v_spolupráce_s+Ins' : 'Com' ,
87153 'bez+Gen' : 'Abe' ,
88154 'včetně+Gen' : 'Inc' ,
155+ 'nad_rámec+Gen' : 'Add' ,
89156 'kromě+Gen' : 'Exc' ,
157+ 'krom+Gen' : 'Exc' ,
90158 'mimo+Acc' : 'Exc' ,
91159 'mimo+Gen' : 'Exc' ,
92160 'vyjma+Gen' : 'Exc' ,
161+ 'až_na+Acc' : 'Exc' ,
162+ 's_výjimka+Gen' : 'Exc' ,
163+ 's_výjimka+' : 'Exc' ,
93164 'místo+Gen' : 'Sbs' ,
165+ 'místo+Ins' : 'Sbs' , # něčím místo něčím jiným
166+ 'místo+Loc' : 'Sbs' , # annotation error
167+ 'místo_do+Gen' : 'Sbs' ,
168+ 'místo_k+Dat' : 'Sbs' ,
169+ 'místo_na+Acc' : 'Sbs' ,
170+ 'místo_na+' : 'Sbs' ,
171+ 'místo_po+Loc' : 'Sbs' ,
172+ 'místo_v+Acc' : 'Sbs' ,
173+ 'místo_v+' : 'Sbs' ,
174+ 'místo_za+Acc' : 'Sbs' ,
94175 'namísto+Gen' : 'Sbs' ,
176+ 'namísto_do+Gen' : 'Sbs' ,
177+ 'v_zastoupení+Gen' : 'Sbs' ,
178+ 'výměna_za+Acc' : 'Sbs' ,
95179 'jako' : 'Ess' ,
96180 'jako+' : 'Ess' ,
97181 'jako+Nom' : 'Ess' ,
@@ -100,27 +184,58 @@ class MsfCase(Block):
100184 'jako_u+Gen' : 'Ess' ,
101185 'jako_v+Loc' : 'Ess' ,
102186 'formou+Gen' : 'Ess' ,
187+ 'forma+Gen' : 'Ess' ,
188+ 'v_forma+Gen' : 'Ess' ,
189+ 'v_podoba+Gen' : 'Ess' ,
190+ 'v_podoba+' : 'Ess' ,
191+ 'shoda+Gen' : 'Equ' ,
192+ 'v_shoda_s+Ins' : 'Equ' ,
193+ 'do_soulad_s+Ins' : 'Sem' ,
194+ 'na_způsob+Gen' : 'Sem' ,
195+ 'po_vzor+Gen' : 'Sem' ,
196+ 'úměrně+Dat' : 'Sem' ,
197+ 'úměrně_k+Dat' : 'Sem' ,
198+ 'úměrně_s+Ins' : 'Sem' ,
199+ 'v_analogie_s+Ins' : 'Sem' ,
200+ 'v_duch+Gen' : 'Sem' ,
201+ 'v_smysl+Gen' : 'Sem' ,
103202 'oproti+Dat' : 'Dsm' ,
104203 'na_rozdíl_od+Gen' : 'Dsm' ,
204+ 'na_rozdíl_od+' : 'Dsm' ,
105205 'než' : 'Cmp' ,
106206 'než+Nom' : 'Cmp' ,
107207 'než+Gen' : 'Cmp' ,
108208 'než+Acc' : 'Cmp' ,
109209 'než_nad+Ins' : 'Cmp' ,
110210 'než_v+Acc' : 'Cmp' ,
111211 'než_v+Loc' : 'Cmp' ,
212+ 'v_poměr_k+Dat' : 'Cmp' ,
213+ 'v_poměr_k+' : 'Cmp' ,
214+ 'v_porovnání_k+Dat' : 'Cmp' ,
215+ 'v_porovnání_s+Ins' : 'Cmp' ,
216+ 'v_porovnání_s+' : 'Cmp' ,
112217 'v_srovnání_s+Ins' : 'Cmp' ,
218+ 'v_srovnání_s+' : 'Cmp' ,
113219 'o+Acc' : 'Dif' ,
220+ 'o+Nom' : 'Dif' , # annotation error
221+ 'o+Gen' : 'Dif' , # annotation error
222+ 'o+Dat' : 'Dif' , # annotation error
223+ 'o_o+Acc' : 'Dif' , # annotation error
114224 'kdežto' : 'Cmt' ,
115225 'přičemž' : 'Cmt' ,
116226 'zatímco' : 'Cmt' ,
117227 'díky+Dat' : 'Cau' ,
228+ 'dík+Dat' : 'Cau' ,
118229 'kvůli+Dat' : 'Cau' ,
119230 'vinou+Gen' : 'Cau' ,
120231 'vlivem+Gen' : 'Cau' ,
121232 'vliv+Gen' : 'Cau' ,
233+ 'vliv+' : 'Cau' ,
234+ 'vinou+Gen' : 'Cau' ,
235+ 'vina+Gen' : 'Cau' ,
122236 'zásluhou+Gen' : 'Cau' ,
123237 'zásluha+Gen' : 'Cau' ,
238+ 'z_důvod+Gen' : 'Cau' ,
124239 'v_důsledek+Gen' : 'Cau' ,
125240 'jelikož' : 'Cau' ,
126241 'ježto' : 'Cau' ,
@@ -129,15 +244,30 @@ class MsfCase(Block):
129244 'takže' : 'Cau' ,
130245 'následek+Gen' : 'Cau' ,
131246 'aby' : 'Pur' ,
247+ 'jméno+Gen' : 'Pur' ,
248+ 'pro_případ+Gen' : 'Pur' ,
249+ 'v_jméno+Gen' : 'Pur' ,
250+ 'v_zájem+Gen' : 'Pur' ,
251+ 'za_účel+Gen' : 'Pur' ,
132252 'na_základ+Gen' : 'Cns' ,
253+ 'pod_vliv+Gen' : 'Cns' ,
133254 's_ohled_na+Acc' : 'Cns' ,
255+ 's_přihlédnutí_k+Dat' : 'Cns' ,
256+ 's_přihlédnutí_na+Acc' : 'Cns' ,
134257 'v_souvislost_s+Ins' : 'Cns' ,
258+ 'v_souvislost_s+' : 'Cns' ,
135259 'v_světlo+Gen' : 'Cns' ,
136260 'vzhledem_k+Dat' : 'Cns' ,
261+ 'v_soulad_s+Ins' : 'Cns' ,
262+ 'v_soulad_s+' : 'Cns' ,
263+ 'z_titul+Gen' : 'Cns' ,
137264 'ať' : 'Ign' ,
138265 'bez_ohled_na+Acc' : 'Ign' ,
266+ 'nehledě_k+Dat' : 'Ign' ,
267+ 'nehledě_na+Acc' : 'Ign' ,
139268 'navzdory+Dat' : 'Ccs' ,
140269 'vzdor+Dat' : 'Ccs' ,
270+ 'v_rozpor_s+Ins' : 'Ccs' ,
141271 'ač' : 'Ccs' ,
142272 'ačkoli' : 'Ccs' ,
143273 'byť' : 'Ccs' ,
@@ -149,22 +279,100 @@ class MsfCase(Block):
149279 'li' : 'Cnd' ,
150280 'pakliže' : 'Cnd' ,
151281 'pokud' : 'Cnd' ,
282+ 'pokud+Nom' : 'Cnd' ,
152283 'zda' : 'Cnd' ,
153284 'v_případ+Gen' : 'Cnd' ,
285+ 'v_případ+' : 'Cnd' ,
286+ 'v_závislost_na+Loc' : 'Cnd' ,
287+ 'v_závislost_s+Ins' : 'Cnd' ,
154288 'o+Loc' : 'The' ,
155289 'ohledně+Gen' : 'The' ,
156290 'stran+Gen' : 'The' ,
291+ 'co_do+Gen' : 'The' ,
292+ 'na_téma+Gen' : 'The' ,
293+ 'na_téma+Nom' : 'The' ,
294+ 'na_téma+' : 'The' ,
295+ 'na_úsek+Gen' : 'The' ,
296+ 'po_stránka+Gen' : 'The' ,
297+ 'v_obor+Gen' : 'The' ,
298+ 'v_otázka+Gen' : 'The' ,
299+ 'v_spojení_s+Ins' : 'The' ,
300+ 'v_věc+Gen' : 'The' ,
301+ 'v_vztah_k+Dat' : 'The' ,
302+ 'v_vztah_k+' : 'The' ,
303+ 'v_záležitost+Gen' : 'The' ,
304+ 'v_znamení+Gen' : 'The' ,
157305 'z_hledisko+Gen' : 'The' ,
306+ 'z_hledisko+' : 'The' ,
158307 'podle+Gen' : 'Quo' ,
159308 'dle+Gen' : 'Quo' ,
160309 'pomocí+Gen' : 'Ins' ,
310+ 's_pomoc+Gen' : 'Ins' ,
161311 'prostřednictvím+Gen' : 'Ins' ,
162312 'prostřednictví+Gen' : 'Ins' ,
313+ 'prostřednictví+Ins' : 'Ins' , # annotation error
314+ 'prostřednictví+' : 'Ins' ,
315+ 'za_pomoc+Gen' : 'Ins' ,
163316 'pro+Acc' : 'Ben' ,
317+ 'pro+Nom' : 'Ben' , # annotation error
318+ 'pro+Gen' : 'Ben' , # annotation error
319+ 'pro+Ins' : 'Ben' , # annotation error
320+ 'napospas+Dat' : 'Ben' ,
321+ 'k_prospěch+Gen' : 'Ben' ,
322+ 'na_úkor+Gen' : 'Ben' ,
323+ 'na_vrub+Gen' : 'Ben' ,
324+ 'v_prospěch+Gen' : 'Ben' ,
325+ 'v_neprospěch+Gen' : 'Ben' ,
326+ 'v_služba+Gen' : 'Ben' ,
164327 'proti+Dat' : 'Adv' ,
328+ 'proti+Gen' : 'Adv' ,
165329 'kontra+Nom' : 'Adv' ,
166330 'versus+Nom' : 'Adv' ,
167331 'vůči+Dat' : 'Adv' ,
332+ # subordinators
333+ 'dokud' : 'Tan' ,
334+ 'nežli' : 'Tan' ,
335+ 'jakmile' : 'Tps' ,
336+ 'jen_co' : 'Tps' ,
337+ 'zdali' : 'Atr' ,
338+ 'že' : 'Atr' ,
339+ 'jako' : 'Ess' ,
340+ 'než' : 'Cmp' ,
341+ 'kdežto' : 'Cmt' ,
342+ 'přičemž' : 'Cmt' ,
343+ 'zatímco' : 'Cmt' ,
344+ 'jelikož' : 'Cau' ,
345+ 'ježto' : 'Cau' ,
346+ 'poněvadž' : 'Cau' ,
347+ 'protože' : 'Cau' ,
348+ 'takže' : 'Cau' ,
349+ 'aby' : 'Pur' ,
350+ 'ať' : 'Ign' ,
351+ 'ač' : 'Ccs' ,
352+ 'ačkoli' : 'Ccs' ,
353+ 'byť' : 'Ccs' ,
354+ 'přestože' : 'Ccs' ,
355+ 'třebaže' : 'Ccs' ,
356+ 'jestli' : 'Cnd' ,
357+ 'jestliže' : 'Cnd' ,
358+ 'ledaže' : 'Cnd' ,
359+ 'li' : 'Cnd' ,
360+ 'pakliže' : 'Cnd' ,
361+ 'pokud' : 'Cnd' ,
362+ 'zda' : 'Cnd' ,
363+ # coordinators
364+ 'a' : 'Conj' ,
365+ 'i' : 'Conj' ,
366+ 'ani' : 'Nnor' ,
367+ 'nebo' : 'Disj' ,
368+ 'či' : 'Disj' ,
369+ 'ale' : 'Advs' ,
370+ 'avšak' : 'Advs' ,
371+ 'však' : 'Advs' ,
372+ 'nýbrž' : 'Advs' ,
373+ 'neboť' : 'Reas' ,
374+ 'tedy' : 'Cnsq' ,
375+ 'tak' : 'Cnsq'
168376 }
169377
170378 def process_node (self , node ):
@@ -204,4 +412,37 @@ def process_node(self, node):
204412 else :
205413 logging .warn (f"No Case value found for '{ caseadpostring } '." )
206414 msfcase = caseadpostring
415+ # Omer wants to collect cases from both adpositions and subordinators
416+ # but we will consider subordinators only if we do not have any case
417+ # from morphology or adpositions.
418+ if not msfcase :
419+ subordinators = []
420+ for c in node .children :
421+ if c .udeprel == 'mark' :
422+ lemma = c .lemma
423+ # If it has outgoing 'fixed' relations, it is a multiword adposition.
424+ fixedchildren = [x .lemma for x in c .children if x .udeprel == 'fixed' ]
425+ if fixedchildren :
426+ lemma += '_' + '_' .join (fixedchildren )
427+ subordinators .append (lemma )
428+ if subordinators :
429+ subordstring = '_' .join (subordinators )
430+ if subordstring in self .adposmap :
431+ msfcase = self .adposmap [subordstring ]
432+ # To lump coordinators with all the above makes even less sense but for
433+ # the moment we do it.
434+ if not msfcase :
435+ coordinators = []
436+ for c in node .children :
437+ if c .udeprel == 'cc' :
438+ lemma = c .lemma
439+ # If it has outgoing 'fixed' relations, it is a multiword adposition.
440+ fixedchildren = [x .lemma for x in c .children if x .udeprel == 'fixed' ]
441+ if fixedchildren :
442+ lemma += '_' + '_' .join (fixedchildren )
443+ coordinators .append (lemma )
444+ if coordinators :
445+ coordstring = '_' .join (coordinators )
446+ if coordstring in self .adposmap :
447+ msfcase = self .adposmap [coordstring ]
207448 node .misc ['MSFCase' ] = msfcase
0 commit comments