Commit c719fc7f73142d6879e54719bccac98d1cc47ce5

Authored by Wojciech Jaworski
1 parent 84afa6af

Zmiana comparp

LCGlexicon/ENIAMcategoriesPL.ml
... ... @@ -159,7 +159,9 @@ let num_nsem lemma =
159 159  
160 160 let part_set = StringSet.of_list ["się"; "nie"; "by"; "niech"; "niechaj"; "niechże"; "niechajże"; "czy"; "gdyby"]
161 161  
162   -let clarify_categories proper cat coerced snode = function
  162 +let snode = SelectorMap.find selector_values SNode
  163 +
  164 +let clarify_categories proper cat coerced (*snode*) = function
163 165 lemma,"subst",[numbers;cases;genders] ->
164 166 let numbers = expand_numbers numbers in
165 167 let cases = expand_cases cases in
... ...
LCGlexicon/resources/lexicon-pl.dic
1 1 @PHRASE_NAMES
2 2 lex infp np prepnp adjp ip cp ncp advp padvp
3   - adja prepadjp comprepnp compar measure num aglt aux-fut
  3 + adja prepadjp comprepnp comparp measure num aglt aux-fut
4 4 aux-past aux-imp qub interj hyphen int
5 5 rparen rparen2 rquot rquot2 rquot3 inclusion
6 6 day-interval day-lex day-month-interval date-interval
... ... @@ -153,8 +153,8 @@ lemma=w,pos=prep,case=loc: prepnp*lemma*case{\(1+advp*T),/(day-month+day+ye
153 153  
154 154 # komparatywy
155 155 # FIXME: trzeba poprawić comparnp i comparpp w walencji
156   -pos=compar: QUANT[case=nom&gen&dat&acc&inst] compar*lemma*case{\(1+advp*T),/(np*T*case*T*T+adjp*T*case*T)}{\(1+qub),/(1+inclusion)};
157   -pos=compar: QUANT[case=postp] compar*lemma*case{\(1+advp*T),/(prepnp*T*T+prepadjp*T*T)}{\(1+qub),/(1+inclusion)};
  156 +pos=compar: QUANT[case=nom&gen&dat&acc&inst] comparp*lemma*case{\(1+advp*T),/(np*T*case*T*T+adjp*T*case*T)}{\(1+qub),/(1+inclusion)};
  157 +pos=compar: QUANT[case=postp] comparp*lemma*case{\(1+advp*T),/(prepnp*T*T+prepadjp*T*T)}{\(1+qub),/(1+inclusion)};
158 158  
159 159 # frazy przymiotnikowe
160 160 # FIXME: let grad = match grads with [grad] -> grad | _ -> failwith "make_adjp: grad" in
... ...
exec/ENIAMexec.ml
... ... @@ -64,16 +64,16 @@ let rec translate_text = function
64 64 | ENIAMsubsyntaxTypes.AltText l -> AltText(Xlist.map l (fun (mode,text) ->
65 65 translate_mode mode, translate_text text))
66 66  
67   -let clarify_categories cats snode token =
  67 +let clarify_categories cats (*snode*) token =
68 68 match token.ENIAMtokenizerTypes.token with
69 69 ENIAMtokenizerTypes.Lemma(lemma,pos,interp) ->
70 70 List.flatten (Xlist.map interp (fun interp -> List.flatten (Xlist.map cats (fun (cat,coerced) ->
71 71 (* Printf.printf "lemma=%s pos=%s cat=%s coerced=%s\n%!" lemma pos cat (String.concat "," coerced); *)
72   - ENIAMcategoriesPL.clarify_categories false cat coerced snode (lemma,pos,interp)))))
  72 + ENIAMcategoriesPL.clarify_categories false cat coerced (*snode*) (lemma,pos,interp)))))
73 73 | ENIAMtokenizerTypes.Proper(lemma,pos,interp,senses2) ->
74   - List.flatten (Xlist.map interp (fun interp -> List.flatten (Xlist.map cats (fun (cat,coerced) -> ENIAMcategoriesPL.clarify_categories true cat coerced snode (lemma,pos,interp)))))
  74 + List.flatten (Xlist.map interp (fun interp -> List.flatten (Xlist.map cats (fun (cat,coerced) -> ENIAMcategoriesPL.clarify_categories true cat coerced (*snode*) (lemma,pos,interp)))))
75 75 | ENIAMtokenizerTypes.Interp lemma ->
76   - List.flatten (Xlist.map cats (fun (cat,coerced) -> ENIAMcategoriesPL.clarify_categories false cat coerced snode (lemma,"interp",[])))
  76 + List.flatten (Xlist.map cats (fun (cat,coerced) -> ENIAMcategoriesPL.clarify_categories false cat coerced (*snode*) (lemma,"interp",[])))
77 77 | _ -> []
78 78  
79 79 let create_chart rules tokens lex_sems paths last =
... ... @@ -85,8 +85,8 @@ let create_chart rules tokens lex_sems paths last =
85 85 ENIAM_LCGrenderer.reset_variable_names ();
86 86 ENIAM_LCGrenderer.add_variable_numbers ();
87 87 (* if s.ENIAMlexSemanticsTypes.schemata = [] then failwith ("create_chart: no schema for token=" ^ t.ENIAMtokenizerTypes.orth ^ " lemma=" ^ ENIAMtokens.get_lemma t.ENIAMtokenizerTypes.token) else *)
88   - Xlist.fold s.ENIAMlexSemanticsTypes.schemata chart (fun chart (selectors,cats,snode,schema) ->
89   - let cats = clarify_categories cats snode t in
  88 + Xlist.fold s.ENIAMlexSemanticsTypes.schemata chart (fun chart (selectors,cats,(*snode,*)schema) ->
  89 + let cats = clarify_categories cats (*snode*) t in
90 90 (* let chart = ENIAM_LCGchart.add_inc_list chart lnode rnode s.ENIAMlexSemanticsTypes.lex_entries 0 in *)
91 91 let l = ENIAM_LCGlexicon.create_entries rules id t.ENIAMtokenizerTypes.orth cats [selectors,schema] s.ENIAMlexSemanticsTypes.lex_entries in
92 92 ENIAM_LCGchart.add_inc_list chart lnode rnode l 0)) in
... ... @@ -115,8 +115,8 @@ let create_dep_chart dep_rules tokens lex_sems paths =
115 115 let s = ExtArray.get lex_sems id in
116 116 ENIAM_LCGrenderer.reset_variable_names ();
117 117 ENIAM_LCGrenderer.add_variable_numbers ();
118   - Xlist.fold s.ENIAMlexSemanticsTypes.schemata nodes (fun nodes (selectors,cats,snode,schema) ->
119   - let cats = clarify_categories ["X",["X"]] snode t in
  118 + Xlist.fold s.ENIAMlexSemanticsTypes.schemata nodes (fun nodes (selectors,cats,(*snode,*)schema) ->
  119 + let cats = clarify_categories ["X",["X"]] (*snode*) t in
120 120 (* let chart = ENIAM_LCGchart.add_inc_list chart lnode rnode s.ENIAMlexSemanticsTypes.lex_entries 0 in *)
121 121 let l = ENIAM_LCGlexicon.create_entries dep_rules id t.ENIAMtokenizerTypes.orth cats [selectors,schema] s.ENIAMlexSemanticsTypes.lex_entries in
122 122 IntMap.add_inc nodes i l (fun l2 -> l @ l2))) in
... ...
exec/ENIAMvisualization.ml
... ... @@ -797,9 +797,21 @@ let rec extract_pos_cat_internal vars = function
797 797 let rec extract_pos_cat vars = function
798 798 | Tensor [] -> failwith "extract_pos_cat: ni"
799 799 | Tensor [pos] -> extract_pos_cat_internal vars pos
  800 + | Tensor [pos;_] -> extract_pos_cat_internal vars pos
  801 + | Tensor [pos;_;_] -> extract_pos_cat_internal vars pos
800 802 | Tensor (Atom "num" :: _) -> "Number"
  803 + | Tensor (Atom "aglt" :: _) -> "Aglt"
801 804 | Tensor (Atom "prepnp" :: _) -> "Prep"
802   - | Tensor (pos :: cat :: _) -> (*extract_pos_cat_internal vars pos ^ "*" ^*) extract_pos_cat_internal vars cat
  805 + | Tensor (Atom "comparp" :: _) -> "Compar"
  806 + | Tensor (Atom "cp" :: _) -> "Comp"
  807 + | Tensor [_;cat;_;_] -> extract_pos_cat_internal vars cat
  808 + | Tensor [_;_;cat;_;_] -> extract_pos_cat_internal vars cat
  809 + | Tensor [_;_;_;cat;_;_] -> extract_pos_cat_internal vars cat
  810 + | Tensor [_;_;_;_;cat;_;_] -> extract_pos_cat_internal vars cat
  811 + | Tensor [_;_;_;_;_;cat;_;_] -> extract_pos_cat_internal vars cat
  812 + | Tensor [_;_;_;_;_;_;cat;_;_] -> extract_pos_cat_internal vars cat
  813 + (* | Tensor (pos :: cat :: _) -> (*extract_pos_cat_internal vars pos ^ "*" ^*) extract_pos_cat_internal vars cat *)
  814 + | Tensor _ as t -> print_endline ("Unknown symbol " ^ ENIAM_LCGstringOf.grammar_symbol 0 t); "Unknown"
803 815 | Plus l -> failwith "extract_pos_cat: ni"
804 816 | Imp(s,d,t2) -> extract_pos_cat vars s
805 817 | One -> failwith "extract_pos_cat: ni"
... ... @@ -822,7 +834,8 @@ let omited = StringSet.of_list ["<subst>";"<depr>";"<ppron12>";"<ppron3>";"<sieb
822 834 "<email>";"<obj-id>";"<adj>";"<apron>";"<adjc>";"<adjp>";"<adja>";"<adv>";"<ger>";"<pact>";
823 835 "<ppas>";"<fin>";"<bedzie>";"<praet>";"<winien>";"<impt>";"<imps>";"<pred>";"<aglt>";"<inf>";
824 836 "<pcon>";"<pant>";"<qub>";"<comp>";"<compar>";"<conj>";"<interj>";"<sinterj>";"<burk>";
825   - "<interp>";"<part>";"<unk>";"<building-number>";"<html-tag>";"<list-item>";"<numcomp>";"<phone-number>";"<postal-code>"]
  837 + "<interp>";"<part>";"<unk>";"<building-number>";"<html-tag>";"<list-item>";"<numcomp>";
  838 + "<phone-number>";"<postal-code>";"<sentence>";"<paragraph>"]
826 839  
827 840 let cat_tokens_sequence text_fragments g =
828 841 let _,_,l = ENIAM_LCGchart.fold g (0,0,[]) (fun (m,n,l) (symbol,node1,node2,sem,layer) ->
... ...
lexSemantics/ENIAMadjuncts.ml
... ... @@ -253,19 +253,19 @@ let simplify_schemata lexemes pos pos2 lemma schemata =
253 253 "{" ^ String.concat ";" (PhraseSet.fold morfs [] (fun l m -> ENIAMwalStringOf.phrase m :: l)) ^ "}")))); *)
254 254 schemata
255 255  
256   -let add_adjuncts preps compreps compars pos2 (selectors,cat,has_context,schema) =
  256 +let add_adjuncts preps compreps compars pos2 (selectors,cat,(*has_context,*)schema) =
257 257 let compreps = Xlist.rev_map compreps ENIAMwalRenderer.render_comprep in
258 258 let prepnps = Xlist.rev_map preps (fun (prep,cases) -> ENIAMwalRenderer.render_prepnp prep cases) in
259 259 let prepadjps = Xlist.rev_map preps (fun (prep,cases) -> ENIAMwalRenderer.render_prepadjp prep cases) in
260 260 let compars = Xlist.rev_map compars ENIAMwalRenderer.render_compar in
261 261 match pos2 with
262   - "verb" -> [selectors,cat,has_context,schema @ ENIAMwalRenderer.verb_adjuncts_simp @ prepnps @ prepadjps @ compreps @ compars]
  262 + "verb" -> [selectors,cat,(*has_context,*)schema @ ENIAMwalRenderer.verb_adjuncts_simp @ prepnps @ prepadjps @ compreps @ compars]
263 263 | "noun" -> [
264   - [Nsyn,Eq,["proper"]] @ selectors,cat,has_context,ENIAMwalRenderer.proper_noun_adjuncts_simp @ prepnps @ compreps @ compars;
265   - [Nsyn,Eq,["common"];Nsem,Eq,["measure"]] @ selectors,cat,has_context,ENIAMwalRenderer.measure_noun_adjuncts_simp @ prepnps @ compreps @ compars;
266   - [Nsyn,Eq,["common"];Nsem,Neq,["measure"]] @ selectors,cat,has_context,ENIAMwalRenderer.common_noun_adjuncts_simp @ prepnps @ compreps @ compars]
267   - | "adj" -> [selectors,cat,has_context,schema @ ENIAMwalRenderer.adj_adjuncts_simp @ compars]
268   - | "adv" -> [selectors,cat,has_context,schema @ ENIAMwalRenderer.adv_adjuncts_simp @ compars]
  264 + [Nsyn,Eq,["proper"]] @ selectors,cat,(*has_context,*)ENIAMwalRenderer.proper_noun_adjuncts_simp @ prepnps @ compreps @ compars;
  265 + [Nsyn,Eq,["common"];Nsem,Eq,["measure"]] @ selectors,cat,(*has_context,*)ENIAMwalRenderer.measure_noun_adjuncts_simp @ prepnps @ compreps @ compars;
  266 + [Nsyn,Eq,["common"];Nsem,Neq,["measure"]] @ selectors,cat,(*has_context,*)ENIAMwalRenderer.common_noun_adjuncts_simp @ prepnps @ compreps @ compars]
  267 + | "adj" -> [selectors,cat,(*has_context,*)schema @ ENIAMwalRenderer.adj_adjuncts_simp @ compars]
  268 + | "adv" -> [selectors,cat,(*has_context,*)schema @ ENIAMwalRenderer.adv_adjuncts_simp @ compars]
269 269 | _ -> []
270 270  
271 271 open ENIAMlexSemanticsTypes
... ...
lexSemantics/ENIAMlexSemantics.ml
... ... @@ -23,7 +23,7 @@ open ENIAMlexSemanticsTypes
23 23 open ENIAMwalTypes
24 24 open Xstd
25 25  
26   -let snode_values = ENIAM_LCGlexiconTypes.SelectorMap.find ENIAMcategoriesPL.selector_values ENIAM_LCGlexiconTypes.SNode
  26 +(*let snode_values = ENIAM_LCGlexiconTypes.SelectorMap.find ENIAMcategoriesPL.selector_values ENIAM_LCGlexiconTypes.SNode*)
27 27  
28 28 let find_sense m =
29 29 try
... ... @@ -305,9 +305,9 @@ let assign_valence tokens lex_sems group =
305 305 let schemata = ENIAMadjuncts.simplify_schemata lexemes pos pos2 lemma schemata1 in
306 306 (* Printf.printf "C %s |schemata|=%d\n" lemma (Xlist.size schemata); *)
307 307 let schemata = Xlist.rev_map schemata (fun (selectors,schema) ->
308   - selectors,["X",["X"]],snode_values,ENIAMwalRenderer.render_simple_schema schema) in
  308 + selectors,["X",["X"]],(*snode_values,*)ENIAMwalRenderer.render_simple_schema schema) in
309 309 let schemata = List.flatten (Xlist.rev_map schemata (ENIAMadjuncts.add_adjuncts preps compreps compars pos2)) in
310   - let schemata = if schemata = [] then [[],["X",["X"]],snode_values,[]] else schemata in
  310 + let schemata = if schemata = [] then [[],["X",["X"]],(*snode_values,*)[]] else schemata in
311 311 (* Printf.printf "D %s |schemata|=%d\n" lemma (Xlist.size schemata); *)
312 312 let entries = List.flatten (Xlist.rev_map entries (ENIAMvalence.transform_lex_entry pos lemma)) in
313 313 let entries = Xlist.map entries (fun (selectors,entry) ->
... ...
lexSemantics/ENIAMlexSemanticsHTMLof.ml
... ... @@ -60,10 +60,10 @@ let html_of_lex_sems tokens lex_sems =
60 60 let core = Printf.sprintf "%3d %s %s" id orth lemma in
61 61 let lex_entries = Xlist.map t.lex_entries (fun (selectors,s) ->
62 62 "&emsp;&emsp;[" ^ ENIAMcategoriesPL.string_of_selectors selectors ^ "] " ^ ENIAM_LCGstringOf.grammar_symbol 0 s) in
63   - let schemata = Xlist.map t.schemata (fun (selectors,cat,snode,l) ->
  63 + let schemata = Xlist.map t.schemata (fun (selectors,cat,(*snode,*)l) ->
64 64 "&emsp;&emsp;[" ^ ENIAMcategoriesPL.string_of_selectors selectors ^ "]" ^
65 65 String.concat "," (Xlist.map cat (fun (m,l) -> m ^ "[" ^ String.concat "," l ^ "]")) ^
66   - String.concat "|" snode ^
  66 + (*String.concat "|" snode ^*)
67 67 " {" ^ String.concat ", " (Xlist.map l (fun (d,s) ->
68 68 ENIAM_LCGstringOf.direction d ^ ENIAM_LCGstringOf.grammar_symbol 0 s)) ^ "}") in
69 69 (* let frames = Xlist.map t.frames (fun (selectors,senses,schema) -> FIXME
... ...
lexSemantics/ENIAMlexSemanticsStringOf.ml
... ... @@ -40,10 +40,10 @@ let string_of_lex_sems tokens lex_sems =
40 40 let core = Printf.sprintf "%3d %s %s" id orth lemma in
41 41 let lex_entries = Xlist.map t.lex_entries (fun (selectors,s) ->
42 42 "&[" ^ ENIAMcategoriesPL.string_of_selectors selectors ^ "] " ^ ENIAM_LCGstringOf.grammar_symbol 0 s) in
43   - let schemata = Xlist.map t.schemata (fun (selectors,cat,snode,l) ->
  43 + let schemata = Xlist.map t.schemata (fun (selectors,cat,(*snode,*)l) ->
44 44 "[" ^ ENIAMcategoriesPL.string_of_selectors selectors ^ "]" ^
45 45 String.concat "," (Xlist.map cat (fun (m,l) -> m ^ "[" ^ String.concat "," l ^ "]")) ^
46   - String.concat "|" snode ^
  46 + (*String.concat "|" snode ^*)
47 47 " {" ^ String.concat "," (Xlist.map l (fun (d,s) ->
48 48 ENIAM_LCGstringOf.direction d ^ ENIAM_LCGstringOf.grammar_symbol 0 s)) ^ "}") in
49 49 let frames = Xlist.map t.frames (fun f ->
... ...
lexSemantics/ENIAMlexSemanticsTypes.ml
... ... @@ -31,18 +31,18 @@ type frame = {
31 31 agf: string;
32 32 sem_args: string list;
33 33 rev_hipero: bool;
34   - snode: string list;
  34 + (*snode: string list;*)
35 35 sopinion: ENIAMwalTypes.opinion;
36 36 fopinion: ENIAMwalTypes.opinion;
37 37 }
38 38  
39   -let empty_frame = {selectors=[]; senses=[]; cats=["X",["X"]]; positions=[]; arole=""; arole_attr=""; arev=false; agf=""; sem_args=[]; rev_hipero=false; snode=[];
  39 +let empty_frame = {selectors=[]; senses=[]; cats=["X",["X"]]; positions=[]; arole=""; arole_attr=""; arev=false; agf=""; sem_args=[]; rev_hipero=false; (*snode=[];*)
40 40 sopinion=ENIAMwalTypes.Nieokreslony; fopinion=ENIAMwalTypes.Nieokreslony}
41 41  
42 42 type lex_sem = {
43 43 schemata: ((ENIAM_LCGlexiconTypes.selector * ENIAM_LCGlexiconTypes.selector_relation * string list) list *
44 44 (string * string list) list * (* sensy *)
45   - string list * (* has_context *)
  45 + (*string list **) (* has_context *)
46 46 (ENIAM_LCGtypes.direction * ENIAM_LCGtypes.grammar_symbol) list) list;
47 47 lex_entries: ((ENIAM_LCGlexiconTypes.selector * ENIAM_LCGlexiconTypes.selector_relation * string list) list *
48 48 ENIAM_LCGtypes.grammar_symbol) list;
... ...
lexSemantics/ENIAMvalence.ml
... ... @@ -465,7 +465,8 @@ let transform_ger_schema lemma negation schema = (* FIXME: zakładam, że ger ze
465 465 | phrase -> transform_pers_phrase lemma negation "gerundial" phrase))})
466 466  
467 467 let transform_ppas_schema lemma negation mood schema =
468   - if not (Xlist.fold schema false (fun b p -> if p.gf = OBJ then true else b)) then raise Not_found else
  468 + if not (Xlist.fold schema false (fun b p -> if p.gf = OBJ then true else b)) then
  469 + (*failwith ("transform_ppas_schema: attempt to make ppas schema for lemma " ^ lemma ^ "without OBJ arg")*)raise Not_found else
469 470 Xlist.map schema (fun s ->
470 471 let morfs = List.flatten (Xlist.map s.morfs (transform_comps negation mood)) in
471 472 let morfs = List.flatten (Xlist.map morfs transform_preps) in
... ...
lexSemantics/ENIAMwalRenderer.ml
... ... @@ -53,7 +53,7 @@ let render_pos_entry = function
53 53 | "ppas" -> [Atom "ppas"; AVar "number"; AVar "case"; AVar "gender"; AVar "negation"]
54 54 | "inf" -> [Atom "inf"; AVar "aspect"; AVar "negation"]
55 55 | "qub" -> [Atom "qub"]
56   - | "compar" -> [Atom "compar"; AVar "case"]
  56 + | "compar" -> [Atom "comparp"; AVar "case"]
57 57 | "comp" -> [Atom "comp"; AVar "ctype"]
58 58 | "fin" -> [Atom "pers"; AVar "negation"]
59 59 | "praet" -> [Atom "pers"; AVar "negation"]
... ... @@ -130,7 +130,7 @@ let render_phrase = function
130 130 | PrepNumP(_,prep,Case case) -> Tensor[Atom "prepnump"; Atom prep; Atom case] *)
131 131 (* | ComprepNP("") -> Tensor[Atom "comprepnp"; Top]*)
132 132 | ComprepNP(prep) -> Tensor[Atom "comprepnp"; Atom prep]
133   - | ComparP(prep,Case case) -> Tensor[Atom "compar"; Atom prep; Atom case]
  133 + | ComparP(prep,Case case) -> Tensor[Atom "comparp"; Atom prep; Atom case]
134 134 (* | ComparPP(_,prep) -> Tensor[Atom "comparpp"; Atom prep] *)
135 135 (* | IP -> Tensor[Atom "ip";Top;Top;Top] *)
136 136 | CP (ctype,Comp comp) -> Tensor[Atom "cp"; arg_of_ctype ctype; Atom comp]
... ... @@ -209,7 +209,7 @@ let render_phrase_cat cat role node = function
209 209 | PrepNumP(_,prep,Case case) -> Tensor[Atom "prepnump"; Atom prep; Atom case] *)
210 210 (* | ComprepNP("") -> Tensor[Atom "comprepnp"; Top; Atom cat; Atom role; Atom node]*)
211 211 | ComprepNP(prep) -> Tensor[Atom "comprepnp"; Atom prep; Atom cat; Atom role; Atom node]
212   - | ComparP(prep,Case case) -> Tensor[Atom "compar"; Atom prep; Atom case; Atom cat; Atom role; Atom node]
  212 + | ComparP(prep,Case case) -> Tensor[Atom "comparp"; Atom prep; Atom case; Atom cat; Atom role; Atom node]
213 213 (* | ComparPP(_,prep) -> Tensor[Atom "comparpp"; Atom prep; Atom cat; Atom role; Atom node] *)
214 214 (* | IP -> Tensor[Atom "ip";Top;Top;Top; Atom cat; Atom role; Atom node] *)
215 215 | CP (ctype,Comp comp) -> Tensor[Atom "cp"; arg_of_ctype ctype; Atom comp; Atom cat; Atom role; Atom node]
... ... @@ -367,9 +367,9 @@ let render_connected_prepadjp prep cases =
367 367 adjunct (postp @ (Xlist.map cases (fun case ->
368 368 Tensor[Atom "prepadjp"; Atom prep; Atom case])))
369 369  
370   -let render_compar prep = Both,Plus[One;Tensor[Atom "compar"; Atom prep; Top]]
  370 +let render_compar prep = Both,Plus[One;Tensor[Atom "comparp"; Atom prep; Top]]
371 371  
372   -let render_connected_compar prep = adjunct [Tensor[Atom "compar"; Atom prep; Top]]
  372 +let render_connected_compar prep = adjunct [Tensor[Atom "comparp"; Atom prep; Top]]
373 373  
374 374 let verb_adjuncts_simp = [
375 375 Both, Plus[One;Tensor[Atom "advp"; Atom "pron"]];
... ...