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
+ """
2
6
3
- # Future tense of Slavic languages
7
+ import udapi . block . mwe . msfphrase
4
8
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 ):
24
10
25
11
def process_node (self , node ):
26
12
# future tense for Serbian and Croatian
@@ -39,16 +25,16 @@ def process_node(self, node):
39
25
#if voice == '':
40
26
# voice = 'Act'
41
27
if len (cop ) == 0 :
42
- self .wr . write_node_info (node ,
28
+ self .write_node_info (node ,
43
29
tense = 'Fut' ,
44
30
person = aux [0 ].feats ['Person' ],
45
31
number = aux [0 ].feats ['Number' ],
46
32
mood = 'Ind' ,
47
33
voice = voice ,
48
34
aspect = node .feats ['Aspect' ], # srbstina ani chorvatstina vidy nema
49
35
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 ),
52
38
gender = node .feats ['Gender' ],
53
39
animacy = node .feats ['Animacy' ],
54
40
ords = phrase_ords
@@ -58,16 +44,16 @@ def process_node(self, node):
58
44
phrase_ords += [x .ord for x in prep ]
59
45
phrase_ords .sort ()
60
46
61
- self .wr . write_node_info (node ,
47
+ self .write_node_info (node ,
62
48
tense = 'Fut' ,
63
49
person = aux [0 ].feats ['Person' ],
64
50
number = aux [0 ].feats ['Number' ],
65
51
mood = 'Ind' ,
66
52
voice = voice ,
67
53
aspect = node .feats ['Aspect' ],
68
54
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 ),
71
57
gender = node .feats ['Gender' ],
72
58
animacy = node .feats ['Animacy' ],
73
59
ords = phrase_ords
@@ -85,16 +71,16 @@ def process_node(self, node):
85
71
phrase_ords = [node .ord ] + [x .ord for x in refl ] + [x .ord for x in neg ] + [x .ord for x in aux ]
86
72
phrase_ords .sort ()
87
73
88
- self .wr . write_node_info (node ,
74
+ self .write_node_info (node ,
89
75
tense = 'Fut' ,
90
76
person = node .feats ['Person' ],
91
77
number = node .feats ['Number' ],
92
78
mood = 'Ind' ,
93
79
voice = node .feats ['Voice' ],
94
80
aspect = node .feats ['Aspect' ],
95
81
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 ),
98
84
ords = phrase_ords
99
85
)
100
86
return
@@ -110,16 +96,16 @@ def process_node(self, node):
110
96
phrase_ords = [node.ord] + [x.ord for x in refl] + [x.ord for x in neg]
111
97
phrase_ords.sort()
112
98
113
- self.wr. write_node_info(node,
99
+ self.write_node_info(node,
114
100
tense='Fut',
115
101
person=node.feats['Person'],
116
102
number=node.feats['Number'],
117
103
mood='Ind',
118
- voice=self.wr. get_voice(node,refl),
104
+ voice=self.get_voice(node,refl),
119
105
form='Fin',
120
106
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),
123
109
ords=phrase_ords
124
110
)
125
111
return"""
@@ -138,16 +124,16 @@ def process_node(self, node):
138
124
auxVerb = aux [0 ]
139
125
phrase_ords = [node .ord ] + [x .ord for x in aux ] + [x .ord for x in refl ] + [x .ord for x in neg ]
140
126
phrase_ords .sort ()
141
- self .wr . write_node_info (node ,
127
+ self .write_node_info (node ,
142
128
tense = 'Fut' ,
143
129
person = auxVerb .feats ['Person' ],
144
130
number = auxVerb .feats ['Number' ],
145
131
mood = 'Ind' ,
146
- voice = self .wr . get_voice (node ,refl ),
132
+ voice = self .get_voice (node ,refl ),
147
133
aspect = node .feats ['Aspect' ],
148
134
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 ),
151
137
ords = phrase_ords ,
152
138
gender = node .feats ['Gender' ],
153
139
animacy = node .feats ['Animacy' ]
@@ -162,16 +148,16 @@ def process_node(self, node):
162
148
phrase_ords = [node .ord ] + [x .ord for x in refl ] + [x .ord for x in neg ]
163
149
phrase_ords .sort ()
164
150
165
- self .wr . write_node_info (node ,
151
+ self .write_node_info (node ,
166
152
tense = 'Fut' ,
167
153
person = node .feats ['Person' ],
168
154
number = node .feats ['Number' ],
169
155
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
171
157
aspect = node .feats ['Aspect' ],
172
158
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 ),
175
161
ords = phrase_ords
176
162
)
177
163
return
@@ -188,14 +174,14 @@ def process_node(self, node):
188
174
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 ]
189
175
phrase_ords .sort ()
190
176
191
- self .wr . write_node_info (node ,
177
+ self .write_node_info (node ,
192
178
tense = 'Fut' ,
193
179
person = copVerb .feats ['Person' ],
194
180
number = copVerb .feats ['Number' ],
195
181
mood = 'Ind' ,
196
182
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 ),
199
185
ords = phrase_ords
200
186
)
201
187
0 commit comments