1- #!/usr/bin/env python3
1+ """
2+ Morphosyntactic features (UniDive, Lenka Krippnerová):
3+ This block detects future tense forms in Slavic languages and saves their
4+ features as Phrase* attributes in MISC of their head word.
5+ """
26
3- # Future tense of Slavic languages
7+ import udapi . block . mwe . msfphrase
48
5- from udapi .core .block import Block
6- import importlib
7- import sys
8-
9- class Slavic_future (Block ):
10- def __init__ (self , writer_prefix = '' ,** kwargs ):
11- super ().__init__ (** kwargs )
12- if writer_prefix != '' :
13- writer_module = "." .join ([writer_prefix ,'writer' ])
14- else :
15- writer_module = 'writer'
16- try :
17- module = importlib .import_module (writer_module )
18- except ModuleNotFoundError as e :
19- print (e , file = sys .stderr )
20- print ("Try to set writer_prefix parameter." , file = sys .stderr )
21- exit (1 )
22-
23- self .wr = module .Writer ()
9+ class Future (udapi .block .mwe .msfphrase .MsfPhrase ):
2410
2511 def process_node (self , node ):
2612 # future tense for Serbian and Croatian
@@ -39,16 +25,16 @@ def process_node(self, node):
3925 #if voice == '':
4026 # voice = 'Act'
4127 if len (cop ) == 0 :
42- self .wr . write_node_info (node ,
28+ self .write_node_info (node ,
4329 tense = 'Fut' ,
4430 person = aux [0 ].feats ['Person' ],
4531 number = aux [0 ].feats ['Number' ],
4632 mood = 'Ind' ,
4733 voice = voice ,
4834 aspect = node .feats ['Aspect' ], # srbstina ani chorvatstina vidy nema
4935 form = 'Fin' ,
50- polarity = self .wr . get_polarity (node ,neg ),
51- reflex = self .wr . get_is_reflex (node ,refl ),
36+ polarity = self .get_polarity (node ,neg ),
37+ reflex = self .get_is_reflex (node ,refl ),
5238 gender = node .feats ['Gender' ],
5339 animacy = node .feats ['Animacy' ],
5440 ords = phrase_ords
@@ -58,16 +44,16 @@ def process_node(self, node):
5844 phrase_ords += [x .ord for x in prep ]
5945 phrase_ords .sort ()
6046
61- self .wr . write_node_info (node ,
47+ self .write_node_info (node ,
6248 tense = 'Fut' ,
6349 person = aux [0 ].feats ['Person' ],
6450 number = aux [0 ].feats ['Number' ],
6551 mood = 'Ind' ,
6652 voice = voice ,
6753 aspect = node .feats ['Aspect' ],
6854 form = 'Fin' ,
69- polarity = self .wr . get_polarity (node ,neg ),
70- reflex = self .wr . get_is_reflex (node ,refl ),
55+ polarity = self .get_polarity (node ,neg ),
56+ reflex = self .get_is_reflex (node ,refl ),
7157 gender = node .feats ['Gender' ],
7258 animacy = node .feats ['Animacy' ],
7359 ords = phrase_ords
@@ -85,16 +71,16 @@ def process_node(self, node):
8571 phrase_ords = [node .ord ] + [x .ord for x in refl ] + [x .ord for x in neg ] + [x .ord for x in aux ]
8672 phrase_ords .sort ()
8773
88- self .wr . write_node_info (node ,
74+ self .write_node_info (node ,
8975 tense = 'Fut' ,
9076 person = node .feats ['Person' ],
9177 number = node .feats ['Number' ],
9278 mood = 'Ind' ,
9379 voice = node .feats ['Voice' ],
9480 aspect = node .feats ['Aspect' ],
9581 form = 'Fin' ,
96- polarity = self .wr . get_polarity (node ,neg ),
97- reflex = self .wr . get_is_reflex (node ,refl ),
82+ polarity = self .get_polarity (node ,neg ),
83+ reflex = self .get_is_reflex (node ,refl ),
9884 ords = phrase_ords
9985 )
10086 return
@@ -110,16 +96,16 @@ def process_node(self, node):
11096 phrase_ords = [node.ord] + [x.ord for x in refl] + [x.ord for x in neg]
11197 phrase_ords.sort()
11298
113- self.wr. write_node_info(node,
99+ self.write_node_info(node,
114100 tense='Fut',
115101 person=node.feats['Person'],
116102 number=node.feats['Number'],
117103 mood='Ind',
118- voice=self.wr. get_voice(node,refl),
104+ voice=self.get_voice(node,refl),
119105 form='Fin',
120106 aspect='Perf',
121- polarity=self.wr. get_polarity(node,neg),
122- reflex=self.wr. get_is_reflex(node,refl),
107+ polarity=self.get_polarity(node,neg),
108+ reflex=self.get_is_reflex(node,refl),
123109 ords=phrase_ords
124110 )
125111 return"""
@@ -138,16 +124,16 @@ def process_node(self, node):
138124 auxVerb = aux [0 ]
139125 phrase_ords = [node .ord ] + [x .ord for x in aux ] + [x .ord for x in refl ] + [x .ord for x in neg ]
140126 phrase_ords .sort ()
141- self .wr . write_node_info (node ,
127+ self .write_node_info (node ,
142128 tense = 'Fut' ,
143129 person = auxVerb .feats ['Person' ],
144130 number = auxVerb .feats ['Number' ],
145131 mood = 'Ind' ,
146- voice = self .wr . get_voice (node ,refl ),
132+ voice = self .get_voice (node ,refl ),
147133 aspect = node .feats ['Aspect' ],
148134 form = 'Fin' ,
149- polarity = self .wr . get_polarity (auxVerb ,neg ),
150- reflex = self .wr . get_is_reflex (node ,refl ),
135+ polarity = self .get_polarity (auxVerb ,neg ),
136+ reflex = self .get_is_reflex (node ,refl ),
151137 ords = phrase_ords ,
152138 gender = node .feats ['Gender' ],
153139 animacy = node .feats ['Animacy' ]
@@ -162,16 +148,16 @@ def process_node(self, node):
162148 phrase_ords = [node .ord ] + [x .ord for x in refl ] + [x .ord for x in neg ]
163149 phrase_ords .sort ()
164150
165- self .wr . write_node_info (node ,
151+ self .write_node_info (node ,
166152 tense = 'Fut' ,
167153 person = node .feats ['Person' ],
168154 number = node .feats ['Number' ],
169155 mood = 'Ind' ,
170- voice = self .wr . get_voice (node ,refl ), # passivum se muze objevit (napr. pojede se), ale jmenny rod neni vyjadren
156+ voice = self .get_voice (node ,refl ), # passivum se muze objevit (napr. pojede se), ale jmenny rod neni vyjadren
171157 aspect = node .feats ['Aspect' ],
172158 form = 'Fin' ,
173- polarity = self .wr . get_polarity (node ,neg ),
174- reflex = self .wr . get_is_reflex (node ,refl ),
159+ polarity = self .get_polarity (node ,neg ),
160+ reflex = self .get_is_reflex (node ,refl ),
175161 ords = phrase_ords
176162 )
177163 return
@@ -188,14 +174,14 @@ def process_node(self, node):
188174 phrase_ords = [node .ord ] + [x .ord for x in cop ] + [x .ord for x in aux ] + [x .ord for x in prep ] + [x .ord for x in neg ] + [x .ord for x in refl ]
189175 phrase_ords .sort ()
190176
191- self .wr . write_node_info (node ,
177+ self .write_node_info (node ,
192178 tense = 'Fut' ,
193179 person = copVerb .feats ['Person' ],
194180 number = copVerb .feats ['Number' ],
195181 mood = 'Ind' ,
196182 form = 'Fin' ,
197- voice = self .wr . get_voice (copVerb , refl ),
198- polarity = self .wr . get_polarity (copVerb ,neg ),
183+ voice = self .get_voice (copVerb , refl ),
184+ polarity = self .get_polarity (copVerb ,neg ),
199185 ords = phrase_ords
200186 )
201187
0 commit comments