Commit e5c81a13f6d4bd867a92c7e9d7f7c02fa09e72a0

Authored by Wojciech Jaworski
1 parent a1931d44

oznaczanie kierunku implikacji

LCGlexicon/ENIAM_LCGlexicon.ml
@@ -152,55 +152,6 @@ let make_quantification e rules = @@ -152,55 +152,6 @@ let make_quantification e rules =
152 let syntax = if bracket then ENIAM_LCGtypes.Bracket(true,true,syntax) else ENIAM_LCGtypes.Bracket(false,false,syntax) in 152 let syntax = if bracket then ENIAM_LCGtypes.Bracket(true,true,syntax) else ENIAM_LCGtypes.Bracket(false,false,syntax) in
153 cats,syntax,semantics) 153 cats,syntax,semantics)
154 154
155 -(***  
156 -type rule2 =  
157 - Basic of string  
158 - | Quant of (selector * string) list * string  
159 - | Raised of (selector * string) list * string * selector list  
160 - | Quot of (selector * string) list * string  
161 - | Inclusion of string  
162 - | Conj of (selector * string) list * string  
163 - | Bracket of string  
164 -  
165 -  
166 -  
167 -let parse_quants_range quant =  
168 - Xlist.map quant (fun (cats,v) -> cats, parse_quant_range (cats,v))  
169 -(**  
170 - let parse_rule categories = function  
171 - Basic syntax ->  
172 - let quant = parse_quants_range categories in  
173 - false, quant, parse_syntax syntax, BasicSem(Xlist.map quant fst)  
174 - | Quant(quant,syntax) ->  
175 - let quant = parse_quants_range (merge_quant categories quant) in  
176 - false, quant, parse_syntax syntax, BasicSem(Xlist.map quant fst)  
177 - | Raised(quant,syntax,semantics) ->  
178 - let quant = parse_quants_range (merge_quant categories quant) in  
179 - false, quant, parse_syntax syntax, RaisedSem(Xlist.map quant fst,semantics)  
180 - | Quot(quant,syntax) ->  
181 - let quant = parse_quants_range (merge_quant categories quant) in  
182 - false, quant, parse_syntax syntax, QuotSem(Xlist.map quant fst)  
183 - | Inclusion syntax ->  
184 - let quant = parse_quants_range categories in  
185 - false, quant, parse_syntax syntax, InclusionSem(Xlist.map quant fst)  
186 - | Conj(quant,syntax) ->  
187 - let quant = parse_quants_range (merge_quant categories quant) in  
188 - false, quant, parse_syntax syntax, ConjSem(Xlist.map quant fst)  
189 - | Bracket syntax ->  
190 - let quant = parse_quants_range categories in  
191 - true, quant, parse_syntax syntax, BasicSem(Xlist.map quant fst)  
192 -  
193 - let parse_grammar grammar =  
194 - List.rev (Xlist.fold grammar [] (fun grammar (selectors,rule,weight) ->  
195 - let selectors = parse_selectors selectors in  
196 - let pos = find_selector Pos selectors in  
197 - let categories =  
198 - try StringMap.find pos_categories pos  
199 - with Not_found -> failwith ("parse_grammar: " ^ pos) in  
200 - let rule = try parse_rule categories rule with Not_found -> failwith ("parse_grammar: " ) in  
201 - (selectors,rule,weight) :: grammar))  
202 - **)  
203 -  
204 (* let translate_negation = function 155 (* let translate_negation = function
205 (Negation:negation) -> ["neg"] 156 (Negation:negation) -> ["neg"]
206 | Aff -> ["aff"] 157 | Aff -> ["aff"]
@@ -231,8 +182,8 @@ let parse_quants_range quant = @@ -231,8 +182,8 @@ let parse_quants_range quant =
231 | GerAtrs(m,le,neg,a) -> [Negation,Eq,translate_negation neg;Aspect,Eq,translate_aspect a] 182 | GerAtrs(m,le,neg,a) -> [Negation,Eq,translate_negation neg;Aspect,Eq,translate_aspect a]
232 | NonPersAtrs(m,le,role,role_attr,neg,a) -> [Negation,Eq,translate_negation neg;Aspect,Eq,translate_aspect a] 183 | NonPersAtrs(m,le,role,role_attr,neg,a) -> [Negation,Eq,translate_negation neg;Aspect,Eq,translate_aspect a]
233 | ComprepAtrs _ -> failwith "apply_valence_selectors" *) 184 | ComprepAtrs _ -> failwith "apply_valence_selectors" *)
234 - ***)  
235 -(* FIXME: argumenty X i raised i inne *) 185 +
  186 +(* FIXME: argumenty X *)
236 187
237 (* let render_schema schema = 188 (* let render_schema schema =
238 Xlist.map schema (function 189 Xlist.map schema (function
@@ -253,11 +204,12 @@ let parse_quants_range quant = @@ -253,11 +204,12 @@ let parse_quants_range quant =
253 | _ -> l) 204 | _ -> l)
254 else (cats,(bracket,quant,syntax,semantics),weight) :: l) *) 205 else (cats,(bracket,quant,syntax,semantics),weight) :: l) *)
255 206
256 -(* FIXME: ustawienie wartoล›ci symbol *)  
257 (* FIXME: problem z atrybutami przy zamianie kolejnoล›ci rzฤ™dnikรณw *) 207 (* FIXME: problem z atrybutami przy zamianie kolejnoล›ci rzฤ™dnikรณw *)
258 let make_node id orth lemma pos syntax weight cat_list is_raised = 208 let make_node id orth lemma pos syntax weight cat_list is_raised =
259 - let attrs = Xlist.fold cat_list(*Xlist.rev_map quant fst*) [] (fun attrs -> function 209 + let attrs = Xlist.fold cat_list [] (fun attrs -> function
260 | Lemma -> attrs 210 | Lemma -> attrs
  211 + | Pos -> attrs
  212 + | Pos2 -> attrs
261 | Cat -> ("CAT",SubstVar "cat") :: attrs 213 | Cat -> ("CAT",SubstVar "cat") :: attrs
262 | Number -> ("NUM",SubstVar "number") :: attrs 214 | Number -> ("NUM",SubstVar "number") :: attrs
263 | Case -> ("CASE",SubstVar "case") :: attrs 215 | Case -> ("CASE",SubstVar "case") :: attrs
@@ -273,7 +225,16 @@ let make_node id orth lemma pos syntax weight cat_list is_raised = @@ -273,7 +225,16 @@ let make_node id orth lemma pos syntax weight cat_list is_raised =
273 | Nsyn -> ("NSYN", SubstVar "nsyn") :: attrs 225 | Nsyn -> ("NSYN", SubstVar "nsyn") :: attrs
274 | Nsem -> ("NSEM", SubstVar "nsem") :: attrs 226 | Nsem -> ("NSEM", SubstVar "nsem") :: attrs
275 | Ctype -> ("CTYPE", SubstVar "ctype") :: attrs 227 | Ctype -> ("CTYPE", SubstVar "ctype") :: attrs
276 - | s -> (string_of_selector s, Dot) :: attrs) in 228 + | Inumber -> attrs
  229 + | Igender -> attrs
  230 + | Iperson -> attrs
  231 + | Nperson -> attrs
  232 + | Plemma -> attrs
  233 + | Unumber -> attrs
  234 + | Ucase -> attrs
  235 + | Ugender -> attrs
  236 + | Uperson -> attrs) in
  237 + (* | s -> (string_of_selector s, Dot) :: attrs) in *)
277 (* | "lex" -> ("LEX",Val "+") :: attrs *) 238 (* | "lex" -> ("LEX",Val "+") :: attrs *)
278 (* | s -> failwith ("make_node: " ^ (string_of_selector s))) in *) 239 (* | s -> failwith ("make_node: " ^ (string_of_selector s))) in *)
279 let symbol = if is_raised then 240 let symbol = if is_raised then
LCGlexicon/resources/lexicon-pl.dic
@@ -137,13 +137,13 @@ pos=adv: advp{schema}{\(1+qub),/(1+inclusion)}{\(1+adja)}; @@ -137,13 +137,13 @@ pos=adv: advp{schema}{\(1+qub),/(1+inclusion)}{\(1+adja)};
137 # FIXME: dwa znaczenia jak: pytanie o cechฤ™ lub spรณjnik 137 # FIXME: dwa znaczenia jak: pytanie o cechฤ™ lub spรณjnik
138 lemma=jak|skฤ…d|dokฤ…d|gdzie|ktรณrฤ™dy|kiedy,pos=adv: 138 lemma=jak|skฤ…d|dokฤ…d|gdzie|ktรณrฤ™dy|kiedy,pos=adv:
139 QUANT[inumber=0,igender=0,iperson=0,ctype=int&rel] RAISED[ctype] 139 QUANT[inumber=0,igender=0,iperson=0,ctype=int&rel] RAISED[ctype]
140 - cp*ctype*lemma{\(1+advp),/(ip*inumber*igender*iperson/advp)}; #["CTYPE",SubstVar "ctype"] 140 + cp*ctype*lemma{\(1+advp),/(ip*inumber*igender*iperson/advp)};
141 lemma=odkฤ…d|dlaczego|czemu,pos=adv: 141 lemma=odkฤ…d|dlaczego|czemu,pos=adv:
142 QUANT[inumber=0,igender=0,iperson=0,ctype=int] RAISED[ctype] 142 QUANT[inumber=0,igender=0,iperson=0,ctype=int] RAISED[ctype]
143 - cp*ctype*lemma{\(1+advp),/(ip*inumber*igender*iperson/advp)}; #["CTYPE",SubstVar "ctype"] 143 + cp*ctype*lemma{\(1+advp),/(ip*inumber*igender*iperson/advp)};
144 lemma=gdy,pos=adv: 144 lemma=gdy,pos=adv:
145 QUANT[inumber=0,igender=0,iperson=0,ctype=sub] RAISED[ctype] 145 QUANT[inumber=0,igender=0,iperson=0,ctype=sub] RAISED[ctype]
146 - cp*ctype*lemma{\(1+advp),/(ip*inumber*igender*iperson/advp)}; #["CTYPE",SubstVar "ctype"] 146 + cp*ctype*lemma{\(1+advp),/(ip*inumber*igender*iperson/advp)};
147 147
148 # czasowniki 148 # czasowniki
149 pos=ger: np*number*case*gender*person{schema}{\(1+qub),/(1+inclusion)}; 149 pos=ger: np*number*case*gender*person{schema}{\(1+qub),/(1+inclusion)};
@@ -195,42 +195,50 @@ pos=pant,negation=neg: padvp{schema}{\(1+qub),/(1+inclusion)}{\nie}; @@ -195,42 +195,50 @@ pos=pant,negation=neg: padvp{schema}{\(1+qub),/(1+inclusion)}{\nie};
195 195
196 pos=comp: QUANT[ctype=sub] cp*ctype*lemma/ip*T*T*T; 196 pos=comp: QUANT[ctype=sub] cp*ctype*lemma/ip*T*T*T;
197 pos=conj: QUANT[ctype=coord] cp*ctype*lemma/ip*T*T*T; 197 pos=conj: QUANT[ctype=coord] cp*ctype*lemma/ip*T*T*T;
198 -#lemma=i|lub|czy|bฤ…dลบ,pos=conj: Conj([number=all_numbers,gender=all_genders,person=all_persons],"(ip*number*gender*person/ip*T*T*T)\ip*T*T*T"),0.;  
199 -#lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: Conj([],"(advp/prepnp*T*T)\prepnp*T*T"),0.;  
200 -#lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: Conj([],"(advp/advp)\prepnp*T*T"),0.;  
201 -#lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: Conj([],"(advp/prepnp*T*T)\advp"),0.;  
202 -#lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: Conj([],"(advp/advp)\advp"),0.;  
203 -#lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: Conj([plemma=0,case=all_cases],"(prepnp*plemma*case/prepnp*plemma*case)\prepnp*plemma*case"),0.;  
204 -#lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: Conj([number=all_numbers,case=all_cases,gender=all_genders,person=all_persons],"(np*number*case*gender*person/np*T*case*T*T)\np*T*case*T*T"),0.;  
205 -#lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: Conj([number=all_numbers,case=all_cases,gender=all_genders],"(adjp*number*case*gender/adjp*number*case*gender)\adjp*number*case*gender"),0.; 198 +lemma=i|lub|czy|bฤ…dลบ,pos=conj:
  199 + QUANT[number=all_numbers,gender=all_genders,person=all_persons]
  200 + (ip*number*gender*person/ip*T*T*T)\ip*T*T*T;
  201 +lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: (advp/prepnp*T*T)\prepnp*T*T;
  202 +lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: (advp/advp)\prepnp*T*T;
  203 +lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: (advp/prepnp*T*T)\advp;
  204 +lemma=,|i|lub|czy|bฤ…dลบ,pos=conj: (advp/advp)\advp;
  205 +lemma=,|i|lub|czy|bฤ…dลบ,pos=conj:
  206 + QUANT[plemma=0,case=all_cases]
  207 + (prepnp*plemma*case/prepnp*plemma*case)\prepnp*plemma*case;
  208 +lemma=,|i|lub|czy|bฤ…dลบ,pos=conj:
  209 + QUANT[number=all_numbers,case=all_cases,gender=all_genders,person=all_persons]
  210 + (np*number*case*gender*person/np*T*case*T*T)\np*T*case*T*T;
  211 +lemma=,|i|lub|czy|bฤ…dลบ,pos=conj:
  212 + QUANT[number=all_numbers,case=all_cases,gender=all_genders]
  213 + (adjp*number*case*gender/adjp*number*case*gender)\adjp*number*case*gender;
206 214
207 lemma=co|kto,pos=subst: 215 lemma=co|kto,pos=subst:
208 QUANT[inumber=0,igender=0,iperson=0,ctype=int&rel,number=T,case=T,gender=T,person=ter] RAISED[ctype] 216 QUANT[inumber=0,igender=0,iperson=0,ctype=int&rel,number=T,case=T,gender=T,person=ter] RAISED[ctype]
209 - cp*ctype*lemma/(ip*inumber*igender*iperson/np*number*case*gender*person); #["CTYPE",SubstVar "ctype"] 217 + cp*ctype*lemma/(ip*inumber*igender*iperson/np*number*case*gender*person);
210 lemma=co|kto,pos=subst: 218 lemma=co|kto,pos=subst:
211 QUANT[inumber=0,igender=0,iperson=0,plemma=0,ctype=int&rel,number=T,case=T,gender=T,person=ter] RAISED[ctype] 219 QUANT[inumber=0,igender=0,iperson=0,plemma=0,ctype=int&rel,number=T,case=T,gender=T,person=ter] RAISED[ctype]
212 - cp*ctype*lemma{/(ip*inumber*igender*iperson/prepnp*plemma*case),/(prepnp*plemma*case/np*number*case*gender*person)}; #["CTYPE",SubstVar "ctype"] 220 + cp*ctype*lemma{/(ip*inumber*igender*iperson/prepnp*plemma*case),/(prepnp*plemma*case/np*number*case*gender*person)};
213 lemma=to,pos=subst: 221 lemma=to,pos=subst:
214 QUANT[ctype=0,plemma=0,number=T,case=T,gender=T,person=ter] 222 QUANT[ctype=0,plemma=0,number=T,case=T,gender=T,person=ter]
215 ncp*number*case*gender*person*ctype*plemma{\(1+qub),/(1+inclusion)}{/cp*ctype*plemma}; 223 ncp*number*case*gender*person*ctype*plemma{\(1+qub),/(1+inclusion)}{/cp*ctype*plemma};
216 pos=ppron3,praep=praep: 224 pos=ppron3,praep=praep:
217 QUANT[plemma=0,number=T,case=T,gender=T,person=T] RAISED[] 225 QUANT[plemma=0,number=T,case=T,gender=T,person=T] RAISED[]
218 - prepnp*plemma*case\(prepnp*plemma*case/np*number*case*gender*person); #inclusion #[Number;Case;Gender;Person]; 226 + prepnp*plemma*case\(prepnp*plemma*case/np*number*case*gender*person); #inclusion #[Number;Case;Gender;Person]; #FIXME: semantyka
219 lemma=ile,pos=num: # FIXME: iloma ma bezpoล›redni podrzฤ™dnik rzeczownikowy, a ile nie # FIXME: mwe "o ile, na ile" 227 lemma=ile,pos=num: # FIXME: iloma ma bezpoล›redni podrzฤ™dnik rzeczownikowy, a ile nie # FIXME: mwe "o ile, na ile"
220 QUANT[inumber=0,igender=0,iperson=0,ctype=int&rel,number=T,case=T,gender=T,person=ter] 228 QUANT[inumber=0,igender=0,iperson=0,ctype=int&rel,number=T,case=T,gender=T,person=ter]
221 - cp*ctype*lemma/ip*inumber*igender*iperson; # FIXME: zaล›lepka, bo podrzฤ™dnik ile nie musi z nim sฤ…ciadowaฤ‡ #["CTYPE",SubstVar "ctype"] # FIXME: trzeba dodaฤ‡ przypadki, bezpoล›redniego podrzฤ™dnika rzeczownikowego i przyimka nad "ile" 229 + cp*ctype*lemma/ip*inumber*igender*iperson; # FIXME: zaล›lepka, bo podrzฤ™dnik ile nie musi z nim sฤ…ciadowaฤ‡ # FIXME: trzeba dodaฤ‡ przypadki, bezpoล›redniego podrzฤ™dnika rzeczownikowego i przyimka nad "ile"
222 lemma=czyj|jaki|ktรณry,pos=apron: 230 lemma=czyj|jaki|ktรณry,pos=apron:
223 QUANT[inumber=0,igender=0,iperson=0,nperson=0,ctype=int,number=T,case=T,gender=T] RAISED[ctype] 231 QUANT[inumber=0,igender=0,iperson=0,nperson=0,ctype=int,number=T,case=T,gender=T] RAISED[ctype]
224 - cp*ctype*lemma{/(ip*inumber*igender*iperson/np*number*case*gender*nperson)}{/(np*number*case*gender*nperson\adjp*number*case*gender)}; #["CTYPE",SubstVar "ctype"] 232 + cp*ctype*lemma{/(ip*inumber*igender*iperson/np*number*case*gender*nperson)}{/(np*number*case*gender*nperson\adjp*number*case*gender)};
225 lemma=czyj|jaki|ktรณry,pos=apron: 233 lemma=czyj|jaki|ktรณry,pos=apron:
226 QUANT[inumber=0,igender=0,iperson=0,nperson=0,plemma=0,ctype=int,number=T,case=T,gender=T] RAISED[ctype] 234 QUANT[inumber=0,igender=0,iperson=0,nperson=0,plemma=0,ctype=int,number=T,case=T,gender=T] RAISED[ctype]
227 - cp*ctype*lemma{/(ip*inumber*igender*iperson/prepnp*plemma*case)}{/(prepnp*plemma*case/np*number*case*gender*nperson)}{/(np*number*case*gender*nperson\adjp*number*case*gender)}; #["CTYPE",SubstVar "ctype"] 235 + cp*ctype*lemma{/(ip*inumber*igender*iperson/prepnp*plemma*case)}{/(prepnp*plemma*case/np*number*case*gender*nperson)}{/(np*number*case*gender*nperson\adjp*number*case*gender)};
228 lemma=czyj|jaki,pos=apron: 236 lemma=czyj|jaki,pos=apron:
229 QUANT[inumber=0,igender=0,iperson=0,ctype=rel,number=T,case=T,gender=T,person=ter] RAISED[ctype] 237 QUANT[inumber=0,igender=0,iperson=0,ctype=rel,number=T,case=T,gender=T,person=ter] RAISED[ctype]
230 - cp*ctype*lemma/(ip*inumber*igender*iperson/np*number*case*gender*person); #["CTYPE",SubstVar "ctype"] 238 + cp*ctype*lemma/(ip*inumber*igender*iperson/np*number*case*gender*person);
231 lemma=jaki|ktรณry,pos=apron: 239 lemma=jaki|ktรณry,pos=apron:
232 QUANT[inumber=0,igender=0,iperson=0,plemma=0,ctype=rel,number=T,case=T,gender=T,person=ter] RAISED[ctype] 240 QUANT[inumber=0,igender=0,iperson=0,plemma=0,ctype=rel,number=T,case=T,gender=T,person=ter] RAISED[ctype]
233 - cp*ctype*lemma{/(ip*inumber*igender*iperson/prepnp*plemma*case)}{/(prepnp*plemma*case/np*number*case*gender*person)}; #["CTYPE",SubstVar "ctype"] 241 + cp*ctype*lemma{/(ip*inumber*igender*iperson/prepnp*plemma*case)}{/(prepnp*plemma*case/np*number*case*gender*person)};
234 242
235 lemma=siฤ™,pos=qub: siฤ™; # FIXME: dodaฤ‡ make_np 243 lemma=siฤ™,pos=qub: siฤ™; # FIXME: dodaฤ‡ make_np
236 lemma=nie,pos=qub: nie; 244 lemma=nie,pos=qub: nie;
@@ -245,14 +253,14 @@ pos=qub: qub; @@ -245,14 +253,14 @@ pos=qub: qub;
245 pos=interj: interj; 253 pos=interj: interj;
246 lemma=-,pos=interp: hyphen; 254 lemma=-,pos=interp: hyphen;
247 lemma=?,pos=interp: int; 255 lemma=?,pos=interp: int;
248 -#lemma=โ€ž,pos=interp: Quot([number=0,case=0,gender=0,person=0],"(np*number*case*gender*person/rquot)/np*number*case*gender*person"),0.;  
249 -#lemma=ยซ,pos=interp: Quot([number=0,case=0,gender=0,person=0],"(np*number*case*gender*person/rquot2)/np*number*case*gender*person"),0.;  
250 -#lemma=ยป,pos=interp: Quot([number=0,case=0,gender=0,person=0],"(np*number*case*gender*person/rquot3)/np*number*case*gender*person"),0.; 256 +lemma=โ€ž,pos=interp: QUANT[number=0,case=0,gender=0,person=0] (np*number*case*gender*person/rquot)/np*number*case*gender*person; #SetAttr("QUOT",Val "+",Var "x"
  257 +lemma=ยซ,pos=interp: QUANT[number=0,case=0,gender=0,person=0] (np*number*case*gender*person/rquot2)/np*number*case*gender*person; #SetAttr("QUOT",Val "+",Var "x"
  258 +lemma=ยป,pos=interp: QUANT[number=0,case=0,gender=0,person=0] (np*number*case*gender*person/rquot3)/np*number*case*gender*person; #SetAttr("QUOT",Val "+",Var "x"
251 lemma=โ€,pos=interp: rquot; 259 lemma=โ€,pos=interp: rquot;
252 lemma=ยป,pos=interp: rquot2; 260 lemma=ยป,pos=interp: rquot2;
253 lemma=ยซ,pos=interp: rquot3; 261 lemma=ยซ,pos=interp: rquot3;
254 -#lemma=(,pos=interp: Inclusion "(inclusion/rparen)/(np*T*T*T*T+ip*T*T*T+adjp*T*T*T+prepnp*T*T);  
255 -#lemma=[,pos=interp: Inclusion "(inclusion/rparen2)/(np*T*T*T*T+ip*T*T*T+adjp*T*T*T+prepnp*T*T); 262 +lemma=(,pos=interp: (inclusion/rparen)/(np*T*T*T*T+ip*T*T*T+adjp*T*T*T+prepnp*T*T); #SetAttr("INCLUSION",Val "+",
  263 +lemma=[,pos=interp: (inclusion/rparen2)/(np*T*T*T*T+ip*T*T*T+adjp*T*T*T+prepnp*T*T); #SetAttr("INCLUSION",Val "+",
256 lemma=),pos=interp: rparen; 264 lemma=),pos=interp: rparen;
257 lemma=],pos=interp: rparen2; 265 lemma=],pos=interp: rparen2;
258 pos=unk: np*number*case*gender*person; 266 pos=unk: np*number*case*gender*person;
@@ -273,7 +281,7 @@ lemma=:,pos=interp: BRACKET or; @@ -273,7 +281,7 @@ lemma=:,pos=interp: BRACKET or;
273 lemma=:s,pos=interp: BRACKET <colon>\<speaker>; 281 lemma=:s,pos=interp: BRACKET <colon>\<speaker>;
274 lemma=:s,pos=interp: BRACKET (<colon>\<speaker>)/<squery>; 282 lemma=:s,pos=interp: BRACKET (<colon>\<speaker>)/<squery>;
275 lemma=<or-sentence>,pos=interp: BRACKET <root>/s; 283 lemma=<or-sentence>,pos=interp: BRACKET <root>/s;
276 -lemma=<or-sentence>,pos=interp: BRACKET ((<root>/<speaker-end>)/(ip*T*T*T/or))/or2; 284 +lemma=<or-sentence>,pos=interp: BRACKET ((<root>/<speaker-end>)/(ip*T*T*T/or))/or2; #FIXME: semantyka
277 lemma=</or-sentence>,pos=interp: BRACKET or2\?(ip*T*T*T+cp*int*T+np*sg*voc*T*T+interj); 285 lemma=</or-sentence>,pos=interp: BRACKET or2\?(ip*T*T*T+cp*int*T+np*sg*voc*T*T+interj);
278 lemma=<sentence>,pos=interp: BRACKET (<speaker>/<speaker-end>)/np*T*nom*T*T; 286 lemma=<sentence>,pos=interp: BRACKET (<speaker>/<speaker-end>)/np*T*nom*T*T;
279 lemma=</sentence>,pos=interp: BRACKET <speaker-end>; 287 lemma=</sentence>,pos=interp: BRACKET <speaker-end>;
LCGlexicon/test.ml
@@ -43,7 +43,7 @@ let examples = [ @@ -43,7 +43,7 @@ let examples = [
43 8, 5, 6, "","</clause>","interp", [],false; 43 8, 5, 6, "","</clause>","interp", [],false;
44 9, 6, 7, ".","</sentence>","interp", [],false; 44 9, 6, 7, ".","</sentence>","interp", [],false;
45 ],7;*) 45 ],7;*)
46 - "jaki",[ 46 + (* "jaki",[
47 1, 0, 1, "","<sentence>","interp", [],false; 47 1, 0, 1, "","<sentence>","interp", [],false;
48 2, 1, 2, "","<clause>","interp", [],false; 48 2, 1, 2, "","<clause>","interp", [],false;
49 3, 2, 3, "Jakiego","jaki","adj", [["sg"];["gen";"acc"];["m1";"m2"];["pos"]],false; 49 3, 2, 3, "Jakiego","jaki","adj", [["sg"];["gen";"acc"];["m1";"m2"];["pos"]],false;
@@ -53,7 +53,29 @@ let examples = [ @@ -53,7 +53,29 @@ let examples = [
53 7, 6, 7, "?","?","interp", [],false; 53 7, 6, 7, "?","?","interp", [],false;
54 8, 7, 8, "","</clause>","interp", [],false; 54 8, 7, 8, "","</clause>","interp", [],false;
55 9, 8, 9, ".","</sentence>","interp", [],false; 55 9, 8, 9, ".","</sentence>","interp", [],false;
56 - ],9; 56 + ],9; *)
  57 + (*"kot_i_pies",[
  58 + 1, 0, 1, "","<sentence>","interp", [],false;
  59 + 2, 1, 2, "","<clause>","interp", [],false;
  60 + 3, 2, 3, "Ala","Ala","subst", [["sg"];["nom"];["f"]],true;
  61 + 4, 3, 4, "ma","mieฤ‡","fin", [["sg"];["ter"];["imperf"]],false;
  62 + 5, 4, 5, "kota","kot","subst", [["sg"];["gen";"acc"];["m1";"m2"]],false;
  63 + 6, 5, 6, "i","i","conj", [],false;
  64 + 7, 6, 7, "psa","pies","subst", [["sg"];["gen";"acc"];["m2"]],false;
  65 + 8, 7, 8, "","</clause>","interp", [],false;
  66 + 9, 8, 9, ".","</sentence>","interp", [],false;
  67 + ],9;*)
  68 +"kotx",[
  69 + 1, 0, 1, "","<sentence>","interp", [],false;
  70 + 2, 1, 2, "","<clause>","interp", [],false;
  71 + 3, 2, 3, "Ala","Ala","subst", [["sg"];["nom"];["f"]],true;
  72 + 4, 3, 4, "ma","mieฤ‡","fin", [["sg"];["ter"];["imperf"]],false;
  73 + 5, 4, 5, "โ€ž","โ€ž","interp", [],false;
  74 + 6, 5, 6, "kota","kot","subst", [["sg"];["gen";"acc"];["m1";"m2"]],false;
  75 + 7, 6, 7, "โ€","โ€","interp", [],false;
  76 + 8, 7, 8, "","</clause>","interp", [],false;
  77 + 9, 8, 9, ".","</sentence>","interp", [],false;
  78 +],9;
57 ] 79 ]
58 80
59 let valence = [ 81 let valence = [
@@ -64,6 +86,7 @@ let valence = [ @@ -64,6 +86,7 @@ let valence = [
64 Both,Plus[One;Tensor[Atom "np";Top;Atom "gen";Top;Top]]]; 86 Both,Plus[One;Tensor[Atom "np";Top;Atom "gen";Top;Top]]];
65 [Lemma,Eq,["kot"];Pos,Eq,["subst"]],[Both,Plus[One;Tensor[Atom "adjp";AVar "number";AVar "case";AVar "gender"]]]; 87 [Lemma,Eq,["kot"];Pos,Eq,["subst"]],[Both,Plus[One;Tensor[Atom "adjp";AVar "number";AVar "case";AVar "gender"]]];
66 [Lemma,Eq,["kota"];Pos,Eq,["subst"]],[]; 88 [Lemma,Eq,["kota"];Pos,Eq,["subst"]],[];
  89 + [Lemma,Eq,["pies"];Pos,Eq,["subst"]],[];
67 ] 90 ]
68 91
69 let create_chart valence tokens last = 92 let create_chart valence tokens last =
LCGparser/ENIAM_LCGgraphOf.ml
@@ -30,7 +30,7 @@ let escape_string s = @@ -30,7 +30,7 @@ let escape_string s =
30 let string_of_node t = 30 let string_of_node t =
31 let l = [ 31 let l = [
32 "ORTH",Val t.orth;"LEMMA",Val t.lemma;"POS",Val t.pos;"ID",Val (string_of_int t.id);"WEIGHT",Val (string_of_float t.weight); 32 "ORTH",Val t.orth;"LEMMA",Val t.lemma;"POS",Val t.pos;"ID",Val (string_of_int t.id);"WEIGHT",Val (string_of_float t.weight);
33 - "SYMBOL",t.symbol;"ARG_SYMBOL",t.arg_symbol] @ t.attrs in 33 + "SYMBOL",t.symbol;"ARG_SYMBOL",t.arg_symbol;"ARG_DIR",Val t.arg_dir] @ t.attrs in
34 "{ " ^ String.concat " | " (Xlist.map l (fun (e,t) -> "{ " ^ e ^ " | " ^ escape_string (ENIAM_LCGstringOf.linear_term 0 t) ^ " }")) ^ " }" 34 "{ " ^ String.concat " | " (Xlist.map l (fun (e,t) -> "{ " ^ e ^ " | " ^ escape_string (ENIAM_LCGstringOf.linear_term 0 t) ^ " }")) ^ " }"
35 35
36 36
LCGparser/ENIAM_LCGlatexOf.ml
@@ -73,7 +73,7 @@ let rec linear_term c = function @@ -73,7 +73,7 @@ let rec linear_term c = function
73 "{\\left[\\begin{array}{ll}" ^ 73 "{\\left[\\begin{array}{ll}" ^
74 (String.concat "\\\\ " (Xlist.map (["ORTH",Val t.orth;"LEMMA",Val t.lemma;"POS",Val t.pos;"ID",Val (string_of_int t.id); 74 (String.concat "\\\\ " (Xlist.map (["ORTH",Val t.orth;"LEMMA",Val t.lemma;"POS",Val t.pos;"ID",Val (string_of_int t.id);
75 "WEIGHT",Val (string_of_float t.weight);"SYMBOL",t.symbol; 75 "WEIGHT",Val (string_of_float t.weight);"SYMBOL",t.symbol;
76 - "ARG_SYMBOL",t.arg_symbol;"ARGS",t.args] @ t.attrs) (fun (e,t) -> 76 + "ARG_SYMBOL",t.arg_symbol;"ARG_DIR",Val t.arg_dir;"ARGS",t.args] @ t.attrs) (fun (e,t) ->
77 "\\text{" ^ (Xlatex.escape_string e) ^ "} & " ^ (linear_term 0 t)))) ^ "\\end{array}\\right]}" 77 "\\text{" ^ (Xlatex.escape_string e) ^ "} & " ^ (linear_term 0 t)))) ^ "\\end{array}\\right]}"
78 (* | Morf m -> "\\text{" ^ Xlatex.escape_string (ENIAMwalStringOf.morf m) ^ "}" 78 (* | Morf m -> "\\text{" ^ Xlatex.escape_string (ENIAMwalStringOf.morf m) ^ "}"
79 | Gf s -> "\\text{" ^ Xlatex.escape_string (ENIAMwalStringOf.gf s) ^ "}" *) 79 | Gf s -> "\\text{" ^ Xlatex.escape_string (ENIAMwalStringOf.gf s) ^ "}" *)
LCGparser/ENIAM_LCGreductions.ml
@@ -226,6 +226,7 @@ let linear_term_beta_reduction4 references = @@ -226,6 +226,7 @@ let linear_term_beta_reduction4 references =
226 | "MORF",Morf morf -> Node{t with amorf=morf} 226 | "MORF",Morf morf -> Node{t with amorf=morf}
227 | "AROLE",Val arole -> Node{t with arole=arole} *) 227 | "AROLE",Val arole -> Node{t with arole=arole} *)
228 | "ARG_SYMBOL",symbol -> Node{t with arg_symbol=symbol} 228 | "ARG_SYMBOL",symbol -> Node{t with arg_symbol=symbol}
  229 + | "ARG_DIR",Val dir -> Node{t with arg_dir=dir}
229 | _ -> Node{t with attrs=(e,linear_term_beta_reduction subst s) :: t.attrs}) 230 | _ -> Node{t with attrs=(e,linear_term_beta_reduction subst s) :: t.attrs})
230 | Variant(e2,l) -> Variant(e2,Xlist.map l (fun (i,t) -> i,linear_term_beta_reduction subst (SetAttr(e,s,t)))) 231 | Variant(e2,l) -> Variant(e2,Xlist.map l (fun (i,t) -> i,linear_term_beta_reduction subst (SetAttr(e,s,t))))
231 | t -> SetAttr(e,s,t)) 232 | t -> SetAttr(e,s,t))
LCGparser/ENIAM_LCGrenderer.ml
@@ -95,7 +95,7 @@ let rec substitute_substvar v g = function @@ -95,7 +95,7 @@ let rec substitute_substvar v g = function
95 95
96 96
97 let empty_node = { 97 let empty_node = {
98 - orth=""; lemma=""; pos=""; weight=0.; id=0; symbol=Dot; arg_symbol=Dot; attrs=[]; args=Dot;} 98 + orth=""; lemma=""; pos=""; weight=0.; id=0; symbol=Dot; arg_symbol=Dot; arg_dir=""; attrs=[]; args=Dot;}
99 99
100 let variable_num_ref = ref 0 100 let variable_num_ref = ref 0
101 101
@@ -126,13 +126,21 @@ let make_arg_symbol l = @@ -126,13 +126,21 @@ let make_arg_symbol l =
126 | Top -> Val "T" 126 | Top -> Val "T"
127 | _ -> failwith "make_arg_symbol")) 127 | _ -> failwith "make_arg_symbol"))
128 128
129 -let rec make_term_arg = function  
130 - Tensor l -> let v = get_variable_name () in v, Cut(SetAttr("ARG_SYMBOL",make_arg_symbol l,Var v))  
131 - | Plus l -> let v = get_variable_name () in v, Case(Var v,Xlist.map l make_term_arg) 129 +let string_of_direction = function
  130 + Forward -> "forward"
  131 + | Backward -> "backward"
  132 + | Both -> "both"
  133 +
  134 +let rec make_term_arg dir = function
  135 + Tensor l ->
  136 + let v = get_variable_name () in
  137 + v, Cut(SetAttr("ARG_DIR",Val (string_of_direction dir),
  138 + SetAttr("ARG_SYMBOL",make_arg_symbol l,Var v)))
  139 + | Plus l -> let v = get_variable_name () in v, Case(Var v,Xlist.map l (make_term_arg dir))
132 (* | Imp(s,d,t2) -> *) 140 (* | Imp(s,d,t2) -> *)
133 | One -> get_variable_name (), Dot 141 | One -> get_variable_name (), Dot
134 | Maybe s -> 142 | Maybe s ->
135 - let v,arg = make_term_arg s in 143 + let v,arg = make_term_arg dir s in
136 let w = get_variable_name () in 144 let w = get_variable_name () in
137 w, Fix(Var w,Lambda(v,arg)) 145 w, Fix(Var w,Lambda(v,arg))
138 | _ -> failwith "make_term_arg" 146 | _ -> failwith "make_term_arg"
@@ -165,11 +173,11 @@ let is_raised = function @@ -165,11 +173,11 @@ let is_raised = function
165 let rec make_term_imp node outer_node = function 173 let rec make_term_imp node outer_node = function
166 | Imp(s,d,t2) -> 174 | Imp(s,d,t2) ->
167 if is_raised [d,t2] then make_raised_term_imp (Node node) outer_node Dot (Imp(s,d,t2)) else 175 if is_raised [d,t2] then make_raised_term_imp (Node node) outer_node Dot (Imp(s,d,t2)) else
168 - let v,arg = make_term_arg t2 in 176 + let v,arg = make_term_arg d t2 in
169 Lambda(v,make_term_imp (add_args node [arg]) outer_node s) 177 Lambda(v,make_term_imp (add_args node [arg]) outer_node s)
170 | ImpSet(s,l) -> 178 | ImpSet(s,l) ->
171 if is_raised l then make_raised_term_imp (Node node) outer_node Dot (ImpSet(s,l)) else 179 if is_raised l then make_raised_term_imp (Node node) outer_node Dot (ImpSet(s,l)) else
172 - let vars,args = List.split (Xlist.map l (fun (_,t) -> make_term_arg t)) in 180 + let vars,args = List.split (Xlist.map l (fun (d,t) -> make_term_arg d t)) in
173 LambdaSet(vars,make_term_imp (add_args node args) outer_node s) 181 LambdaSet(vars,make_term_imp (add_args node args) outer_node s)
174 | Tensor l -> Node node 182 | Tensor l -> Node node
175 | _ -> failwith "make_term_imp" 183 | _ -> failwith "make_term_imp"
LCGparser/ENIAM_LCGstringOf.ml
@@ -56,7 +56,7 @@ let rec linear_term c = function @@ -56,7 +56,7 @@ let rec linear_term c = function
56 "[" ^ 56 "[" ^
57 (String.concat "; " (Xlist.map (["ORTH",Val t.orth;"LEMMA",Val t.lemma;"POS",Val t.pos;"ID",Val (string_of_int t.id); 57 (String.concat "; " (Xlist.map (["ORTH",Val t.orth;"LEMMA",Val t.lemma;"POS",Val t.pos;"ID",Val (string_of_int t.id);
58 "WEIGHT",Val (string_of_float t.weight);"SYMBOL",t.symbol; 58 "WEIGHT",Val (string_of_float t.weight);"SYMBOL",t.symbol;
59 - "ARG_SYMBOL",t.arg_symbol;"ARGS",t.args] @ t.attrs) (fun (e,t) -> 59 + "ARG_SYMBOL",t.arg_symbol;"ARG_DIR",Val t.arg_dir;"ARGS",t.args] @ t.attrs) (fun (e,t) ->
60 e ^ ": " ^ (linear_term 0 t)))) ^ "]" 60 e ^ ": " ^ (linear_term 0 t)))) ^ "]"
61 (* | Morf m -> ENIAMwalStringOf.morf m 61 (* | Morf m -> ENIAMwalStringOf.morf m
62 | Gf s -> ENIAMwalStringOf.gf s*) 62 | Gf s -> ENIAMwalStringOf.gf s*)
LCGparser/ENIAM_LCGtypes.ml
@@ -31,6 +31,7 @@ type node = { @@ -31,6 +31,7 @@ type node = {
31 id: int; 31 id: int;
32 symbol: linear_term; 32 symbol: linear_term;
33 arg_symbol: linear_term; 33 arg_symbol: linear_term;
  34 + arg_dir: string;
34 (*agf: ENIAMwalTypes.gf; 35 (*agf: ENIAMwalTypes.gf;
35 amorf: ENIAMwalTypes.morf; 36 amorf: ENIAMwalTypes.morf;
36 arole: string; 37 arole: string;