Commit e5c81a13f6d4bd867a92c7e9d7f7c02fa09e72a0
1 parent
a1931d44
oznaczanie kierunku implikacji
Showing
9 changed files
with
93 additions
and
91 deletions
LCGlexicon/ENIAM_LCGlexicon.ml
... | ... | @@ -152,55 +152,6 @@ let make_quantification e rules = |
152 | 152 | let syntax = if bracket then ENIAM_LCGtypes.Bracket(true,true,syntax) else ENIAM_LCGtypes.Bracket(false,false,syntax) in |
153 | 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 | 155 | (* let translate_negation = function |
205 | 156 | (Negation:negation) -> ["neg"] |
206 | 157 | | Aff -> ["aff"] |
... | ... | @@ -231,8 +182,8 @@ let parse_quants_range quant = |
231 | 182 | | GerAtrs(m,le,neg,a) -> [Negation,Eq,translate_negation neg;Aspect,Eq,translate_aspect a] |
232 | 183 | | NonPersAtrs(m,le,role,role_attr,neg,a) -> [Negation,Eq,translate_negation neg;Aspect,Eq,translate_aspect a] |
233 | 184 | | ComprepAtrs _ -> failwith "apply_valence_selectors" *) |
234 | - ***) | |
235 | -(* FIXME: argumenty X i raised i inne *) | |
185 | + | |
186 | +(* FIXME: argumenty X *) | |
236 | 187 | |
237 | 188 | (* let render_schema schema = |
238 | 189 | Xlist.map schema (function |
... | ... | @@ -253,11 +204,12 @@ let parse_quants_range quant = |
253 | 204 | | _ -> l) |
254 | 205 | else (cats,(bracket,quant,syntax,semantics),weight) :: l) *) |
255 | 206 | |
256 | -(* FIXME: ustawienie wartoลci symbol *) | |
257 | 207 | (* FIXME: problem z atrybutami przy zamianie kolejnoลci rzฤdnikรณw *) |
258 | 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 | 210 | | Lemma -> attrs |
211 | + | Pos -> attrs | |
212 | + | Pos2 -> attrs | |
261 | 213 | | Cat -> ("CAT",SubstVar "cat") :: attrs |
262 | 214 | | Number -> ("NUM",SubstVar "number") :: attrs |
263 | 215 | | Case -> ("CASE",SubstVar "case") :: attrs |
... | ... | @@ -273,7 +225,16 @@ let make_node id orth lemma pos syntax weight cat_list is_raised = |
273 | 225 | | Nsyn -> ("NSYN", SubstVar "nsyn") :: attrs |
274 | 226 | | Nsem -> ("NSEM", SubstVar "nsem") :: attrs |
275 | 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 | 238 | (* | "lex" -> ("LEX",Val "+") :: attrs *) |
278 | 239 | (* | s -> failwith ("make_node: " ^ (string_of_selector s))) in *) |
279 | 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 | 137 | # FIXME: dwa znaczenia jak: pytanie o cechฤ lub spรณjnik |
138 | 138 | lemma=jak|skฤ d|dokฤ d|gdzie|ktรณrฤdy|kiedy,pos=adv: |
139 | 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 | 141 | lemma=odkฤ d|dlaczego|czemu,pos=adv: |
142 | 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 | 144 | lemma=gdy,pos=adv: |
145 | 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 | 148 | # czasowniki |
149 | 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 | 195 | |
196 | 196 | pos=comp: QUANT[ctype=sub] cp*ctype*lemma/ip*T*T*T; |
197 | 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 | 215 | lemma=co|kto,pos=subst: |
208 | 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 | 218 | lemma=co|kto,pos=subst: |
211 | 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 | 221 | lemma=to,pos=subst: |
214 | 222 | QUANT[ctype=0,plemma=0,number=T,case=T,gender=T,person=ter] |
215 | 223 | ncp*number*case*gender*person*ctype*plemma{\(1+qub),/(1+inclusion)}{/cp*ctype*plemma}; |
216 | 224 | pos=ppron3,praep=praep: |
217 | 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 | 227 | lemma=ile,pos=num: # FIXME: iloma ma bezpoลredni podrzฤdnik rzeczownikowy, a ile nie # FIXME: mwe "o ile, na ile" |
220 | 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 | 230 | lemma=czyj|jaki|ktรณry,pos=apron: |
223 | 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 | 233 | lemma=czyj|jaki|ktรณry,pos=apron: |
226 | 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 | 236 | lemma=czyj|jaki,pos=apron: |
229 | 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 | 239 | lemma=jaki|ktรณry,pos=apron: |
232 | 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 | 243 | lemma=siฤ,pos=qub: siฤ; # FIXME: dodaฤ make_np |
236 | 244 | lemma=nie,pos=qub: nie; |
... | ... | @@ -245,14 +253,14 @@ pos=qub: qub; |
245 | 253 | pos=interj: interj; |
246 | 254 | lemma=-,pos=interp: hyphen; |
247 | 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 | 259 | lemma=โ,pos=interp: rquot; |
252 | 260 | lemma=ยป,pos=interp: rquot2; |
253 | 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 | 264 | lemma=),pos=interp: rparen; |
257 | 265 | lemma=],pos=interp: rparen2; |
258 | 266 | pos=unk: np*number*case*gender*person; |
... | ... | @@ -273,7 +281,7 @@ lemma=:,pos=interp: BRACKET or; |
273 | 281 | lemma=:s,pos=interp: BRACKET <colon>\<speaker>; |
274 | 282 | lemma=:s,pos=interp: BRACKET (<colon>\<speaker>)/<squery>; |
275 | 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 | 285 | lemma=</or-sentence>,pos=interp: BRACKET or2\?(ip*T*T*T+cp*int*T+np*sg*voc*T*T+interj); |
278 | 286 | lemma=<sentence>,pos=interp: BRACKET (<speaker>/<speaker-end>)/np*T*nom*T*T; |
279 | 287 | lemma=</sentence>,pos=interp: BRACKET <speaker-end>; |
... | ... |
LCGlexicon/test.ml
... | ... | @@ -43,7 +43,7 @@ let examples = [ |
43 | 43 | 8, 5, 6, "","</clause>","interp", [],false; |
44 | 44 | 9, 6, 7, ".","</sentence>","interp", [],false; |
45 | 45 | ],7;*) |
46 | - "jaki",[ | |
46 | + (* "jaki",[ | |
47 | 47 | 1, 0, 1, "","<sentence>","interp", [],false; |
48 | 48 | 2, 1, 2, "","<clause>","interp", [],false; |
49 | 49 | 3, 2, 3, "Jakiego","jaki","adj", [["sg"];["gen";"acc"];["m1";"m2"];["pos"]],false; |
... | ... | @@ -53,7 +53,29 @@ let examples = [ |
53 | 53 | 7, 6, 7, "?","?","interp", [],false; |
54 | 54 | 8, 7, 8, "","</clause>","interp", [],false; |
55 | 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 | 81 | let valence = [ |
... | ... | @@ -64,6 +86,7 @@ let valence = [ |
64 | 86 | Both,Plus[One;Tensor[Atom "np";Top;Atom "gen";Top;Top]]]; |
65 | 87 | [Lemma,Eq,["kot"];Pos,Eq,["subst"]],[Both,Plus[One;Tensor[Atom "adjp";AVar "number";AVar "case";AVar "gender"]]]; |
66 | 88 | [Lemma,Eq,["kota"];Pos,Eq,["subst"]],[]; |
89 | + [Lemma,Eq,["pies"];Pos,Eq,["subst"]],[]; | |
67 | 90 | ] |
68 | 91 | |
69 | 92 | let create_chart valence tokens last = |
... | ... |
LCGparser/ENIAM_LCGgraphOf.ml
... | ... | @@ -30,7 +30,7 @@ let escape_string s = |
30 | 30 | let string_of_node t = |
31 | 31 | let l = [ |
32 | 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 | 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 | 73 | "{\\left[\\begin{array}{ll}" ^ |
74 | 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 | 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 | 77 | "\\text{" ^ (Xlatex.escape_string e) ^ "} & " ^ (linear_term 0 t)))) ^ "\\end{array}\\right]}" |
78 | 78 | (* | Morf m -> "\\text{" ^ Xlatex.escape_string (ENIAMwalStringOf.morf m) ^ "}" |
79 | 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 | 226 | | "MORF",Morf morf -> Node{t with amorf=morf} |
227 | 227 | | "AROLE",Val arole -> Node{t with arole=arole} *) |
228 | 228 | | "ARG_SYMBOL",symbol -> Node{t with arg_symbol=symbol} |
229 | + | "ARG_DIR",Val dir -> Node{t with arg_dir=dir} | |
229 | 230 | | _ -> Node{t with attrs=(e,linear_term_beta_reduction subst s) :: t.attrs}) |
230 | 231 | | Variant(e2,l) -> Variant(e2,Xlist.map l (fun (i,t) -> i,linear_term_beta_reduction subst (SetAttr(e,s,t)))) |
231 | 232 | | t -> SetAttr(e,s,t)) |
... | ... |
LCGparser/ENIAM_LCGrenderer.ml
... | ... | @@ -95,7 +95,7 @@ let rec substitute_substvar v g = function |
95 | 95 | |
96 | 96 | |
97 | 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 | 100 | let variable_num_ref = ref 0 |
101 | 101 | |
... | ... | @@ -126,13 +126,21 @@ let make_arg_symbol l = |
126 | 126 | | Top -> Val "T" |
127 | 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 | 140 | (* | Imp(s,d,t2) -> *) |
133 | 141 | | One -> get_variable_name (), Dot |
134 | 142 | | Maybe s -> |
135 | - let v,arg = make_term_arg s in | |
143 | + let v,arg = make_term_arg dir s in | |
136 | 144 | let w = get_variable_name () in |
137 | 145 | w, Fix(Var w,Lambda(v,arg)) |
138 | 146 | | _ -> failwith "make_term_arg" |
... | ... | @@ -165,11 +173,11 @@ let is_raised = function |
165 | 173 | let rec make_term_imp node outer_node = function |
166 | 174 | | Imp(s,d,t2) -> |
167 | 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 | 177 | Lambda(v,make_term_imp (add_args node [arg]) outer_node s) |
170 | 178 | | ImpSet(s,l) -> |
171 | 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 | 181 | LambdaSet(vars,make_term_imp (add_args node args) outer_node s) |
174 | 182 | | Tensor l -> Node node |
175 | 183 | | _ -> failwith "make_term_imp" |
... | ... |
LCGparser/ENIAM_LCGstringOf.ml
... | ... | @@ -56,7 +56,7 @@ let rec linear_term c = function |
56 | 56 | "[" ^ |
57 | 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 | 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 | 60 | e ^ ": " ^ (linear_term 0 t)))) ^ "]" |
61 | 61 | (* | Morf m -> ENIAMwalStringOf.morf m |
62 | 62 | | Gf s -> ENIAMwalStringOf.gf s*) |
... | ... |