Commit 7989117c2342518994b51ff9a429abb6c1fe2768
rozwiązanie konfliktów przy merge dep_trees
Showing
9 changed files
with
214 additions
and
199 deletions
diagnostics/LCGfields.ml
0 → 100644
1 | +open LCGtypes | ||
2 | +open Xstd | ||
3 | +open ExecTypes | ||
4 | + | ||
5 | +let eniam = "eniam" | ||
6 | +let conll = "conll" | ||
7 | + | ||
8 | +module Strings = | ||
9 | + struct | ||
10 | + type t = string | ||
11 | + let compare a b = Pervasives.compare a b | ||
12 | + end | ||
13 | + | ||
14 | +module StrMap = Map.Make(Strings) | ||
15 | + | ||
16 | +let field_map = StrMap.(empty |> add eniam (ref empty) |> add conll (ref empty)) | ||
17 | + | ||
18 | +let add_to_field_map str_mode field content = | ||
19 | + let f_map = StrMap.find str_mode field_map in | ||
20 | + let c_map = if StrMap.mem field !f_map | ||
21 | + then StrMap.find field !f_map | ||
22 | + else let temp = ref StrMap.empty in | ||
23 | + f_map := StrMap.add field temp !f_map; temp in | ||
24 | + if StrMap.mem content !c_map | ||
25 | + then incr (StrMap.find content !c_map) | ||
26 | + else c_map := StrMap.add content (ref 1) !c_map | ||
27 | + | ||
28 | +let print_field_map () = | ||
29 | + StrMap.iter (fun key1 val1 -> | ||
30 | + print_endline key1; | ||
31 | + StrMap.iter (fun key2 val2 -> | ||
32 | + let i = ref 0 in | ||
33 | + print_endline ("\t" ^ key2); | ||
34 | + StrMap.iter (fun key3 val3 -> | ||
35 | + i := !i + !val3; | ||
36 | + print_endline ("\t\t" ^ key3 ^ "\t\t" ^ (string_of_int !val3)) | ||
37 | + ) !val2; | ||
38 | + print_endline ("\tsum: " ^ (string_of_int !i)) | ||
39 | + ) !val1 | ||
40 | + ) field_map; | ||
41 | + print_newline () | ||
42 | + | ||
43 | + | ||
44 | +let field_of_node str_mode n = function | ||
45 | + "arole" -> let content = if n.arole = "" then "null" else n.arole in | ||
46 | + add_to_field_map str_mode "arole" content; content | ||
47 | + | _ -> failwith "field_of_node: ni" | ||
48 | + | ||
49 | +let field_of_linear_term str_node field = function | ||
50 | + Node n -> field_of_node str_node n field | ||
51 | + | _ -> failwith "field_of_linear_term: ni" | ||
52 | + | ||
53 | +let field_of_dependency_tree str_node fields dep_tree = | ||
54 | + String.concat "\n" (Xlist.map fields (fun field -> | ||
55 | + Array.fold_left (fun acc x -> | ||
56 | + acc ^ (field_of_linear_term str_node field x) ^ "\n\t\t" ) "" dep_tree)) | ||
57 | + | ||
58 | +let field_of_eniam_sentence fields tokens (result : eniam_parse_result) = | ||
59 | + match result.status with | ||
60 | + Idle -> "Idle" | ||
61 | + (* | PreprocessingError -> "PreprocessingError" *) | ||
62 | + | LexiconError -> "LexiconError" | ||
63 | + | ParseError -> "ParseError" | ||
64 | + | ParseTimeout -> "ParseTimeout" | ||
65 | + | NotParsed -> "NotParsed" | ||
66 | + | ReductionError -> "ReductionError" | ||
67 | + | TooManyNodes -> "TooManyNodes" | ||
68 | + | NotReduced -> "NotReduced" | ||
69 | + | SemError -> "SemError" | ||
70 | + (* | NotTranslated -> "NotTranslated" *) | ||
71 | + | Parsed -> ignore ("Parsed\n\t\t" ^ (field_of_dependency_tree eniam fields result.dependency_tree)); "Parsed\n" | ||
72 | + | _ -> failwith "field_of_eniam_sentence" | ||
73 | + | ||
74 | +let field_of_conll_sentence fields tokens (result : conll_parse_result) = | ||
75 | + match result.status with | ||
76 | + Idle -> "Idle" | ||
77 | + (* | PreprocessingError -> "PreprocessingError" *) | ||
78 | + | LexiconError -> "LexiconError" | ||
79 | + | ParseError -> "ParseError" | ||
80 | + | ParseTimeout -> "ParseTimeout" | ||
81 | + | NotParsed -> "NotParsed" | ||
82 | + | ReductionError -> "ReductionError" | ||
83 | + | TooManyNodes -> "TooManyNodes" | ||
84 | + | NotReduced -> "NotReduced" | ||
85 | + | SemError -> "SemError" | ||
86 | + (* | NotTranslated -> "NotTranslated" *) | ||
87 | + | Parsed -> ignore ("Parsed\n\t\t" ^ (field_of_dependency_tree conll fields result.dependency_tree)); "Parsed\n" | ||
88 | + | _ -> failwith "field_of_conll_sentence" | ||
89 | + | ||
90 | + | ||
91 | +let rec field_of_sentence fields tokens = function | ||
92 | + RawSentence s -> s | ||
93 | + | StructSentence(_,paths,last) -> "StructSentence" | ||
94 | + | DepSentence(_,paths) -> "DepSentence" | ||
95 | + | ENIAMSentence result -> field_of_eniam_sentence fields tokens result | ||
96 | + | CONLLSentence result -> field_of_conll_sentence fields tokens result | ||
97 | + | QuotedSentences sentences -> "QuotedSentences" | ||
98 | + | AltSentence l -> String.concat "\n\t" (Xlist.map l (fun (m, s) -> | ||
99 | + Visualization.string_of_mode m ^ "\t" ^ (field_of_sentence fields tokens s))) | ||
100 | + (* | _ -> failwith "field_of_sentence: ni" *) | ||
101 | + | ||
102 | +let rec field_of_paragraph fields tokens = function | ||
103 | + RawParagraph s -> print_endline "no fields detected: only raw paragraph"; s | ||
104 | + | StructParagraph sentences -> | ||
105 | + String.concat "\n\t" (Xlist.map sentences (fun p -> field_of_sentence fields tokens p.psentence)) | ||
106 | + | AltParagraph l -> | ||
107 | + String.concat "\n" (Xlist.map (List.filter (fun (m,t) -> m = ENIAM || m = CONLL) l) (fun (m,t) -> | ||
108 | + Visualization.string_of_mode m ^ "\n\t" ^ (field_of_paragraph fields tokens t))) | ||
109 | + (* field_of_paragraph fields tokens (snd @@ List.find (fun (mode,text) -> mode = ENIAM || mode = CONLL) l) *) | ||
110 | + | ||
111 | +let rec print_fields_rec fields = function | ||
112 | + RawText s -> print_endline "no fields detected: only raw text"; | ||
113 | +| StructText(paragraphs,tokens) -> | ||
114 | + print_endline (String.concat "\n\n" (Xlist.map paragraphs (field_of_paragraph fields tokens)) ^ "\n") | ||
115 | +| AltText l -> | ||
116 | + print_fields_rec fields (snd @@ List.find (fun (m,t) -> m = Struct || m = ENIAM || m = CONLL) l) | ||
117 | + | ||
118 | +let print_fields fields text = | ||
119 | + print_fields_rec fields text | ||
120 | + (* ; print_field_map () *) |
diagnostics/treeChange.ml
0 → 100644
1 | +open Xstd | ||
2 | +open PreTypes | ||
3 | + | ||
4 | +let remove_interps paths tokens = | ||
5 | + let paths_ls = Array.to_list paths in | ||
6 | + Array.iter (fun (id,super,label) -> | ||
7 | + if ((ExtArray.get tokens id).orth = "," || | ||
8 | + (ExtArray.get tokens id).orth = "." || | ||
9 | + (ExtArray.get tokens id).orth = "-") && | ||
10 | + not (List.exists (fun (_,super,_) -> super = id) paths_ls) | ||
11 | + then paths.(id) <- (0,-1,"")) paths; paths | ||
12 | + | ||
13 | +let move_comp paths tokens = | ||
14 | + let correct_dep (id,super,label) = | ||
15 | + let is_comp = function | ||
16 | + Lemma(_,"comp",_) -> true | ||
17 | + | _ -> false in | ||
18 | + if ((ExtArray.get tokens id).orth = "by" || (ExtArray.get tokens id).orth = "że") | ||
19 | + && is_comp (ExtArray.get tokens id).token | ||
20 | + then (let id_S, super_S, label_S = paths.(super) in | ||
21 | + paths.(id) <- (id,super_S,label); | ||
22 | + paths.(super) <- (id_S, id, label_S)) in | ||
23 | + Array.iter correct_dep paths; paths |
parser/LCGchart.ml
@@ -137,40 +137,46 @@ let assign_not_parsed left right (t,sem) = | @@ -137,40 +137,46 @@ let assign_not_parsed left right (t,sem) = | ||
137 | t, sem | 137 | t, sem |
138 | 138 | ||
139 | let rec dep_parse_rec references start_time timeout time_fun (DepNode(id,left,funct,right)) = | 139 | let rec dep_parse_rec references start_time timeout time_fun (DepNode(id,left,funct,right)) = |
140 | + (* printf "dep_parse_rec 1 id=%d\n%!" id; *) | ||
140 | let time = time_fun () in | 141 | let time = time_fun () in |
141 | if time -. start_time > timeout then raise (Timeout(time -. start_time)) else | 142 | if time -. start_time > timeout then raise (Timeout(time -. start_time)) else |
142 | let left = Xlist.map left (dep_parse_rec references start_time timeout time_fun) in | 143 | let left = Xlist.map left (dep_parse_rec references start_time timeout time_fun) in |
143 | let right = Xlist.map right (dep_parse_rec references start_time timeout time_fun) in | 144 | let right = Xlist.map right (dep_parse_rec references start_time timeout time_fun) in |
144 | - (* printf "dep_parse_rec id=%d\n" id; *) | 145 | + (* printf "dep_parse_rec 2 id=%d\n%!" id; *) |
145 | let funct,left = Xlist.fold left (funct,[]) (fun (funct,left) arg -> | 146 | let funct,left = Xlist.fold left (funct,[]) (fun (funct,left) arg -> |
146 | (* printf "larg: %s\n" (LCGstringOf.symbol_sem_list arg); | 147 | (* printf "larg: %s\n" (LCGstringOf.symbol_sem_list arg); |
147 | printf "funct: %s\n" (LCGstringOf.symbol_sem_list funct); *) | 148 | printf "funct: %s\n" (LCGstringOf.symbol_sem_list funct); *) |
148 | match LCGrules.backward_application references arg funct with | 149 | match LCGrules.backward_application references arg funct with |
149 | [] -> (*printf "NOT PARSED\n";*) funct, arg :: left | 150 | [] -> (*printf "NOT PARSED\n";*) funct, arg :: left |
150 | | funct -> merge_sems funct, left) in | 151 | | funct -> merge_sems funct, left) in |
152 | + (* printf "dep_parse_rec 3 |right|=%d \n%!" (Xlist.size right); *) | ||
151 | let funct,right = Xlist.fold right (funct,[]) (fun (funct,right) arg -> | 153 | let funct,right = Xlist.fold right (funct,[]) (fun (funct,right) arg -> |
152 | (* printf "funct: %s\n" (LCGstringOf.symbol_sem_list funct); | 154 | (* printf "funct: %s\n" (LCGstringOf.symbol_sem_list funct); |
153 | - printf "rarg: %s\n" (LCGstringOf.symbol_sem_list arg); *) | 155 | + printf "rarg: %s\n" (LCGstringOf.symbol_sem_list arg); *) |
154 | match LCGrules.forward_application references funct arg with | 156 | match LCGrules.forward_application references funct arg with |
155 | [] -> (*printf "NOT PARSED\n";*) funct, arg :: right | 157 | [] -> (*printf "NOT PARSED\n";*) funct, arg :: right |
156 | | funct -> merge_sems funct, right) in | 158 | | funct -> merge_sems funct, right) in |
157 | - if left = [] && right = [] then funct else | 159 | + (* printf "dep_parse_rec 4\n%!"; *) |
160 | + if left = [] && right = [] then funct else ( | ||
158 | let xleft = Xlist.rev_map left (fun arg -> Xlist.rev_map arg LCGrules.set_x_type) in | 161 | let xleft = Xlist.rev_map left (fun arg -> Xlist.rev_map arg LCGrules.set_x_type) in |
159 | let xright = Xlist.rev_map right (fun arg -> Xlist.rev_map arg LCGrules.set_x_type) in | 162 | let xright = Xlist.rev_map right (fun arg -> Xlist.rev_map arg LCGrules.set_x_type) in |
163 | + (* printf "dep_parse_rec 5\n%!"; *) | ||
160 | let xfunct,xleft = Xlist.fold xleft (funct,[]) (fun (xfunct,left) arg -> | 164 | let xfunct,xleft = Xlist.fold xleft (funct,[]) (fun (xfunct,left) arg -> |
161 | (* printf "larg: %s\n" (LCGstringOf.symbol_sem_list arg); | 165 | (* printf "larg: %s\n" (LCGstringOf.symbol_sem_list arg); |
162 | printf "funct: %s\n" (LCGstringOf.symbol_sem_list xfunct); *) | 166 | printf "funct: %s\n" (LCGstringOf.symbol_sem_list xfunct); *) |
163 | match LCGrules.backward_application references arg xfunct with | 167 | match LCGrules.backward_application references arg xfunct with |
164 | [] -> (*printf "NOT PARSED\n";*) xfunct, arg :: left | 168 | [] -> (*printf "NOT PARSED\n";*) xfunct, arg :: left |
165 | | xfunct -> merge_sems xfunct, left) in | 169 | | xfunct -> merge_sems xfunct, left) in |
170 | + (* printf "dep_parse_rec 6\n%!"; *) | ||
166 | let xfunct,xright = Xlist.fold xright (xfunct,[]) (fun (xfunct,right) arg -> | 171 | let xfunct,xright = Xlist.fold xright (xfunct,[]) (fun (xfunct,right) arg -> |
167 | (* printf "funct: %s\n" (LCGstringOf.symbol_sem_list xfunct); | 172 | (* printf "funct: %s\n" (LCGstringOf.symbol_sem_list xfunct); |
168 | printf "rarg: %s\n" (LCGstringOf.symbol_sem_list arg); *) | 173 | printf "rarg: %s\n" (LCGstringOf.symbol_sem_list arg); *) |
169 | match LCGrules.forward_application references xfunct arg with | 174 | match LCGrules.forward_application references xfunct arg with |
170 | [] -> (*printf "NOT PARSED\n";*) xfunct, arg :: right | 175 | [] -> (*printf "NOT PARSED\n";*) xfunct, arg :: right |
171 | | xfunct -> merge_sems xfunct, right) in | 176 | | xfunct -> merge_sems xfunct, right) in |
177 | + (* printf "dep_parse_rec 7\n%!"; *) | ||
172 | if xleft = [] && xright = [] then xfunct else | 178 | if xleft = [] && xright = [] then xfunct else |
173 | - raise (NotDepParsed(id,left,funct,right)) | 179 | + raise (NotDepParsed(id,left,funct,right))) |
174 | 180 | ||
175 | let dep_parse dep_chart references timeout time_fun = | 181 | let dep_parse dep_chart references timeout time_fun = |
176 | (* print_endline "dep_parse"; *) | 182 | (* print_endline "dep_parse"; *) |
parser/LCGlexicon.ml
@@ -1169,6 +1169,7 @@ let rec process_interp (d:PreTypes.token_record) = function (* FIXME: rozpoznawa | @@ -1169,6 +1169,7 @@ let rec process_interp (d:PreTypes.token_record) = function (* FIXME: rozpoznawa | ||
1169 | [LCGrenderer.make_frame_simple quant t d ( batrs)] | 1169 | [LCGrenderer.make_frame_simple quant t d ( batrs)] |
1170 | | _,"xxx",[] -> [] (* FIXME *) | 1170 | | _,"xxx",[] -> [] (* FIXME *) |
1171 | | ".","interp",[] -> [LCGrenderer.make_frame_simple [] ["dot"] d (make_node "." "interp" d.weight 0 [])] (* FIXME: to jest potrzebne przy CONLL *) | 1171 | | ".","interp",[] -> [LCGrenderer.make_frame_simple [] ["dot"] d (make_node "." "interp" d.weight 0 [])] (* FIXME: to jest potrzebne przy CONLL *) |
1172 | + | lemma,"brev",_ -> [LCGrenderer.make_frame_simple [] ["brev"] d (make_node lemma "brev" d.weight 0 [])] (* FIXME: to jest potrzebne przy CONLL *) | ||
1172 | | "<conll_root>","interp",[] -> | 1173 | | "<conll_root>","interp",[] -> |
1173 | let batrs = (make_node "<conll_root>" "interp" d.weight 0 []) in | 1174 | let batrs = (make_node "<conll_root>" "interp" d.weight 0 []) in |
1174 | let schema_list = [[schema_field CLAUSE "Clause" Forward [Phrase IP;Phrase (CP(Int,CompUndef));Phrase (NP(Case "voc"));Phrase (Lex "interj")]]] in | 1175 | let schema_list = [[schema_field CLAUSE "Clause" Forward [Phrase IP;Phrase (CP(Int,CompUndef));Phrase (NP(Case "voc"));Phrase (Lex "interj")]]] in |
parser/LCGrules.ml
@@ -135,6 +135,7 @@ let rec imp_selector s dir fv in_sem d = function | @@ -135,6 +135,7 @@ let rec imp_selector s dir fv in_sem d = function | ||
135 | let rec impset_selector s dir fv in_sem rev = function | 135 | let rec impset_selector s dir fv in_sem rev = function |
136 | [],_ -> [] | 136 | [],_ -> [] |
137 | | (d,Maybe t) :: l,i -> | 137 | | (d,Maybe t) :: l,i -> |
138 | + (* print_endline "impset_selector Maybe"; *) | ||
138 | (if d = Both || d = dir then | 139 | (if d = Both || d = dir then |
139 | let x = get_new_variable () in | 140 | let x = get_new_variable () in |
140 | let y = get_new_variable () in | 141 | let y = get_new_variable () in |
@@ -143,6 +144,7 @@ let rec impset_selector s dir fv in_sem rev = function | @@ -143,6 +144,7 @@ let rec impset_selector s dir fv in_sem rev = function | ||
143 | else []) @ | 144 | else []) @ |
144 | (impset_selector s dir fv in_sem ((d,Maybe t) :: rev) (l,i+1)) | 145 | (impset_selector s dir fv in_sem ((d,Maybe t) :: rev) (l,i+1)) |
145 | | (d,t) :: l,i -> | 146 | | (d,t) :: l,i -> |
147 | + (* print_endline "impset_selector"; *) | ||
146 | (if d = Both || d = dir then | 148 | (if d = Both || d = dir then |
147 | let s = if rev = [] && l = [] then s else ImpSet(s,List.rev rev @ l) in | 149 | let s = if rev = [] && l = [] then s else ImpSet(s,List.rev rev @ l) in |
148 | [fv,s,t,LambdaRot(i,in_sem)] | 150 | [fv,s,t,LambdaRot(i,in_sem)] |
@@ -231,6 +233,7 @@ and deduce_optarg in_sem t = | @@ -231,6 +233,7 @@ and deduce_optarg in_sem t = | ||
231 | String.concat " " (Xlist.map l (fun (_,_,sem) -> LCGstringOf.linear_term 0 sem)));*) failwith "deduce_optarg" | 233 | String.concat " " (Xlist.map l (fun (_,_,sem) -> LCGstringOf.linear_term 0 sem)));*) failwith "deduce_optarg" |
232 | 234 | ||
233 | and deduce_optargs sem l = | 235 | and deduce_optargs sem l = |
236 | + (* print_endline "deduce_optargs"; *) | ||
234 | let b,sems = Xlist.fold (List.rev l) (true,[]) (fun (b,sems) (_,t) -> | 237 | let b,sems = Xlist.fold (List.rev l) (true,[]) (fun (b,sems) (_,t) -> |
235 | if not b then b,[] else | 238 | if not b then b,[] else |
236 | let l = deduce_matching empty_fv empty_fv (Dot(*Triple(Dot,Dot,Dot)*)) (One,t) in | 239 | let l = deduce_matching empty_fv empty_fv (Dot(*Triple(Dot,Dot,Dot)*)) (One,t) in |
@@ -240,45 +243,59 @@ and deduce_optargs sem l = | @@ -240,45 +243,59 @@ and deduce_optargs sem l = | ||
240 | [Xlist.fold sems sem (fun sem (_,_,s) -> App(LambdaRot(1,sem),s))] | 243 | [Xlist.fold sems sem (fun sem (_,_,s) -> App(LambdaRot(1,sem),s))] |
241 | else [] | 244 | else [] |
242 | 245 | ||
243 | -let make_forward sem l = | 246 | +let make_forward sem l = (* FIXME: po co jest ta procedura? *) |
247 | + (* print_endline "make_forward 1"; *) | ||
244 | let l,sem,_ = Xlist.fold l ([],sem,1) (fun (l,sem,i) -> function | 248 | let l,sem,_ = Xlist.fold l ([],sem,1) (fun (l,sem,i) -> function |
245 | Forward,t -> (Forward,t) :: l,sem,i+1 | 249 | Forward,t -> (Forward,t) :: l,sem,i+1 |
246 | | Both,t -> (Forward,t) :: l,sem,i+1 | 250 | | Both,t -> (Forward,t) :: l,sem,i+1 |
247 | | Backward,t -> | 251 | | Backward,t -> |
252 | + (* print_endline "make_forward 2"; *) | ||
248 | let res = deduce_matching empty_fv empty_fv Dot (One,t) in | 253 | let res = deduce_matching empty_fv empty_fv Dot (One,t) in |
254 | + (* Printf.printf "make_forward 3 |res|=%d\n%!" (Xlist.size res); *) | ||
249 | if res = [] then raise Not_found else | 255 | if res = [] then raise Not_found else |
250 | let _,_,res = List.hd res in | 256 | let _,_,res = List.hd res in |
251 | l, App(LambdaRot(i,sem),res), i) in | 257 | l, App(LambdaRot(i,sem),res), i) in |
258 | + (* print_endline "make_forward 3"; *) | ||
252 | List.rev l, sem | 259 | List.rev l, sem |
253 | 260 | ||
254 | let rec deduce_imp dir afv in_sem = function | 261 | let rec deduce_imp dir afv in_sem = function |
255 | Tensor _ -> [] | 262 | Tensor _ -> [] |
256 | | Star _ -> [] | 263 | | Star _ -> [] |
257 | | Plus _ -> [] | 264 | | Plus _ -> [] |
258 | - | WithVar(v,g,e,s) -> deduce_imp dir (add_fv afv v (g,e)) (ProjVar(v,in_sem)) s | 265 | + | WithVar(v,g,e,s) -> (*print_endline "deduce_imp WithVar";*) deduce_imp dir (add_fv afv v (g,e)) (ProjVar(v,in_sem)) s |
259 | | Imp(s,d,t) -> | 266 | | Imp(s,d,t) -> |
267 | + (* print_endline "deduce_imp Imp"; *) | ||
260 | (List.flatten (Xlist.map (deduce_optarg in_sem t) (fun sem -> deduce_imp dir afv sem s))) @ | 268 | (List.flatten (Xlist.map (deduce_optarg in_sem t) (fun sem -> deduce_imp dir afv sem s))) @ |
261 | (imp_selector s dir afv in_sem d t) | 269 | (imp_selector s dir afv in_sem d t) |
262 | | ImpSet(s,l) -> | 270 | | ImpSet(s,l) -> |
263 | - let l2,in_sem2 = if dir = Backward then l,in_sem else make_forward in_sem l in | ||
264 | - (List.flatten (Xlist.map (deduce_optargs in_sem l) (fun sem -> deduce_imp dir afv sem s))) @ | ||
265 | - (impset_selector s dir afv in_sem2 [] (l2,1)) | 271 | + (* print_endline "deduce_imp ImpSet 1"; *) |
272 | + let (l2,in_sem2),b = | ||
273 | + if dir = Backward then (l,in_sem),true | ||
274 | + else try make_forward in_sem l,true with Not_found -> ([],Dot),false in | ||
275 | + (* print_endline "deduce_imp ImpSet 2"; *) | ||
276 | + if b then | ||
277 | + (List.flatten (Xlist.map (deduce_optargs in_sem l) (fun sem -> deduce_imp dir afv sem s))) @ | ||
278 | + (impset_selector s dir afv in_sem2 [] (l2,1)) | ||
279 | + else [] | ||
266 | | s -> failwith ("deduce_imp: " ^ LCGstringOf.grammar_symbol 1 s) | 280 | | s -> failwith ("deduce_imp: " ^ LCGstringOf.grammar_symbol 1 s) |
267 | 281 | ||
268 | let rec deduce_app references dir (funct,funct_sem) args = | 282 | let rec deduce_app references dir (funct,funct_sem) args = |
269 | -(* Printf.printf "deduce_app: '%s' [%s]\n%!" (LCGstringOf.grammar_symbol 1 funct) | 283 | + (* Printf.printf "deduce_app 1: '%s' [%s]\n%!" (LCGstringOf.grammar_symbol 1 funct) |
270 | (String.concat "; " (Xlist.map args (fun (arg,_) -> "'" ^ LCGstringOf.grammar_symbol 1 arg ^ "'"))); *) | 284 | (String.concat "; " (Xlist.map args (fun (arg,_) -> "'" ^ LCGstringOf.grammar_symbol 1 arg ^ "'"))); *) |
271 | - List.flatten (Xlist.map (deduce_imp dir empty_fv funct_sem funct) (fun (fv,psi,phi,funct_sem) -> | 285 | + let x = List.flatten (Xlist.map (deduce_imp dir empty_fv funct_sem funct) (fun (fv,psi,phi,funct_sem) -> |
286 | + (* print_endline "deduce_app 2"; *) | ||
272 | let l = Xlist.fold args [] (fun l (arg,arg_sem) -> | 287 | let l = Xlist.fold args [] (fun l (arg,arg_sem) -> |
273 | let res = deduce_matching empty_fv fv arg_sem (arg,phi) in | 288 | let res = deduce_matching empty_fv fv arg_sem (arg,phi) in |
274 | -(* Printf.printf "deduce_matching: '%s' '%s' -> %d\n%!" (LCGstringOf.grammar_symbol 1 arg) (LCGstringOf.grammar_symbol 1 phi) (Xlist.size res); *) | 289 | + (* Printf.printf "deduce_matching: '%s' '%s' -> %d\n%!" (LCGstringOf.grammar_symbol 1 arg) (LCGstringOf.grammar_symbol 1 phi) (Xlist.size res); *) |
275 | res @ l) in | 290 | res @ l) in |
276 | let map = Xlist.fold l StringMap.empty (fun map (afv,bfv,sem) -> | 291 | let map = Xlist.fold l StringMap.empty (fun map (afv,bfv,sem) -> |
277 | if not (is_empty_fv afv) then failwith "deduce_app" else | 292 | if not (is_empty_fv afv) then failwith "deduce_app" else |
278 | StringMap.add_inc map (string_of_fv bfv) (bfv,[sem]) (fun (fv,sems) -> fv, sem :: sems)) in | 293 | StringMap.add_inc map (string_of_fv bfv) (bfv,[sem]) (fun (fv,sems) -> fv, sem :: sems)) in |
279 | StringMap.fold map [] (fun l _ (bfv,sems) -> | 294 | StringMap.fold map [] (fun l _ (bfv,sems) -> |
280 | let reference = ExtArray.add references (App(funct_sem,make_variant sems)) in | 295 | let reference = ExtArray.add references (App(funct_sem,make_variant sems)) in |
281 | - (fold_fv bfv (psi,Ref reference) (fun (t,sem) v (g,e) -> WithVar(v,g,e,t), VariantVar(v,sem))) :: l))) | 296 | + (fold_fv bfv (psi,Ref reference) (fun (t,sem) v (g,e) -> WithVar(v,g,e,t), VariantVar(v,sem))) :: l))) in |
297 | + (* print_endline "deduce_app 3"; *) | ||
298 | + x | ||
282 | 299 | ||
283 | (*let rec forward_application = function | 300 | (*let rec forward_application = function |
284 | (Bracket(lf,false,funct),sem), (Bracket(false,rf,arg),arg_sem) -> Xlist.map (deduce_app Forward (funct,sem) (arg,arg_sem)) (fun (t,sem) -> Bracket(lf,rf,t), LCGreductions.linear_term_beta_reduction2 sem) | 301 | (Bracket(lf,false,funct),sem), (Bracket(false,rf,arg),arg_sem) -> Xlist.map (deduce_app Forward (funct,sem) (arg,arg_sem)) (fun (t,sem) -> Bracket(lf,rf,t), LCGreductions.linear_term_beta_reduction2 sem) |
parser/exec.ml
@@ -200,6 +200,8 @@ let conll_parse_sentence timeout test_only_flag paths tokens = | @@ -200,6 +200,8 @@ let conll_parse_sentence timeout test_only_flag paths tokens = | ||
200 | let result = empty_conll_parse_result in | 200 | let result = empty_conll_parse_result in |
201 | let time2 = time_fun () in | 201 | let time2 = time_fun () in |
202 | try | 202 | try |
203 | + let paths = TreeChange.remove_interps paths tokens in | ||
204 | + let paths = TreeChange.move_comp paths tokens in | ||
203 | let dep_chart = LCGlexicon.dep_create paths tokens in | 205 | let dep_chart = LCGlexicon.dep_create paths tokens in |
204 | let dep_chart,references = LCGchart.dep_lazify dep_chart in | 206 | let dep_chart,references = LCGchart.dep_lazify dep_chart in |
205 | let result = if test_only_flag then result else {result with dep_chart=dep_chart} in | 207 | let result = if test_only_flag then result else {result with dep_chart=dep_chart} in |
@@ -549,103 +551,6 @@ let process_query pre_in pre_out timeout test_only_flag id full_query max_n = | @@ -549,103 +551,6 @@ let process_query pre_in pre_out timeout test_only_flag id full_query max_n = | ||
549 | selected_semantic_text=selected_semantic_text} in | 551 | selected_semantic_text=selected_semantic_text} in |
550 | let result = {result with semantic_time=time4 -. time3} in | 552 | let result = {result with semantic_time=time4 -. time3} in |
551 | result) | 553 | result) |
552 | -(** (* let text,msg,pre_time1 = PreProcessing.mail_loop2 query in *) | ||
553 | - (* let text = PreTypes.RawText "" in | ||
554 | - let msg = "" in | ||
555 | - let pre_time1 = 0. in *) | ||
556 | - print_endline "process_query 3"; | ||
557 | - let text = process_text Struct text in | ||
558 | - (* let paths = match paths with | ||
559 | - PreTypes.RawText "" -> [],0,0 | ||
560 | - | PreTypes.StructText [PreTypes.StructParagraph [{PreTypes.pcontents=PreTypes.StructSentence(paths,last,next_id)}]] -> paths,last,next_id | ||
561 | - | _ -> failwith "process_query: pre format" in *) | ||
562 | - let paths_array = make_paths_array paths in | ||
563 | - let result = if test_only_flag then result else {result with paths=paths_array} in | ||
564 | -(* if not test_only_flag then print_endline (paths_to_string_indexed paths); *) | ||
565 | - let time2 = time_fun () in | ||
566 | - let result = {result with pre_time1=pre_time1; pre_time2=time2 -. time1; | ||
567 | - paths_size=let _,_,next_id = paths in next_id-1} in | ||
568 | - (*if msg <> "" then*) {result with status=PreprocessingError; msg=msg} (*else*) | ||
569 | - (*try | ||
570 | - let graph = LCGlexicon.create query paths in | ||
571 | - let graph,references,next_reference = LCGchart.lazify graph in | ||
572 | - let time3 = time_fun () in | ||
573 | - let result = {result with lex_time=time3 -. time2} in | ||
574 | - try | ||
575 | - let graph,references,next_reference = LCGchart.parse timeout graph references next_reference time_fun in | ||
576 | - let time4 = time_fun () in | ||
577 | - let result = if test_only_flag then result else {result with graph=graph} in | ||
578 | - let result = {result with parse_time=time4 -. time3; graph_size=LCGchart.get_no_entries graph} in | ||
579 | - if LCGchart.is_parsed graph then | ||
580 | - try | ||
581 | - let term = LCGchart.get_parsed_term graph in | ||
582 | - let dependency_tree = LCGreductions.reduce term references next_reference in | ||
583 | - let time5 = time_fun () in | ||
584 | - let result = if test_only_flag then result else {result with dependency_tree=dependency_tree} in | ||
585 | - let result = {result with reduction_time=time5 -. time4; dependency_tree_size=Array.length dependency_tree} in | ||
586 | - if LCGreductions.is_reduced_dependency_tree dependency_tree then | ||
587 | - try | ||
588 | - LCGreductions.assign_labels dependency_tree; (* uwaga: niejawna zmiana imperatywna w result *) | ||
589 | - LCGreductions.remove_cuts dependency_tree; (* uwaga: niejawna zmiana imperatywna w result *) | ||
590 | -(* if Array.length dependency_tree < 10000 then print_xml_dependency_tree "results/trees/" id dependency_tree; *) | ||
591 | - let paths_array = extend_paths_array paths_array dependency_tree in | ||
592 | - let result = if test_only_flag then result else {result with paths=paths_array} in | ||
593 | - let (*dependency_tree2*)(*sem*)disamb = LCGvalence.assign_frames_and_senses paths_array dependency_tree(*disamb*) in (* FIXME: wstawić jako nowy etap i na nową zmienną *) | ||
594 | - let disamb(*sem*) = DisambSelPref.fit_sel_prefs DisambSelPref.fit_node1 (*dependency_tree2*)disamb in | ||
595 | - let (*sem*)disamb = DisambLemma.disambiguate_nodes (*dependency_tree*)(*sem*)disamb in | ||
596 | - let (*sem*)disamb = DisambLemma.remove_unused(*disambiguate_nodes*) (*dependency_tree*)(*sem*)disamb in | ||
597 | - let (*sem*)disamb = DisambLemma.remove_unused_choices(*disambiguate_nodes*) (*dependency_tree*)(*sem*)disamb in | ||
598 | - let (*disamb*)sem = DisambSelPref.fit_sel_prefs DisambSelPref.fit_node2 (*dependency_tree2*)disamb in | ||
599 | - let result = if test_only_flag then result else {result with disamb=disamb} in | ||
600 | - let sem = DisambLemma.disambiguate_meanings (*dependency_tree*)sem in | ||
601 | - let sem(*disamb*) = DisambLemma.remove_unused_choices(*disambiguate_nodes*) (*dependency_tree*)sem(*disamb*) in | ||
602 | - let result = if test_only_flag then result else {result with sem=sem} in | ||
603 | - let sem2 = SemGraph.translate paths_array (*disamb*)sem in | ||
604 | - let result = if test_only_flag then result else {result with sem2=sem2} in | ||
605 | - let sem3(*disamb*) = SemGraph.make_tree(*disambiguate_nodes*) (*dependency_tree*)sem2(*disamb*) in | ||
606 | - let sem3(*disamb*) = SemGraph.simplify_tree(*disambiguate_nodes*) (*dependency_tree*)sem3(*disamb*) in | ||
607 | -(* let sem3(*disamb*) = SemGraph.manage_quantification(*disambiguate_nodes*) (*dependency_tree*)sem3(*disamb*) in *) | ||
608 | - let sem3(*disamb*) = SemGraph.simplify_gender(*disambiguate_nodes*) (*dependency_tree*)sem3(*disamb*) in | ||
609 | -(* if Array.length disamb < 10000 then print_xml_dependency_tree "results/trees/" (id ^ "dis") disamb; *) | ||
610 | - let result = if test_only_flag then result else {result with sem3=sem3} in | ||
611 | - let time6 = time_fun () in | ||
612 | - if SemGraph.validate_semantics sem3 then | ||
613 | - let trees = SemGraph.draw_trees max_n sem3 in | ||
614 | - let trees2 = Xlist.map trees SemMrl.variable_alpha_convertion in | ||
615 | - let mrls = Xlist.map trees2 SemMrl.make_mrl in | ||
616 | - let mrls = Xlist.map mrls SemMrl.move_requirements in | ||
617 | - let mrss = Xlist.map mrls SemMrl.make_mrs_of_mrl in | ||
618 | - let mrss = Xlist.map mrss SemMrl.mrs_handle_alpha_convertion in | ||
619 | - let fols = Xlist.map mrss (fun mrs -> | ||
620 | - let l = SemMrl.foll_of_mrs_greedy mrs in | ||
621 | - if l = [] then failwith "empty fol" else | ||
622 | - List.hd l) in | ||
623 | - let result = if test_only_flag then result else {result with trees=trees; mrls=fols(*mrls*)} in | ||
624 | - {result with status=Parsed; sem_time=time6 -. time5} | ||
625 | - else {result with status=NotTranslated; sem_time=time6 -. time5} | ||
626 | - with e -> | ||
627 | - let time6 = time_fun () in | ||
628 | - {result with status=SemError; msg=Printexc.to_string e; sem_time=time6 -. time5} | ||
629 | - else | ||
630 | - {result with status=NotReduced} | ||
631 | - with | ||
632 | - | SemTooBig -> | ||
633 | - let time5 = time_fun () in | ||
634 | - {result with status=TooManyNodes; reduction_time=time5 -. time4} | ||
635 | - | e -> | ||
636 | - let time5 = time_fun () in | ||
637 | - {result with status=ReductionError; msg=Printexc.to_string e; reduction_time=time5 -. time4} | ||
638 | - else {result with status=NotParsed} | ||
639 | - with | ||
640 | - Timeout t -> | ||
641 | - let time4 = time_fun () in | ||
642 | - {result with status=ParseTimeout; msg=Printf.sprintf "%f" t; parse_time=time4 -. time3} | ||
643 | - | e -> | ||
644 | - let time4 = time_fun () in | ||
645 | - {result with status=ParseError; msg=Printexc.to_string e; parse_time=time4 -. time3} | ||
646 | - with e -> | ||
647 | - let time3 = time_fun () in | ||
648 | - {result with status=LexiconError; msg=Printexc.to_string e; lex_time=time3 -. time2}*)**) | ||
649 | 554 | ||
650 | let print_result file result = | 555 | let print_result file result = |
651 | Printf.fprintf file "query: %s\n" (extract_query_text result.input_text); | 556 | Printf.fprintf file "query: %s\n" (extract_query_text result.input_text); |
parser/makefile
1 | OCAMLC=ocamlc | 1 | OCAMLC=ocamlc |
2 | OCAMLOPT=ocamlopt | 2 | OCAMLOPT=ocamlopt |
3 | OCAMLDEP=ocamldep | 3 | OCAMLDEP=ocamldep |
4 | -INCLUDES=-I +xml-light -I +xlib -I +zip -I +bz2 -I ../../../Dropbox/lib/latexvis -I ../../installed/latexvis -I ../lib/xt -I ../../../Dropbox/Clarin-pl/podzadania/nkjp/fold_text -I ../podzadania/morfeusz -I ../pre -I ../corpora | 4 | +INCLUDES=-I +xml-light -I +xlib -I +zip -I +bz2 -I ../../../Dropbox/lib/latexvis -I ../../installed/latexvis -I ../lib/xt -I ../../../Dropbox/Clarin-pl/podzadania/nkjp/fold_text -I ../podzadania/morfeusz -I ../pre -I ../corpora -I ../diagnostics |
5 | #INCLUDES=-I +xml-light -I +xlib -I ../pre | 5 | #INCLUDES=-I +xml-light -I +xlib -I ../pre |
6 | OCAMLFLAGS=$(INCLUDES) -g | 6 | OCAMLFLAGS=$(INCLUDES) -g |
7 | OCAMLOPTFLAGS=$(INCLUDES) unix.cmxa xml-light.cmxa str.cmxa nums.cmxa zip.cmxa bz2.cmxa xlib.cmxa latexvis.cmxa #nkjp.cmxa | 7 | OCAMLOPTFLAGS=$(INCLUDES) unix.cmxa xml-light.cmxa str.cmxa nums.cmxa zip.cmxa bz2.cmxa xlib.cmxa latexvis.cmxa #nkjp.cmxa |
@@ -13,12 +13,12 @@ LCG= LCGtypes.ml LCGstringOf.ml LCGrules.ml LCGrenderer.ml LCGchart.ml LCGlatexO | @@ -13,12 +13,12 @@ LCG= LCGtypes.ml LCGstringOf.ml LCGrules.ml LCGrenderer.ml LCGchart.ml LCGlatexO | ||
13 | DISAMB= disambSelPref.ml disambLemma.ml | 13 | DISAMB= disambSelPref.ml disambLemma.ml |
14 | SEM= semGraph.ml semTypes.ml semStringOf.ml semLatexOf.ml semMmlOf.ml semMrl.ml | 14 | SEM= semGraph.ml semTypes.ml semStringOf.ml semLatexOf.ml semMmlOf.ml semMrl.ml |
15 | #SEM= semGraph.ml semTypes.ml semStringOf.ml semMmlOf.ml semMrl.ml | 15 | #SEM= semGraph.ml semTypes.ml semStringOf.ml semMmlOf.ml semMrl.ml |
16 | -EXEC= execTypes.ml visualization.ml exec.ml | 16 | +EXEC= execTypes.ml visualization.ml ../diagnostics/treeChange.ml exec.ml ../diagnostics/LCGfields.ml ../diagnostics/compTrees.ml |
17 | 17 | ||
18 | all: | 18 | all: |
19 | -# $(OCAMLOPT) -o pipe $(OCAMLOPTFLAGS) $(PRE) $(LCG) $(DISAMB) $(SEM) $(EXEC) pipe.ml | ||
20 | - $(OCAMLOPT) -o server2 $(OCAMLOPTFLAGS) $(PRE) $(LCG) $(DISAMB) $(SEM) $(EXEC) server.ml | ||
21 | - $(OCAMLOPT) -o parser2.cgi $(OCAMLOPTFLAGS) $(PRE) LCGtypes.ml LCGstringOf.ml LCGrules.ml LCGrenderer.ml LCGchart.ml LCGlatexOf.ml semTypes.ml semMmlOf.ml execTypes.ml visualization.ml webInterface.ml | 19 | + $(OCAMLOPT) -o pipe $(OCAMLOPTFLAGS) $(PRE) $(LCG) $(DISAMB) $(SEM) $(EXEC) pipe.ml |
20 | +# $(OCAMLOPT) -o server2 $(OCAMLOPTFLAGS) $(PRE) $(LCG) $(DISAMB) $(SEM) $(EXEC) server.ml | ||
21 | +# $(OCAMLOPT) -o parser2.cgi $(OCAMLOPTFLAGS) $(PRE) LCGtypes.ml LCGstringOf.ml LCGrules.ml LCGrenderer.ml LCGchart.ml LCGlatexOf.ml semTypes.ml semMmlOf.ml execTypes.ml visualization.ml webInterface.ml | ||
22 | # $(OCAMLOPT) -o eniam.distr $(OCAMLOPTFLAGS) $(PRE) $(LCG) $(DISAMB) $(SEM) $(EXEC) overseer.ml | 22 | # $(OCAMLOPT) -o eniam.distr $(OCAMLOPTFLAGS) $(PRE) $(LCG) $(DISAMB) $(SEM) $(EXEC) overseer.ml |
23 | # $(OCAMLOPT) -o eniam.worker $(OCAMLOPTFLAGS) $(PRE) $(LCG) $(DISAMB) $(SEM) $(EXEC) worker.ml | 23 | # $(OCAMLOPT) -o eniam.worker $(OCAMLOPTFLAGS) $(PRE) $(LCG) $(DISAMB) $(SEM) $(EXEC) worker.ml |
24 | # $(OCAMLOPT) -o parser.api $(OCAMLOPTFLAGS) $(PRE) $(LCG) $(DISAMB) $(SEM) $(EXEC) apiInterface.ml | 24 | # $(OCAMLOPT) -o parser.api $(OCAMLOPTFLAGS) $(PRE) $(LCG) $(DISAMB) $(SEM) $(EXEC) apiInterface.ml |
parser/pipe.ml
@@ -55,76 +55,14 @@ let lcg_process query = | @@ -55,76 +55,14 @@ let lcg_process query = | ||
55 | Visualization.print_html_text path "selected_semantic_text" result.selected_semantic_text; | 55 | Visualization.print_html_text path "selected_semantic_text" result.selected_semantic_text; |
56 | Visualization.print_main_result_text "aaa/" (path ^ "main/") "xxxx" result.selected_semantic_text; | 56 | Visualization.print_main_result_text "aaa/" (path ^ "main/") "xxxx" result.selected_semantic_text; |
57 | Exec.print_result stdout result; | 57 | Exec.print_result stdout result; |
58 | - (*Visualization.print_paths "results/" "paths" result.paths; | ||
59 | - Visualization.print_paths_latex "paths" result.paths; | ||
60 | - (match result.status with | ||
61 | - Parsed -> | ||
62 | -(* LCGreductions.print_references "chart" result.term; *) | ||
63 | -(* Visualization.print_tree "results/" "tree1" result.paths result.term; *) | ||
64 | -(* Visualization.print_tree "results/" "tree2" result.paths result.disamb; *) | ||
65 | -(* Visualization.print_graph "results/" "term1" result.term; | ||
66 | - Visualization.print_graph "results/" "term2" result.disamb;*) | ||
67 | - Visualization.print_graph "results/" "term3" result.sem; | ||
68 | - Visualization.print_graph "results/" "term4" result.sem2; | ||
69 | - Visualization.print_graph2 "results/" "term5" query result.sem3; | ||
70 | -(* Visualization.print_xml_graph "results/" "graph" result.term; *) | ||
71 | -(* LatexMain.latex_file_out "results/" "chart" "a0" false (fun file -> | ||
72 | - Int.iter 0 (Array.length result.sem - 1) (fun i -> | ||
73 | - Printf.fprintf file "%s\n" (LCGchart.latex_of_linear_term 0 result.sem.(i))));*) | ||
74 | -(* Printf.fprintf file "$%s$\n\n" (LCGchart.latex_of_linear_term_simple 0 result.sem); *) | ||
75 | -(* Printf.fprintf file "$%s$\n" (LCGchart.latex_of_linear_term 0 result.sem)); *) | ||
76 | -(* LatexMain.latex_compile_and_clean "results/" "chart" *) | ||
77 | - let path = "results/web/" in | ||
78 | - ignore(Xlist.fold2 result.trees result.mrls 1 (fun n tree mrl -> | ||
79 | - Visualization.print_graph2 path ("tree_" ^ string_of_int n) "" tree; | ||
80 | - Visualization.print_xml_tree path ("tree_" ^ string_of_int n) tree; | ||
81 | - let mml = SemMmlOf.mml_of_mrl mrl in | ||
82 | - Visualization.print_mml path ("formula_" ^ string_of_int n) mml; | ||
83 | - n+1)); | ||
84 | -(* ignore(Xlist.fold result.trees 1 (fun n tree -> | ||
85 | - Visualization.print_graph2 "results/" ("tree_" ^ string_of_int n) query tree; | ||
86 | - n+1)); | ||
87 | - SemLatexOf.print_mrls_latex "results/" "result" query result.mrls;*) | ||
88 | - () | ||
89 | - | NotTranslated -> | ||
90 | -(* LCGreductions.print_references "chart" result.term; *) | ||
91 | -(* Visualization.print_tree "results/" "tree1" result.paths result.term; *) | ||
92 | -(* Visualization.print_tree "results/" "tree2" result.paths result.disamb; *) | ||
93 | -(* Visualization.print_graph "results/" "term1" result.term; | ||
94 | - Visualization.print_graph "results/" "term2" result.disamb;*) | ||
95 | - Visualization.print_graph "results/" "term3" result.sem; | ||
96 | - Visualization.print_graph "results/" "term4" result.sem2; | ||
97 | - Visualization.print_graph2 "results/" "term5" query result.sem3; | ||
98 | -(* Visualization.print_xml_graph "results/" "graph" result.term; *) | ||
99 | - () | ||
100 | - | SemError -> | ||
101 | - Visualization.print_graph "results/" "term1" result.term; | ||
102 | - Visualization.print_graph "results/" "term2" result.disamb; | ||
103 | - Visualization.print_graph "results/" "term3" result.sem; | ||
104 | - Visualization.print_graph "results/" "term4" result.sem2; | ||
105 | - Visualization.print_graph2 "results/" "term5" query result.sem3; | ||
106 | - | NotParsed -> | ||
107 | - LatexMain.latex_file_out "results/" "chart" "a1" false (fun file -> | ||
108 | - Printf.fprintf file "%s\n" (LCGlatexOf.graph result.graph)); | ||
109 | - LatexMain.latex_compile_and_clean "results/" "chart" | ||
110 | - | NotReduced -> | ||
111 | - LCGlatexOf.print_references "chart" result.term | ||
112 | -(* LatexMain.latex_file_out "results/" "chart" "a0" false (fun file -> | ||
113 | - Int.iter 0 (Array.length result.sem - 1) (fun i -> | ||
114 | - Printf.fprintf file "%s\n" (LCGchart.latex_of_linear_term 0 result.sem.(i)))); | ||
115 | -(* Printf.fprintf file "$%s$\n\n" (LCGchart.latex_of_linear_term_simple 0 result.sem); *) | ||
116 | -(* Printf.fprintf file "$%s$\n" (LCGchart.latex_of_linear_term 0 result.sem)); *) | ||
117 | - LatexMain.latex_compile_and_clean "results/" "chart"*) | ||
118 | - | _ -> ());*) | ||
119 | - (* Printf.fprintf oc "\n%!"; *) | ||
120 | Marshal.to_channel oc (PreTypes.RawText "") []; | 58 | Marshal.to_channel oc (PreTypes.RawText "") []; |
121 | flush oc; | 59 | flush oc; |
122 | let _ = Unix.shutdown_connection ic in | 60 | let _ = Unix.shutdown_connection ic in |
123 | () | 61 | () |
124 | 62 | ||
125 | -let _ = | 63 | +(*let _ = |
126 | if Array.length Sys.argv < 2 then print_endline "missing argument" else | 64 | if Array.length Sys.argv < 2 then print_endline "missing argument" else |
127 | - lcg_process Sys.argv.(1) | 65 | + lcg_process Sys.argv.(1)*) |
128 | 66 | ||
129 | 67 | ||
130 | (* FIXME: parser dziwnie się zachowuje dla 'ścieżki anomalia.' 'ścieżki anomalia. GG' itp. - nie parsuje '.' a jak sparsuje to nie chce redukować *) | 68 | (* FIXME: parser dziwnie się zachowuje dla 'ścieżki anomalia.' 'ścieżki anomalia. GG' itp. - nie parsuje '.' a jak sparsuje to nie chce redukować *) |
@@ -191,7 +129,7 @@ let process_id s = | @@ -191,7 +129,7 @@ let process_id s = | ||
191 | let process_conll_corpus filename = | 129 | let process_conll_corpus filename = |
192 | let corpus = File.file_in filename (fun file -> CONLL.match_corpus (CONLL.load_corpus file)) in | 130 | let corpus = File.file_in filename (fun file -> CONLL.match_corpus (CONLL.load_corpus file)) in |
193 | print_endline "process_conll_corpus"; | 131 | print_endline "process_conll_corpus"; |
194 | - let corpus = [List.hd corpus] in | 132 | + (* let corpus = [List.hd corpus] in *) |
195 | let ic,oc = Unix.open_connection (get_sock_addr Paths.pre_host Paths.pre_port) in | 133 | let ic,oc = Unix.open_connection (get_sock_addr Paths.pre_host Paths.pre_port) in |
196 | Xlist.iter corpus (fun query -> | 134 | Xlist.iter corpus (fun query -> |
197 | let id = process_id (get_query_id query) in | 135 | let id = process_id (get_query_id query) in |
@@ -201,9 +139,14 @@ let process_conll_corpus filename = | @@ -201,9 +139,14 @@ let process_conll_corpus filename = | ||
201 | Visualization.print_html_text path "input_text" result.input_text; | 139 | Visualization.print_html_text path "input_text" result.input_text; |
202 | Visualization.print_html_text path "pre_text" result.pre_text; | 140 | Visualization.print_html_text path "pre_text" result.pre_text; |
203 | Visualization.print_html_text path "parsed_text" result.parsed_text; | 141 | Visualization.print_html_text path "parsed_text" result.parsed_text; |
142 | + Visualization.print_html_text path "selected_sent_text" result.selected_sent_text; | ||
143 | + Visualization.print_html_text path "semantic_text" result.semantic_text; | ||
144 | + Visualization.print_html_text path "selected_semantic_text" result.selected_semantic_text; | ||
204 | (* printf "input_text:\n%s\n" (Visualization.string_of_text result.input_text); | 145 | (* printf "input_text:\n%s\n" (Visualization.string_of_text result.input_text); |
205 | printf "pre_text:\n%s\n" (Visualization.string_of_text result.pre_text); *) | 146 | printf "pre_text:\n%s\n" (Visualization.string_of_text result.pre_text); *) |
206 | (* Exec.print_result stdout result; *) | 147 | (* Exec.print_result stdout result; *) |
148 | + LCGfields.print_fields ["arole"] result.parsed_text; | ||
149 | + (* CompTrees.compare_results result.parsed_text; *) | ||
207 | (* Visualization.print_paths "results/" "paths" result.paths; *) | 150 | (* Visualization.print_paths "results/" "paths" result.paths; *) |
208 | ()); | 151 | ()); |
209 | Marshal.to_channel oc (PreTypes.RawText "") []; | 152 | Marshal.to_channel oc (PreTypes.RawText "") []; |
@@ -214,7 +157,7 @@ let process_conll_corpus filename = | @@ -214,7 +157,7 @@ let process_conll_corpus filename = | ||
214 | let _ = | 157 | let _ = |
215 | (* process_conll_corpus "../../NLP resources/Skladnica-zaleznosciowa-mod_130121.conll"; *) | 158 | (* process_conll_corpus "../../NLP resources/Skladnica-zaleznosciowa-mod_130121.conll"; *) |
216 | (* process_conll_corpus "../../NLP resources/skladnica_zaleznosciowa.conll"; *) | 159 | (* process_conll_corpus "../../NLP resources/skladnica_zaleznosciowa.conll"; *) |
217 | - (* process_conll_corpus "../testy/skladnica-test1.conll"; *) | 160 | + process_conll_corpus "../testy/skladnica-test1.conll"; |
218 | () | 161 | () |
219 | 162 | ||
220 | (* TO DO: | 163 | (* TO DO: |
parser/visualization.ml
@@ -95,7 +95,7 @@ let string_of_status = function | @@ -95,7 +95,7 @@ let string_of_status = function | ||
95 | | ExecTypes.ParseTimeout -> "timeout" | 95 | | ExecTypes.ParseTimeout -> "timeout" |
96 | | ExecTypes.NotParsed -> "not_parsed" | 96 | | ExecTypes.NotParsed -> "not_parsed" |
97 | | ExecTypes.ReductionError -> "error_reduction" | 97 | | ExecTypes.ReductionError -> "error_reduction" |
98 | - | ExecTypes.TooManyNodes -> "to_many_nodes" | 98 | + | ExecTypes.TooManyNodes -> "too_many_nodes" |
99 | | ExecTypes.NotReduced -> "not_reduced" | 99 | | ExecTypes.NotReduced -> "not_reduced" |
100 | | ExecTypes.SemError -> "error_sem" | 100 | | ExecTypes.SemError -> "error_sem" |
101 | | ExecTypes.NotTranslated -> "not_translated" | 101 | | ExecTypes.NotTranslated -> "not_translated" |
@@ -798,13 +798,13 @@ let html_of_eniam_sentence path tokens (result : eniam_parse_result) = | @@ -798,13 +798,13 @@ let html_of_eniam_sentence path tokens (result : eniam_parse_result) = | ||
798 | | SemError -> sprintf "error_sem: %s dependency_tree_size=%d\n" result.msg result.dependency_tree_size | 798 | | SemError -> sprintf "error_sem: %s dependency_tree_size=%d\n" result.msg result.dependency_tree_size |
799 | (* | NotTranslated -> "not_translated: \n" *) | 799 | (* | NotTranslated -> "not_translated: \n" *) |
800 | | Parsed -> | 800 | | Parsed -> |
801 | - print_simplified_dependency_tree path (result.file_prefix ^ "_simplified_dependency_tree") tokens result.dependency_tree; | ||
802 | - print_dependency_tree path (result.file_prefix ^ "_dependency_tree") result.dependency_tree; | 801 | + (* print_simplified_dependency_tree path (result.file_prefix ^ "_simplified_dependency_tree") tokens result.dependency_tree; *) |
802 | + (* print_dependency_tree path (result.file_prefix ^ "_dependency_tree") result.dependency_tree; *) | ||
803 | (* LCGlatexOf.print_dependency_tree path (result.file_prefix ^ "_dependency_tree_references") result.dependency_tree; *) | 803 | (* LCGlatexOf.print_dependency_tree path (result.file_prefix ^ "_dependency_tree_references") result.dependency_tree; *) |
804 | - sprintf "parsed: paths_size=%d chart_size=%d dependency_tree_size=%d\n" result.paths_size result.chart_size result.dependency_tree_size ^ | ||
805 | - sprintf "<BR><A HREF=\"%s_simplified_dependency_tree.png\">Simplified Dependency Tree</A>\n" result.file_prefix ^ | ||
806 | - sprintf "<BR><A HREF=\"%s_dependency_tree.png\">Dependency Tree</A>\n" result.file_prefix (* ^ | ||
807 | - sprintf "<BR><A HREF=\"%s_dependency_tree_references.pdf\">Dependency Tree References</A>\n" result.file_prefix *) | 804 | + sprintf "parsed: paths_size=%d chart_size=%d dependency_tree_size=%d\n" result.paths_size result.chart_size result.dependency_tree_size (*^ *) |
805 | + (* sprintf "<BR><A HREF=\"%s_simplified_dependency_tree.png\">Simplified Dependency Tree</A>\n" result.file_prefix ^ *) | ||
806 | + (* sprintf "<BR><A HREF=\"%s_dependency_tree.png\">Dependency Tree</A>\n" result.file_prefix ^ *) | ||
807 | + (* sprintf "<BR><A HREF=\"%s_dependency_tree_references.pdf\">Dependency Tree References</A>\n" result.file_prefix *) | ||
808 | | _ -> failwith "html_of_eniam_sentence" | 808 | | _ -> failwith "html_of_eniam_sentence" |
809 | 809 | ||
810 | let html_of_conll_sentence path tokens (result : conll_parse_result) = | 810 | let html_of_conll_sentence path tokens (result : conll_parse_result) = |
@@ -840,13 +840,13 @@ let html_of_conll_sentence path tokens (result : conll_parse_result) = | @@ -840,13 +840,13 @@ let html_of_conll_sentence path tokens (result : conll_parse_result) = | ||
840 | | SemError -> sprintf "error_sem: %s dependency_tree_size=%d\n" result.msg result.dependency_tree_size | 840 | | SemError -> sprintf "error_sem: %s dependency_tree_size=%d\n" result.msg result.dependency_tree_size |
841 | (* | NotTranslated -> "not_translated: \n" *) | 841 | (* | NotTranslated -> "not_translated: \n" *) |
842 | | Parsed -> | 842 | | Parsed -> |
843 | - print_simplified_dependency_tree path (result.file_prefix ^ "_simplified_dependency_tree") tokens result.dependency_tree; | ||
844 | - print_dependency_tree path (result.file_prefix ^ "_dependency_tree") result.dependency_tree; | ||
845 | - LCGlatexOf.print_dependency_tree path (result.file_prefix ^ "_dependency_tree_references") result.dependency_tree; | ||
846 | - sprintf "parsed: paths_size=%d dependency_tree_size=%d\n" result.paths_size result.dependency_tree_size ^ | ||
847 | - sprintf "<BR><A HREF=\"%s_simplified_dependency_tree.png\">Simplified Dependency Tree</A>\n" result.file_prefix ^ | ||
848 | - sprintf "<BR><A HREF=\"%s_dependency_tree.png\">Dependency Tree</A>\n" result.file_prefix ^ | ||
849 | - sprintf "<BR><A HREF=\"%s_dependency_tree_references.pdf\">Dependency Tree References</A>\n" result.file_prefix | 843 | + (* print_simplified_dependency_tree path (result.file_prefix ^ "_simplified_dependency_tree") tokens result.dependency_tree; *) |
844 | + (* print_dependency_tree path (result.file_prefix ^ "_dependency_tree") result.dependency_tree; *) | ||
845 | + (* LCGlatexOf.print_dependency_tree path (result.file_prefix ^ "_dependency_tree_references") result.dependency_tree; *) | ||
846 | + sprintf "parsed: paths_size=%d dependency_tree_size=%d\n" result.paths_size result.dependency_tree_size (* ^ *) | ||
847 | + (* sprintf "<BR><A HREF=\"%s_simplified_dependency_tree.png\">Simplified Dependency Tree</A>\n" result.file_prefix ^ *) | ||
848 | + (* sprintf "<BR><A HREF=\"%s_dependency_tree.png\">Dependency Tree</A>\n" result.file_prefix ^ *) | ||
849 | + (* sprintf "<BR><A HREF=\"%s_dependency_tree_references.pdf\">Dependency Tree References</A>\n" result.file_prefix *) | ||
850 | | _ -> failwith "html_of_conll_sentence" | 850 | | _ -> failwith "html_of_conll_sentence" |
851 | 851 | ||
852 | let html_of_sem_sentence path tokens (result : semantic_processing_result) = | 852 | let html_of_sem_sentence path tokens (result : semantic_processing_result) = |
@@ -884,7 +884,7 @@ let rec html_of_sentence path tokens = function | @@ -884,7 +884,7 @@ let rec html_of_sentence path tokens = function | ||
884 | | QuotedSentences sentences -> | 884 | | QuotedSentences sentences -> |
885 | String.concat "<BR>\n" (Xlist.map sentences (fun p -> | 885 | String.concat "<BR>\n" (Xlist.map sentences (fun p -> |
886 | sprintf "pid=%s pbeg=%d plen=%d pnext=%d<BR>%s" p.pid p.pbeg p.plen p.pnext (html_of_sentence path tokens p.psentence))) | 886 | sprintf "pid=%s pbeg=%d plen=%d pnext=%d<BR>%s" p.pid p.pbeg p.plen p.pnext (html_of_sentence path tokens p.psentence))) |
887 | - | AltSentence l -> | 887 | + | AltSentence l -> (*print_endline "AltSentence";*) |
888 | "<table border=1>" ^ | 888 | "<table border=1>" ^ |
889 | String.concat "\n" (Xlist.map l (fun (mode,sentence) -> | 889 | String.concat "\n" (Xlist.map l (fun (mode,sentence) -> |
890 | sprintf "<tr><td>%s</td><td>%s</td></tr>" (string_of_mode mode) (html_of_sentence path tokens sentence))) ^ | 890 | sprintf "<tr><td>%s</td><td>%s</td></tr>" (string_of_mode mode) (html_of_sentence path tokens sentence))) ^ |
@@ -892,11 +892,11 @@ let rec html_of_sentence path tokens = function | @@ -892,11 +892,11 @@ let rec html_of_sentence path tokens = function | ||
892 | (* | _ -> failwith "html_of_sentence: ni" *) | 892 | (* | _ -> failwith "html_of_sentence: ni" *) |
893 | 893 | ||
894 | let rec html_of_paragraph path tokens = function | 894 | let rec html_of_paragraph path tokens = function |
895 | - RawParagraph s -> s | ||
896 | - | StructParagraph sentences -> | 895 | + RawParagraph s -> (*print_endline "RawParagraph";*) s |
896 | + | StructParagraph sentences -> (*print_endline "StructParagraph";*) | ||
897 | String.concat "<BR>\n" (Xlist.map sentences (fun p -> | 897 | String.concat "<BR>\n" (Xlist.map sentences (fun p -> |
898 | sprintf "pid=%s pbeg=%d plen=%d pnext=%d<BR>%s" p.pid p.pbeg p.plen p.pnext (html_of_sentence path tokens p.psentence))) | 898 | sprintf "pid=%s pbeg=%d plen=%d pnext=%d<BR>%s" p.pid p.pbeg p.plen p.pnext (html_of_sentence path tokens p.psentence))) |
899 | - | AltParagraph l -> | 899 | + | AltParagraph l -> (*print_endline "AltParagraph";*) |
900 | "<table border=2>" ^ | 900 | "<table border=2>" ^ |
901 | String.concat "\n" (Xlist.map l (fun (mode,paragraph) -> | 901 | String.concat "\n" (Xlist.map l (fun (mode,paragraph) -> |
902 | sprintf "<tr><td>%s</td><td>%s</td></tr>" (string_of_mode mode) (html_of_paragraph path tokens paragraph))) ^ | 902 | sprintf "<tr><td>%s</td><td>%s</td></tr>" (string_of_mode mode) (html_of_paragraph path tokens paragraph))) ^ |