From e36795d69dcd9b8937ca066563f65ad666a65fc8 Mon Sep 17 00:00:00 2001 From: olzama Date: Thu, 25 May 2023 13:37:00 +0200 Subject: [PATCH 01/18] retokenization of clitics disable --- util/tokenize_and_tag.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/util/tokenize_and_tag.py b/util/tokenize_and_tag.py index 56b5a05..720e118 100755 --- a/util/tokenize_and_tag.py +++ b/util/tokenize_and_tag.py @@ -42,7 +42,7 @@ def __init__(self): dic=True, aff=True, comp=False, rtk=True, # submodules are to be used. mw=True, ner=True, qt=False, prb=True ) # default: all created submodules are used - self.tg=pyfreeling_api.hmm_tagger(self.DATA+self.LANG+"/tagger.dat",True,1) + self.tg=pyfreeling_api.hmm_tagger(self.DATA+self.LANG+"/tagger.dat",False,0) #self.tg = pyfreeling_api.relax_tagger(self.DATA+self.LANG+"/constr_gram-B.dat",500,670.0,0.001,True,1) def tokenize_and_tag(self, sentence_list): @@ -56,8 +56,8 @@ def tokenize_and_tag(self, sentence_list): lin = lin + ' .' fake_final_dot = True output.append({'sentence': lin, 'tokens':[]}) - #if "tabaco" in lin: - # print("debug") + if "creerlo" in lin: + print("debug") # With the basic NER Freeling module, may need this, as it will assume that # all uppercased items are all named entities. #s = self.tk.tokenize(lin.lower().capitalize()) if lin.isupper() else self.tk.tokenize(lin) @@ -78,15 +78,29 @@ def tokenize_and_tag(self, sentence_list): if fake_final_dot: ws = ws[:-1] for j,w in enumerate(ws) : + all_tags = self.get_tags(w) + #print("lemma: {}, form: {}, start: {}, end: {}, tag: {}".format(w.get_lemma(), w.get_form(), w.get_span_start(), w.get_span_finish(), w.get_tag())) output[i]['tokens'].append({'lemma':w.get_lemma(), 'form': w.get_form(), 'start':w.get_span_start(), 'end': w.get_span_finish(), - 'selected-tag': w.get_tag(), 'all-tags': []}) - analyses = list(w.get_analysis()) - for a in analyses: + 'selected-tag': w.get_tag(), 'all-tags': all_tags}) + #analyses = list(w.get_analysis()) + #for a in analyses: #print("\ttag: {}, prob: {}".format(a_i.get_tag(), a_i.get_prob())) - output[i]['tokens'][j]['all-tags'].append({'tag': a.get_tag(), 'prob': a.get_prob()}) - if a.get_tag() == output[i]['tokens'][j]['selected-tag']: - output[i]['tokens'][j]['selected-prob'] = a.get_prob() + # output[i]['tokens'][j]['all-tags'].append({'tag': a.get_tag(), 'prob': a.get_prob()}) + # if a.get_tag() == output[i]['tokens'][j]['selected-tag']: + # output[i]['tokens'][j]['selected-prob'] = a.get_prob() # clean up self.sp.close_session(sid) return output + + def get_tags(self, w): + all_tags = [] + for a in w: + if a.is_selected(): + if a.is_retokenizable(): + tks = a.get_retokenizable() + for tk in tks: + all_tags.append(({'tag': tk.get_tag(), 'prob': a.get_prob()})) + else: + all_tags.append(({'tag': a.get_tag(), 'prob': a.get_prob()})) + return all_tags From 1d66b1ae37e92edaaa3701a74b1ba0476fc7311c Mon Sep 17 00:00:00 2001 From: olzama Date: Thu, 25 May 2023 17:08:59 +0200 Subject: [PATCH 02/18] clitics handling --- inflr.tdl | 4 ++-- util/srg_freeling2yy.py | 17 ++++++++--------- util/tokenize_and_tag.py | 34 +++++++++++++++++----------------- 3 files changed, 27 insertions(+), 28 deletions(-) diff --git a/inflr.tdl b/inflr.tdl index 0f12db3..9cbb12b 100644 --- a/inflr.tdl +++ b/inflr.tdl @@ -2217,11 +2217,11 @@ vpart_ilr. ; -- enclitics -+PP3MSA00 := ++PP3MSA0 := %suffix (vmlo vmlo) pp3msa_ilr. -+PP3CNA00 := ++PP3CNA0 := %suffix (vmlo2 vmlo2) pp3cna_ilr. diff --git a/util/srg_freeling2yy.py b/util/srg_freeling2yy.py index f9df73c..fa3fdaf 100755 --- a/util/srg_freeling2yy.py +++ b/util/srg_freeling2yy.py @@ -13,16 +13,14 @@ For compatibility, we will do the same for now. i -> AQ0MS0 (interjection to a default adjective form; will then undergo an adjective-to-interjection rule...) ''' -def override_tag(selected, all, word, lemma): +def override_tag(selected, word, lemma): if lemma.isnumeric(): return {'tag': 'Z', 'prob': -1} - if selected in TAGS and word not in DO_NOT_OVERRIDE and word not in REPLACE_LEMMA_AND_TAG: - return {'tag': TAGS[selected], 'prob': -1 } + if selected['tag'] in TAGS and word not in DO_NOT_OVERRIDE and word not in REPLACE_LEMMA_AND_TAG: + return {'tag': TAGS[selected['tag']], 'prob': -1 } if word in REPLACE_LEMMA_AND_TAG: return { 'tag': REPLACE_LEMMA_AND_TAG[word]['tag'], 'prob': -1 } - for t in all: - if t['tag'] == selected: - return t + return selected #raise Exception("selected tag not in tag list") def override_lemma(lemma, tag): @@ -47,9 +45,10 @@ def convert_sentences(sentences): else: for j,tok in enumerate(sent['tokens']): surface = tok['form'] - best = override_tag(tok['selected-tag'],tok['all-tags'], surface.lower(), tok['lemma']) - pos = best['tag'] - conf = best['prob'] + tag_prob = {'tag': tok['selected-tag'], 'prob':tok['selected-prob']} + pos_conf = override_tag(tag_prob, surface.lower(), tok['lemma']) + pos = pos_conf['tag'] + conf = pos_conf['prob'] lemma = override_lemma(tok['lemma'], pos) _num += 1 output += '(' diff --git a/util/tokenize_and_tag.py b/util/tokenize_and_tag.py index 720e118..5b803c5 100755 --- a/util/tokenize_and_tag.py +++ b/util/tokenize_and_tag.py @@ -61,10 +61,7 @@ def tokenize_and_tag(self, sentence_list): # With the basic NER Freeling module, may need this, as it will assume that # all uppercased items are all named entities. #s = self.tk.tokenize(lin.lower().capitalize()) if lin.isupper() else self.tk.tokenize(lin) - s = self.tk.tokenize(lin) - s = self.sp.split(sid,s,False) - s = self.mf.analyze(s) - s = self.tg.analyze(s) + s = self.freeling_analyze(lin, sid) if len(s) == 0 or len(s) > 1: if len(s) == 0: print("No Freeling analysis for {}".format(lin)) @@ -78,29 +75,32 @@ def tokenize_and_tag(self, sentence_list): if fake_final_dot: ws = ws[:-1] for j,w in enumerate(ws) : - all_tags = self.get_tags(w) + tags_probs = self.get_selected_tags(w) + tag = '" "+'.join([tp['tag'] for tp in tags_probs]) + prob = tags_probs[-1]['prob'] #print("lemma: {}, form: {}, start: {}, end: {}, tag: {}".format(w.get_lemma(), w.get_form(), w.get_span_start(), w.get_span_finish(), w.get_tag())) output[i]['tokens'].append({'lemma':w.get_lemma(), 'form': w.get_form(), 'start':w.get_span_start(), 'end': w.get_span_finish(), - 'selected-tag': w.get_tag(), 'all-tags': all_tags}) - #analyses = list(w.get_analysis()) - #for a in analyses: - #print("\ttag: {}, prob: {}".format(a_i.get_tag(), a_i.get_prob())) - # output[i]['tokens'][j]['all-tags'].append({'tag': a.get_tag(), 'prob': a.get_prob()}) - # if a.get_tag() == output[i]['tokens'][j]['selected-tag']: - # output[i]['tokens'][j]['selected-prob'] = a.get_prob() + 'selected-tag': tag, 'selected-prob': prob}) # clean up self.sp.close_session(sid) return output - def get_tags(self, w): - all_tags = [] + def freeling_analyze(self, lin, sid): + s = self.tk.tokenize(lin) + s = self.sp.split(sid, s, False) + s = self.mf.analyze(s) + s = self.tg.analyze(s) + return s + + def get_selected_tags(self, w): + tags = [] for a in w: if a.is_selected(): if a.is_retokenizable(): tks = a.get_retokenizable() for tk in tks: - all_tags.append(({'tag': tk.get_tag(), 'prob': a.get_prob()})) + tags.append(({'tag': tk.get_tag(), 'prob': a.get_prob()})) else: - all_tags.append(({'tag': a.get_tag(), 'prob': a.get_prob()})) - return all_tags + tags.append(({'tag': a.get_tag(), 'prob': a.get_prob()})) + return tags From 0d43a5237387902763f452c71cfaa8d698b304f1 Mon Sep 17 00:00:00 2001 From: olzama Date: Thu, 25 May 2023 17:46:04 +0200 Subject: [PATCH 03/18] corrected remaining old freeling tags in the mem model --- tibidabo.mem | 196 +++++++++++++++++++++++++-------------------------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/tibidabo.mem b/tibidabo.mem index ce56e8b..3c9ad05 100644 --- a/tibidabo.mem +++ b/tibidabo.mem @@ -15423,14 +15423,14 @@ (15381) [1 (1) sb-hd_c pp1csn00 n_-_pr-pers-n_le] 0.293361 {1051 12 1051 6} [0 1] (15382) [1 (2) ^ sb-hd_c pp1csn00 n_-_pr-pers-n_le] -0.510931 {192 7 192 5} [0 1] (15383) [1 (0) v_pp_e-vp_inf-prn-sc_dlr v_pp_e-cp-p-sub-prn_le] 0.026625 {98 2 98 2} [0 1] -(15384) [1 (1) +pp3cna00 vmn0000 v_acc_dlr] -0.28526 {2261 11 1999 7} [0 2] -(15385) [1 (2) hd-pt_c +pp3cna00 vmn0000 v_acc_dlr] 0.0430459 {1086 6 1086 4} [0 1] -(15386) [1 (0) +pp3cna00 vmn0000] -0.0255739 {2735 11 2235 2} [0 2] +(15384) [1 (1) +pp3cna0 vmn0000 v_acc_dlr] -0.28526 {2261 11 1999 7} [0 2] +(15385) [1 (2) hd-pt_c +pp3cna0 vmn0000 v_acc_dlr] 0.0430459 {1086 6 1086 4} [0 1] +(15386) [1 (0) +pp3cna0 vmn0000] -0.0255739 {2735 11 2235 2} [0 2] (15387) [1 (2) ct-hd_c hd-cmp_v-cp_c hd-cmp_mrk_c sps00 hd-pt_c] 0.0581825 {13 2 13 2} [0 1] (15388) [1 (0) sb-hd_c pp1csn00 ct-hd_c] 0.00912121 {118 3 118 2} [0 1] (15389) [1 (0) v_rfx_dlr v_np-pp*_e-rfx_le] 0.294523 {1309 15 1309 15} [0 1] -(15390) [1 (2) hd-cmp_v-cp_c hd-pt_c +pp3cna00 vmn0000] -0.0245181 {19 2 19 2} [0 1] -(15391) [1 (1) hd-cmp_v-cp_c hd-pt_c +pp3cna00 fp] -0.0245181 {22 3 22 2} [0 1] +(15390) [1 (2) hd-cmp_v-cp_c hd-pt_c +pp3cna0 vmn0000] -0.0245181 {19 2 19 2} [0 1] +(15391) [1 (1) hd-cmp_v-cp_c hd-pt_c +pp3cna0 fp] -0.0245181 {22 3 22 2} [0 1] (15392) [1 (2) ct-hd_c hd-ad_s-xp-cl_c hd-cmp_v-cp_c sps00 hd-pt_c] -0.288695 {63 2 63 2} [0 1] (15393) [1 (1) ct-hd_c hd-ad_s-xp-cl_c hd_optcmp-v_c hd-cmp_v-cp_c] 0.0850122 {388 17 388 17} [0 1] (15394) [1 (2) sb-hd_c ct-hd_c hd-ad_s-xp-cl_c hd_optcmp-v_c hd-cmp_v-cp_c] 0.265947 {135 11 135 11} [0 1] @@ -16007,10 +16007,10 @@ (15965) [1 (2) hd_advnp_c sp-hd_c dd0ms0 d_-_dem-este_le] 0.214814 {753 9 753 9} [0 1] (15966) [1 (2) flr-hd_nwh_c sp-hd_c ncms000 n_-_npart_dlr] -0.0178775 {70 3 70 3} [0 1] (15967) [1 (2) ad-hd_s_c hd-cmp_v-cp-sld_c vmip3s0 v_vp_inf-ssr_le] -0.0145353 {157 2 157 2} [0 1] -(15968) [1 (1) +pp3cna00 vmn0000 v_acd_dlr] 0.276967 {298 6 298 6} [0 1] -(15969) [1 (2) hd-pt_c +pp3cna00 vmn0000 v_acd_dlr] -0.0130201 {64 4 64 4} [0 1] -(15970) [1 (2) hd_xcmp-v_c hd-pt_c +pp3cna00 vmn0000] -0.0108284 {34 2 34 2} [0 1] -(15971) [1 (1) hd_xcmp-v_c hd-pt_c +pp3cna00 fp] -0.0108284 {34 2 34 2} [0 1] +(15968) [1 (1) +pp3cna0 vmn0000 v_acd_dlr] 0.276967 {298 6 298 6} [0 1] +(15969) [1 (2) hd-pt_c +pp3cna0 vmn0000 v_acd_dlr] -0.0130201 {64 4 64 4} [0 1] +(15970) [1 (2) hd_xcmp-v_c hd-pt_c +pp3cna0 vmn0000] -0.0108284 {34 2 34 2} [0 1] +(15971) [1 (1) hd_xcmp-v_c hd-pt_c +pp3cna0 fp] -0.0108284 {34 2 34 2} [0 1] (15972) [1 (2) ad-hd_s_c hd-cmp_v-cp-sld_c hd_xcmp-v_c hd-pt_c] 0.106401 {204 6 196 6} [0 2] (15973) [1 (1) ad-hd_s_c hd-cmp_v-cp-sld_c vmip3s0 hd_xcmp-v_c] -0.0169006 {246 6 246 6} [0 1] (15974) [1 (2) hd_optsb_c ad-hd_s_c hd-cmp_v-cp-sld_c vmip3s0 hd_xcmp-v_c] -0.0162871 {170 4 170 4} [0 1] @@ -16400,12 +16400,12 @@ (16358) [1 (2) ^ cnj-cl_crd-mb_c hd-ad_i-v-pp_c flr-hd_nwh_c hd-cmp_c] -0.00640158 {58 11 58 11} [0 1] (16359) [1 (2) ^ hd-sb_c ct-hd_c pp1cs00 vmif3s0] 0.2728 {5 2 5 2} [0 1] (16360) [1 (1) vmn0000 v_acc_dlr v_np_npsv_le] 0.228112 {223 5 223 5} [0 1] -(16361) [1 (2) hd-ad_i-v-pp_c +pp3cna00 vmn0000 v_acc_dlr] -0.0533337 {147 3 147 3} [0 1] -(16362) [1 (1) hd-ad_i-v-pp_c +pp3cna00 vmn0000] -0.0593179 {206 3 206 3} [0 1] +(16361) [1 (2) hd-ad_i-v-pp_c +pp3cna0 vmn0000 v_acc_dlr] -0.0533337 {147 3 147 3} [0 1] +(16362) [1 (1) hd-ad_i-v-pp_c +pp3cna0 vmn0000] -0.0593179 {206 3 206 3} [0 1] (16363) [1 (1) ncfs000 n_-_c_le "casa"] 0.0450461 {1813 11 1813 2} [0 1] (16364) [1 (0) n_-_c_le "casa"] 0.0450461 {1813 11 1813 2} [0 1] (16365) [1 (2) hd-sb_c hd-ad_i-v-pp_c hd-cmp_c sps00 hd-pt_c] 0.687626 {40 7 40 7} [0 1] -(16366) [1 (0) hd-ad_i-v-pp_c +pp3cna00 hd-cmp_c] -0.0657623 {223 4 223 4} [0 1] +(16366) [1 (0) hd-ad_i-v-pp_c +pp3cna0 hd-cmp_c] -0.0657623 {223 4 223 4} [0 1] (16367) [1 (0) hd-sb_c ct-hd_c hd-ad_i-v-pp_c] 0.636449 {150 8 150 8} [0 1] (16368) [1 (1) ^ hd-sb_c ct-hd_c hd-ad_i-v-pp_c] 0.351099 {61 4 61 4} [0 1] (16369) [1 (2) hd-ad_i-v-pp_c hd-sb_c ct-hd_c pp1cs00 vmif3s0] -0.2728 {3 2 3 2} [0 1] @@ -24451,10 +24451,10 @@ (24409) [1 (2) hd-ad_i-v-pp_c hd-ad_i-v-pp_c vmis3s0 v_ppa*_le] -2.83978e-4 {13 2 13 2} [0 1] (24410) [1 (2) hd-ad_i-v-pp_c hd_optcmp-v_c hd-ad_i-v-pp_c hd-ad_s-xp-xp_c hd-cmp_c] -9.25023e-5 {9 2 9 2} [0 1] (24411) [1 (2) hd_optcmp-v_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-ad_s-xp-xp_c hd-cmp_c] -9.24897e-5 {9 2 9 2} [0 1] -(24412) [1 (2) +pp3cna00 vmn0000 v_acc_dlr v_np-ppa*_le] 0.314398 {593 3 593 2} [0 1] -(24413) [1 (2) hd_optcmp-v_c +pp3cna00 vmn0000 v_acc_dlr] 0.0103233 {343 4 343 3} [0 1] -(24414) [1 (1) hd_optcmp-v_c +pp3cna00 vmn0000] -0.00694954 {519 4 519 3} [0 1] -(24415) [1 (0) hd_optcmp-v_c +pp3cna00] -0.00694954 {519 4 519 3} [0 1] +(24412) [1 (2) +pp3cna0 vmn0000 v_acc_dlr v_np-ppa*_le] 0.314398 {593 3 593 2} [0 1] +(24413) [1 (2) hd_optcmp-v_c +pp3cna0 vmn0000 v_acc_dlr] 0.0103233 {343 4 343 3} [0 1] +(24414) [1 (1) hd_optcmp-v_c +pp3cna0 vmn0000] -0.00694954 {519 4 519 3} [0 1] +(24415) [1 (0) hd_optcmp-v_c +pp3cna0] -0.00694954 {519 4 519 3} [0 1] (24416) [1 (2) sb-hd_c hd-cmp_c sp-hd_c z hd-ad_i-cn-pp_c] 0.0310786 {423 31 423 31} [0 1] (24417) [1 (2) hd-ad_i-v-pp_c hd-cmp_c vsip3s0 v_np_npsv-sbj-vp-inf-ser_le] 0.0184019 {56 4 56 4} [0 1] (24418) [1 (1) hd-sb_sldc_c sp-hd_c z hd-ad_i-cn-pp_c] -0.392494 {1120 43 1117 43} [0 2] @@ -27552,14 +27552,14 @@ (27510) [1 (2) hd-cmp_v-cp_c flr-hd_nwh_c ad-hd_s_c rg hd_optsb_c] -0.00147191 {37 3 37 3} [0 1] (27511) [1 (1) hd_optcmp-n_c ncms000 n_pp-vp_mc_le] -0.0995638 {928 7 928 5} [0 1] (27512) [1 (2) hd_optcmp-n_c hd_optcmp-n_c ncms000 n_pp-vp_mc_le] -0.122709 {908 7 908 5} [0 1] -(27513) [1 (2) +pp3cna00 van0000 v_vp_part-haber_le "haberlo"] 0.0355164 {60 2 60 2} [0 1] +(27513) [1 (2) +pp3cna0 van0000 v_vp_part-haber_le "haberlo"] 0.0355164 {60 2 60 2} [0 1] (27514) [1 (1) van0000 v_vp_part-haber_le "haberlo"] 0.0355164 {60 2 60 2} [0 1] (27515) [1 (0) v_vp_part-haber_le "haberlo"] 0.0355164 {60 2 60 2} [0 1] (27516) [1 (0) van0000 v_vp_part-haber_le] 0.0355164 {168 3 168 2} [0 1] -(27517) [1 (1) +pp3cna00 van0000 v_vp_part-haber_le] 0.0355164 {60 2 60 2} [0 1] -(27518) [1 (2) hd-cmp_v-cp_c +pp3cna00 van0000 v_vp_part-haber_le] 0.0355164 {60 2 60 2} [0 1] -(27519) [1 (1) hd-cmp_v-cp_c +pp3cna00 van0000] 0.0307049 {96 2 96 2} [0 1] -(27520) [1 (2) hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna00 van0000] 0.0481661 {12 2 12 2} [0 1] +(27517) [1 (1) +pp3cna0 van0000 v_vp_part-haber_le] 0.0355164 {60 2 60 2} [0 1] +(27518) [1 (2) hd-cmp_v-cp_c +pp3cna0 van0000 v_vp_part-haber_le] 0.0355164 {60 2 60 2} [0 1] +(27519) [1 (1) hd-cmp_v-cp_c +pp3cna0 van0000] 0.0307049 {96 2 96 2} [0 1] +(27520) [1 (2) hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna0 van0000] 0.0481661 {12 2 12 2} [0 1] (27521) [1 (2) vmp00sm v_acc_dlr v_np*-ppa*_le "comprado"] 0.0355164 {60 2 60 2} [0 1] (27522) [1 (1) v_acc_dlr v_np*-ppa*_le "comprado"] 0.0355164 {60 2 60 2} [0 1] (27523) [1 (0) v_acc_dlr v_np*-ppa*_le] -0.170498 {657 8 657 8} [0 1] @@ -27568,16 +27568,16 @@ (27526) [1 (2) hd-ad_i-v-pp_c hd_optcmp-v_c vmp00sm v_acc_dlr] 0.0426456 {26 4 26 4} [0 1] (27527) [1 (2) hd-cmp_v-cp_c hd-ad_i-v-pp_c hd-cmp_c sps00 hd_optcmp-n_c] 1.11685 {758 25 726 25} [0 2] (27528) [1 (2) hd-cmp_v-cp_c hd-cmp_v-cp_c hd-ad_i-v-pp_c hd_optcmp-v_c hd-cmp_c] 0.383048 {114 11 114 11} [0 1] -(27529) [1 (0) hd-cmp_v-cp_c +pp3cna00 hd-ad_i-v-pp_c] 0.0481662 {12 2 12 2} [0 1] -(27530) [1 (1) hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna00 hd-ad_i-v-pp_c] 0.0492304 {4 2 4 2} [0 1] -(27531) [1 (2) sb-hd_c hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna00 hd-ad_i-v-pp_c] 0.0492304 {4 2 4 2} [0 1] +(27529) [1 (0) hd-cmp_v-cp_c +pp3cna0 hd-ad_i-v-pp_c] 0.0481662 {12 2 12 2} [0 1] +(27530) [1 (1) hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna0 hd-ad_i-v-pp_c] 0.0492304 {4 2 4 2} [0 1] +(27531) [1 (2) sb-hd_c hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna0 hd-ad_i-v-pp_c] 0.0492304 {4 2 4 2} [0 1] (27532) [1 (0) hd-cmp_v-cp_c vsis3s0 hd-cmp_v-cp_c] 0.0481661 {12 2 12 2} [0 1] (27533) [1 (1) sb-hd_c hd-cmp_v-cp_c vsis3s0 hd-cmp_v-cp_c] 0.0486984 {8 2 8 2} [0 1] (27534) [1 (2) ^ sb-hd_c hd-cmp_v-cp_c vsis3s0 hd-cmp_v-cp_c] 0.0486984 {8 2 8 2} [0 1] -(27535) [1 (2) hd-ad_i-v-pp_c hd-cmp_v-cp_c +pp3cna00 van0000] -0.0126976 {48 2 48 2} [0 1] -(27536) [1 (0) hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -0.0126976 {48 2 48 2} [0 1] -(27537) [1 (1) hd-ad_i-v-pp_c hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -0.00783483 {12 2 12 2} [0 1] -(27538) [1 (2) hd-cmp_v-cp_c hd-ad_i-v-pp_c hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -0.00675422 {4 2 4 2} [0 1] +(27535) [1 (2) hd-ad_i-v-pp_c hd-cmp_v-cp_c +pp3cna0 van0000] -0.0126976 {48 2 48 2} [0 1] +(27536) [1 (0) hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -0.0126976 {48 2 48 2} [0 1] +(27537) [1 (1) hd-ad_i-v-pp_c hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -0.00783483 {12 2 12 2} [0 1] +(27538) [1 (2) hd-cmp_v-cp_c hd-ad_i-v-pp_c hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -0.00675422 {4 2 4 2} [0 1] (27539) [1 (1) hd-cmp_v-cp_c hd-ad_i-v-pp_c hd-cmp_v-cp_c hd-cmp_c] -0.208294 {181 16 181 16} [0 1] (27540) [1 (2) sb-hd_c hd-cmp_v-cp_c hd-ad_i-v-pp_c hd-cmp_v-cp_c hd-cmp_c] -0.0239782 {28 6 28 6} [0 1] (27541) [1 (1) sb-hd_c hd-cmp_v-cp_c vsis3s0 hd-ad_i-v-pp_c] 0.713096 {128 8 128 8} [0 1] @@ -27586,67 +27586,67 @@ (27544) [1 (1) v_acc_dlr v_np_npsv-idm_le "haberlo"] -0.0355164 {264 2 264 2} [0 1] (27545) [1 (0) v_np_npsv-idm_le "haberlo"] -0.0355164 {264 2 264 2} [0 1] (27546) [1 (1) van0000 v_acc_dlr v_np_npsv-idm_le] -0.0355164 {264 2 264 2} [0 1] -(27547) [1 (2) +pp3cna00 van0000 v_acc_dlr v_np_npsv-idm_le] -0.0355164 {264 2 264 2} [0 1] +(27547) [1 (2) +pp3cna0 van0000 v_acc_dlr v_np_npsv-idm_le] -0.0355164 {264 2 264 2} [0 1] (27548) [1 (0) van0000 v_acc_dlr] -0.0355164 {264 2 264 2} [0 1] -(27549) [1 (1) +pp3cna00 van0000 v_acc_dlr] -0.0355164 {264 2 264 2} [0 1] -(27550) [1 (2) hd-ad_i-v-pp_c +pp3cna00 van0000 v_acc_dlr] -0.0210424 {156 2 156 2} [0 1] -(27551) [1 (1) hd-ad_i-v-pp_c +pp3cna00 van0000] -0.0210424 {156 2 156 2} [0 1] -(27552) [1 (2) hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna00 van0000] -0.00324176 {24 2 24 2} [0 1] +(27549) [1 (1) +pp3cna0 van0000 v_acc_dlr] -0.0355164 {264 2 264 2} [0 1] +(27550) [1 (2) hd-ad_i-v-pp_c +pp3cna0 van0000 v_acc_dlr] -0.0210424 {156 2 156 2} [0 1] +(27551) [1 (1) hd-ad_i-v-pp_c +pp3cna0 van0000] -0.0210424 {156 2 156 2} [0 1] +(27552) [1 (2) hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna0 van0000] -0.00324176 {24 2 24 2} [0 1] (27553) [1 (2) v_ppart-t_dlr vmp00sm v_np*-ppa*_le "comprado"] -0.0194278 {144 2 144 2} [0 1] (27554) [1 (1) vmp00sm v_np*-ppa*_le "comprado"] -0.0194278 {144 2 144 2} [0 1] (27555) [1 (0) vmp00sm v_np*-ppa*_le] -0.123239 {497 6 497 6} [0 1] (27556) [1 (1) v_ppart-t_dlr vmp00sm v_np*-ppa*_le] -0.122924 {216 6 216 6} [0 1] (27557) [1 (2) hd_optcmp-v_c v_ppart-t_dlr vmp00sm v_np*-ppa*_le] -0.118993 {180 6 180 6} [0 1] -(27558) [1 (0) hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.0210424 {156 2 156 2} [0 1] -(27559) [1 (1) hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.00324176 {24 2 24 2} [0 1] -(27560) [1 (2) hd-cmp_v-cp_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.00108062 {8 2 8 2} [0 1] +(27558) [1 (0) hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.0210424 {156 2 156 2} [0 1] +(27559) [1 (1) hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.00324176 {24 2 24 2} [0 1] +(27560) [1 (2) hd-cmp_v-cp_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.00108062 {8 2 8 2} [0 1] (27561) [1 (1) hd-cmp_v-cp_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-cmp_c] 0.156077 {754 81 754 81} [0 1] (27562) [1 (2) sb-hd_c hd-cmp_v-cp_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-cmp_c] -0.0712044 {145 26 145 26} [0 1] -(27563) [1 (2) hd-cmp_v-cp_c hd-ad_i-v-pp_c +pp3cna00 van0000] -0.00486244 {36 2 36 2} [0 1] +(27563) [1 (2) hd-cmp_v-cp_c hd-ad_i-v-pp_c +pp3cna0 van0000] -0.00486244 {36 2 36 2} [0 1] (27564) [1 (2) hd_ajpart_c hd-ad_i-v-pp_c hd-cmp_c sps00 hd_optcmp-n_c] 0.336332 {191 9 191 9} [0 1] -(27565) [1 (1) hd-cmp_v-cp_c hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.00486244 {36 2 36 2} [0 1] -(27566) [1 (2) sb-hd_c hd-cmp_v-cp_c hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.00378201 {28 2 28 2} [0 1] +(27565) [1 (1) hd-cmp_v-cp_c hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.00486244 {36 2 36 2} [0 1] +(27566) [1 (2) sb-hd_c hd-cmp_v-cp_c hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.00378201 {28 2 28 2} [0 1] (27567) [1 (2) hd-ad_i-v-pp_c vmp00sm v_acc_dlr v_np*-ppa*_le] -0.00166994 {14 3 14 3} [0 1] (27568) [1 (1) hd-ad_i-v-pp_c vmp00sm v_acc_dlr] 0.233128 {141 6 141 6} [0 1] (27569) [1 (2) hd_optcmp-v_c hd-ad_i-v-pp_c vmp00sm v_acc_dlr] -0.00169994 {19 4 19 4} [0 1] -(27570) [1 (1) hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -0.00108064 {8 2 8 2} [0 1] -(27571) [1 (2) sb-hd_c hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -5.40334e-4 {4 2 4 2} [0 1] -(27572) [1 (2) hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna00 van0000] -0.00486244 {36 2 36 2} [0 1] +(27570) [1 (1) hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -0.00108064 {8 2 8 2} [0 1] +(27571) [1 (2) sb-hd_c hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -5.40334e-4 {4 2 4 2} [0 1] +(27572) [1 (2) hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna0 van0000] -0.00486244 {36 2 36 2} [0 1] (27573) [1 (2) hd-sb_sldc_c hd-cmp_v-cp_c hd-ad_i-v-pp_c hd_optcmp-v_c hd-cmp_c] -0.00108062 {8 2 8 2} [0 1] -(27574) [1 (1) hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna00 hd-ad_i-v-pp_c] -0.00108062 {8 2 8 2} [0 1] -(27575) [1 (2) flr-hd_nwh_c hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna00 hd-ad_i-v-pp_c] -5.40311e-4 {4 2 4 2} [0 1] +(27574) [1 (1) hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna0 hd-ad_i-v-pp_c] -0.00108062 {8 2 8 2} [0 1] +(27575) [1 (2) flr-hd_nwh_c hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna0 hd-ad_i-v-pp_c] -5.40311e-4 {4 2 4 2} [0 1] (27576) [1 (2) hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 v_vp_inf-ser_le] -0.00648288 {48 2 48 2} [0 1] (27577) [1 (2) hd-cmp_v-cp_c hd-cmp_v-cp_c hd_optcmp-v_c vmp00sm] 0.0881024 {275 5 275 5} [0 1] -(27578) [1 (2) hd-ad_i-v-pp_c hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -5.40313e-4 {4 2 4 2} [0 1] +(27578) [1 (2) hd-ad_i-v-pp_c hd-cmp_v-cp_c hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -5.40313e-4 {4 2 4 2} [0 1] (27579) [1 (1) hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 hd-cmp_v-cp_c] -5.40313e-4 {4 2 4 2} [0 1] (27580) [1 (2) sb-hd_c hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 hd-cmp_v-cp_c] -5.40313e-4 {4 2 4 2} [0 1] (27581) [1 (2) hd-ad_i-v-pp_c hd-sb_sldc_c hd_xcmp-v_c vsis3s0] -0.00379238 {107 9 107 9} [0 1] (27582) [1 (2) hd-sb_sldc_c hd-cmp_v-cp_c hd_optcmp-v_c vmp00sm] -0.0027015 {20 2 20 2} [0 1] -(27583) [1 (1) hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -0.00378201 {28 2 28 2} [0 1] -(27584) [1 (2) hd-ad_i-v-pp_c hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -0.00108062 {8 2 8 2} [0 1] +(27583) [1 (1) hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -0.00378201 {28 2 28 2} [0 1] +(27584) [1 (2) hd-ad_i-v-pp_c hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -0.00108062 {8 2 8 2} [0 1] (27585) [1 (1) hd-ad_i-v-pp_c hd-sb_sldc_c hd_xcmp-v_c hd-cmp_v-cp_c] -0.00153937 {22 3 22 3} [0 1] (27586) [1 (2) flr-hd_nwh_c hd-ad_i-v-pp_c hd-sb_sldc_c hd_xcmp-v_c hd-cmp_v-cp_c] -0.00153937 {22 3 22 3} [0 1] (27587) [1 (2) flr-hd_nwh_c hd-ad_i-v-pp_c hd-cmp_c sps00 hd_optcmp-n_c] 0.116866 {323 28 323 28} [0 1] -(27588) [1 (2) flr-hd_nwh_c hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -0.00108062 {8 2 8 2} [0 1] +(27588) [1 (2) flr-hd_nwh_c hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -0.00108062 {8 2 8 2} [0 1] (27589) [1 (2) hd-ad_i-v-pp_c flr-hd_nwh_c hd-sb_sldc_c hd_xcmp-v_c hd-cmp_v-cp_c] -5.86803e-4 {9 3 9 3} [0 1] -(27590) [1 (2) hd-cmp_v-cp_c +pp3cna00 van0000 v_acc_dlr] -0.00486244 {36 2 36 2} [0 1] -(27591) [1 (0) hd-cmp_v-cp_c vsis3s0 +pp3cna00] -0.00486244 {36 2 36 2} [0 1] -(27592) [1 (1) hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 +pp3cna00] -0.00486244 {36 2 36 2} [0 1] -(27593) [1 (2) hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 +pp3cna00] -0.00108062 {8 2 8 2} [0 1] +(27590) [1 (2) hd-cmp_v-cp_c +pp3cna0 van0000 v_acc_dlr] -0.00486244 {36 2 36 2} [0 1] +(27591) [1 (0) hd-cmp_v-cp_c vsis3s0 +pp3cna0] -0.00486244 {36 2 36 2} [0 1] +(27592) [1 (1) hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 +pp3cna0] -0.00486244 {36 2 36 2} [0 1] +(27593) [1 (2) hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 +pp3cna0] -0.00108062 {8 2 8 2} [0 1] (27594) [1 (1) hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-cmp_v-cp_c hd_prdp_c] -0.018306 {381 29 381 29} [0 1] (27595) [1 (2) sb-hd_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-cmp_v-cp_c hd_prdp_c] -0.00870134 {144 9 144 9} [0 1] (27596) [1 (2) hd-ad_i-v-pp_c hd-sb_sldc_c vsis3s0 v_np_npsv-sbj-vp-inf-ser_le] -0.00162092 {12 2 12 2} [0 1] (27597) [1 (0) hd-sb_sldc_c vsis3s0 hd-cmp_v-cp_c] -0.0027015 {20 2 20 2} [0 1] (27598) [1 (1) hd-ad_i-v-pp_c hd-sb_sldc_c vsis3s0 hd-cmp_v-cp_c] -5.40311e-4 {4 2 4 2} [0 1] (27599) [1 (2) hd_xcmp-v_c hd-ad_i-v-pp_c hd-sb_sldc_c vsis3s0 hd-cmp_v-cp_c] -5.40311e-4 {4 2 4 2} [0 1] -(27600) [1 (2) hd-sb_sldc_c hd-ad_i-v-pp_c hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -0.00108062 {8 2 8 2} [0 1] +(27600) [1 (2) hd-sb_sldc_c hd-ad_i-v-pp_c hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -0.00108062 {8 2 8 2} [0 1] (27601) [1 (2) hd-sb_sldc_c hd-ad_i-v-pp_c hd-cmp_c sps00 hd_optcmp-n_c] -0.0879103 {99 5 99 5} [0 1] (27602) [1 (1) hd-sb_sldc_c hd-ad_i-v-pp_c hd-cmp_v-cp_c hd-cmp_c] -0.00110035 {13 3 13 3} [0 1] (27603) [1 (2) flr-hd_nwh_c hd-sb_sldc_c hd-ad_i-v-pp_c hd-cmp_v-cp_c hd-cmp_c] -5.40311e-4 {4 2 4 2} [0 1] (27604) [1 (0) hd-sb_sldc_c hd_xcmp-v_c hd-ad_i-v-pp_c] -0.0647173 {163 11 163 11} [0 1] (27605) [1 (1) flr-hd_nwh_c hd-sb_sldc_c hd_xcmp-v_c hd-ad_i-v-pp_c] 0.094502 {124 10 124 10} [0 1] (27606) [1 (2) ^ flr-hd_nwh_c hd-sb_sldc_c hd_xcmp-v_c hd-ad_i-v-pp_c] 0.0956703 {91 10 91 10} [0 1] -(27607) [1 (2) hd_xcmp-v_c hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna00 hd-ad_i-v-pp_c] -5.40311e-4 {4 2 4 2} [0 1] +(27607) [1 (2) hd_xcmp-v_c hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna0 hd-ad_i-v-pp_c] -5.40311e-4 {4 2 4 2} [0 1] (27608) [1 (1) hd_xcmp-v_c hd-sb_sldc_c vsis3s0 hd-cmp_v-cp_c] -0.00216121 {16 2 16 2} [0 1] (27609) [1 (2) flr-hd_nwh_c hd_xcmp-v_c hd-sb_sldc_c vsis3s0 hd-cmp_v-cp_c] -0.00162092 {12 2 12 2} [0 1] (27610) [1 (2) vmp00sm v_dcc-2nd_dlr v_np*-ppa*_le "comprado"] -0.0161958 {120 2 120 2} [0 1] @@ -27655,8 +27655,8 @@ (27613) [1 (1) vmp00sm v_dcc-2nd_dlr v_np*-ppa*_le] -0.397441 {312 7 312 7} [0 1] (27614) [1 (2) v_ppart-prn_dlr vmp00sm v_dcc-2nd_dlr v_np*-ppa*_le] -0.0230822 {177 6 177 6} [0 1] (27615) [1 (2) hd_optcmp-v_c v_ppart-prn_dlr vmp00sm v_dcc-2nd_dlr] -0.019515 {191 9 191 9} [0 1] -(27616) [1 (2) hd_xcmp-v_c hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna00 hd_optcmp-v_c] -0.00162092 {12 2 12 2} [0 1] -(27617) [1 (2) sb-hd_c hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 +pp3cna00] -0.00378201 {28 2 28 2} [0 1] +(27616) [1 (2) hd_xcmp-v_c hd-sb_sldc_c hd-cmp_v-cp_c +pp3cna0 hd_optcmp-v_c] -0.00162092 {12 2 12 2} [0 1] +(27617) [1 (2) sb-hd_c hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 +pp3cna0] -0.00378201 {28 2 28 2} [0 1] (27618) [1 (1) sb-hd_c hd-ad_i-v-pp_c hd-cmp_v-cp_c hd_prdp_c] -0.0940506 {628 42 628 42} [0 1] (27619) [1 (2) ^ sb-hd_c hd-ad_i-v-pp_c hd-cmp_v-cp_c hd_prdp_c] -0.0904232 {543 37 543 37} [0 1] (27620) [1 (2) hd-ad_i-v-pp_c hd_xcmp-v_c hd-sb_sldc_c vsis3s0 hd-cmp_v-cp_c] -5.40311e-4 {4 2 4 2} [0 1] @@ -27668,34 +27668,34 @@ (27626) [1 (1) hd_xcmp-v_c hd-sb_sldc_c vsis3s0 hd-ad_i-v-pp_c] -0.00756299 {56 2 56 2} [0 1] (27627) [1 (2) flr-hd_nwh_c hd_xcmp-v_c hd-sb_sldc_c vsis3s0 hd-ad_i-v-pp_c] -0.00648287 {48 2 48 2} [0 1] (27628) [1 (2) hd-ad_i-v-pp_c v_ppart-t_dlr vmp00sm v_np*-ppa*_le] -0.00387716 {32 4 32 4} [0 1] -(27629) [1 (2) hd-sb_sldc_c hd-ad_i-v-pp_c +pp3cna00 van0000] -0.0129606 {96 2 96 2} [0 1] +(27629) [1 (2) hd-sb_sldc_c hd-ad_i-v-pp_c +pp3cna0 van0000] -0.0129606 {96 2 96 2} [0 1] (27630) [1 (2) hd-sb_sldc_c hd-ad_i-v-pp_c hd_prdp_c hd_ajpart_c] -0.0108877 {82 3 82 3} [0 1] -(27631) [1 (1) hd-sb_sldc_c hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.0129606 {96 2 96 2} [0 1] -(27632) [1 (2) flr-hd_nwh_c hd-sb_sldc_c hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.00486244 {36 2 36 2} [0 1] -(27633) [1 (2) hd-sb_sldc_c +pp3cna00 van0000 v_acc_dlr] -0.00972269 {72 2 72 2} [0 1] -(27634) [1 (1) hd-sb_sldc_c +pp3cna00 van0000] -0.00972269 {72 2 72 2} [0 1] -(27635) [1 (2) flr-hd_nwh_c hd-sb_sldc_c +pp3cna00 van0000] -0.00486244 {36 2 36 2} [0 1] -(27636) [1 (0) hd-sb_sldc_c hd_xcmp-v_c +pp3cna00] -0.00486244 {36 2 36 2} [0 1] -(27637) [1 (1) flr-hd_nwh_c hd-sb_sldc_c hd_xcmp-v_c +pp3cna00] -0.00486244 {36 2 36 2} [0 1] -(27638) [1 (2) hd-ad_i-v-pp_c flr-hd_nwh_c hd-sb_sldc_c hd_xcmp-v_c +pp3cna00] -0.00486244 {36 2 36 2} [0 1] -(27639) [1 (2) hd-sb_sldc_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.00216121 {16 2 16 2} [0 1] +(27631) [1 (1) hd-sb_sldc_c hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.0129606 {96 2 96 2} [0 1] +(27632) [1 (2) flr-hd_nwh_c hd-sb_sldc_c hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.00486244 {36 2 36 2} [0 1] +(27633) [1 (2) hd-sb_sldc_c +pp3cna0 van0000 v_acc_dlr] -0.00972269 {72 2 72 2} [0 1] +(27634) [1 (1) hd-sb_sldc_c +pp3cna0 van0000] -0.00972269 {72 2 72 2} [0 1] +(27635) [1 (2) flr-hd_nwh_c hd-sb_sldc_c +pp3cna0 van0000] -0.00486244 {36 2 36 2} [0 1] +(27636) [1 (0) hd-sb_sldc_c hd_xcmp-v_c +pp3cna0] -0.00486244 {36 2 36 2} [0 1] +(27637) [1 (1) flr-hd_nwh_c hd-sb_sldc_c hd_xcmp-v_c +pp3cna0] -0.00486244 {36 2 36 2} [0 1] +(27638) [1 (2) hd-ad_i-v-pp_c flr-hd_nwh_c hd-sb_sldc_c hd_xcmp-v_c +pp3cna0] -0.00486244 {36 2 36 2} [0 1] +(27639) [1 (2) hd-sb_sldc_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.00216121 {16 2 16 2} [0 1] (27640) [1 (1) hd-sb_sldc_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-cmp_c] -0.00262986 {63 12 63 12} [0 1] (27641) [1 (2) flr-hd_nwh_c hd-sb_sldc_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-cmp_c] -0.00145784 {24 10 24 10} [0 1] (27642) [1 (2) hd-ad_i-v-pp_c hd-ad_i-v-pp_c flr-hd_nwh_c sp-hd_c hd-sb_sldc_c] -0.00361994 {252 56 252 56} [0 1] -(27643) [1 (2) hd-ad_i-v-pp_c hd-cmp_v-cp_c hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.00108062 {8 2 8 2} [0 1] +(27643) [1 (2) hd-ad_i-v-pp_c hd-cmp_v-cp_c hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.00108062 {8 2 8 2} [0 1] (27644) [1 (1) hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 hd-ad_i-v-pp_c] -0.00536479 {40 6 40 6} [0 1] (27645) [1 (2) sb-hd_c hd-ad_i-v-pp_c hd-cmp_v-cp_c vsis3s0 hd-ad_i-v-pp_c] -0.00121586 {27 5 27 5} [0 1] -(27646) [1 (2) hd-ad_i-v-pp_c hd-sb_sldc_c hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.00216121 {16 2 16 2} [0 1] +(27646) [1 (2) hd-ad_i-v-pp_c hd-sb_sldc_c hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.00216121 {16 2 16 2} [0 1] (27647) [1 (1) hd-ad_i-v-pp_c hd-sb_sldc_c hd_xcmp-v_c hd-ad_i-v-pp_c] -0.00110882 {17 5 17 5} [0 1] (27648) [1 (2) flr-hd_nwh_c hd-ad_i-v-pp_c hd-sb_sldc_c hd_xcmp-v_c hd-ad_i-v-pp_c] -0.00110571 {16 5 16 5} [0 1] (27649) [1 (2) hd-ad_i-v-pp_c flr-hd_nwh_c hd-sb_sldc_c hd_xcmp-v_c hd-ad_i-v-pp_c] -0.00109586 {13 4 13 4} [0 1] (27650) [1 (2) sb-hd_c hd-ad_i-v-pp_c hd_prdp_c hd-ad_i-ap-xp_c] -0.0161101 {346 57 346 57} [0 1] (27651) [1 (2) hd-ad_i-ap-xp_c hd_ajpart_c hd_optcmp-v_c v_ppart-prn_dlr] -0.0986128 {74 7 74 7} [0 1] -(27652) [1 (2) hd_xcmp-v_c hd-sb_sldc_c +pp3cna00 van0000] -0.00486244 {36 2 36 2} [0 1] -(27653) [1 (0) hd-sb_sldc_c vsis3s0 +pp3cna00] -0.00486244 {36 2 36 2} [0 1] -(27654) [1 (1) hd_xcmp-v_c hd-sb_sldc_c vsis3s0 +pp3cna00] -0.00486244 {36 2 36 2} [0 1] -(27655) [1 (2) flr-hd_nwh_c hd_xcmp-v_c hd-sb_sldc_c vsis3s0 +pp3cna00] -0.00486244 {36 2 36 2} [0 1] -(27656) [1 (2) hd_xcmp-v_c hd-sb_sldc_c hd-ad_i-v-pp_c +pp3cna00 hd_prdp_c] -0.00594276 {44 2 44 2} [0 1] +(27652) [1 (2) hd_xcmp-v_c hd-sb_sldc_c +pp3cna0 van0000] -0.00486244 {36 2 36 2} [0 1] +(27653) [1 (0) hd-sb_sldc_c vsis3s0 +pp3cna0] -0.00486244 {36 2 36 2} [0 1] +(27654) [1 (1) hd_xcmp-v_c hd-sb_sldc_c vsis3s0 +pp3cna0] -0.00486244 {36 2 36 2} [0 1] +(27655) [1 (2) flr-hd_nwh_c hd_xcmp-v_c hd-sb_sldc_c vsis3s0 +pp3cna0] -0.00486244 {36 2 36 2} [0 1] +(27656) [1 (2) hd_xcmp-v_c hd-sb_sldc_c hd-ad_i-v-pp_c +pp3cna0 hd_prdp_c] -0.00594276 {44 2 44 2} [0 1] (27657) [1 (2) hd_xcmp-v_c hd-sb_sldc_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-cmp_c] -0.00112941 {25 7 25 7} [0 1] (27658) [1 (1) hd-ad_i-v-pp_c hd-sb_sldc_c vsis3s0 hd-ad_i-v-pp_c] -0.00108062 {8 2 8 2} [0 1] (27659) [1 (2) hd_xcmp-v_c hd-ad_i-v-pp_c hd-sb_sldc_c vsis3s0 hd-ad_i-v-pp_c] -0.00108062 {8 2 8 2} [0 1] @@ -30406,7 +30406,7 @@ (30364) [1 (2) hd-cmp_v-cp-sld_c hd_optcmp-v_c hd-cmp_c hd_xad-v_c hd_nbar_c] 0.297781 {78 8 78 8} [0 1] (30365) [1 (2) hd-sb_c hd-cmp_c vsip3s0 v_ap_sbj-vp-inf-ser_le] -0.0910675 {403 5 403 4} [0 1] (30366) [1 (1) hd-cmp_c aq0ms0 aj_-_i_le] 0.0998564 {239 6 239 5} [0 1] -(30367) [1 (2) hd_optcmp-v_c hd-pt_c +pp3cna00 vmn0000] 0.0358649 {540 3 540 2} [0 1] +(30367) [1 (2) hd_optcmp-v_c hd-pt_c +pp3cna0 vmn0000] 0.0358649 {540 3 540 2} [0 1] (30368) [1 (0) hd-sb_c hd-cmp_c hd_optcmp-v_c] -0.308009 {321 6 321 5} [0 1] (30369) [1 (1) cl-cl_crd-at_c cnj-cl_crd-mb_c cc hd-sb_c] 0.466451 {49 5 49 5} [0 1] (30370) [1 (2) ^ cl-cl_crd-at_c cnj-cl_crd-mb_c cc hd-sb_c] 0.466524 {47 5 47 5} [0 1] @@ -51657,43 +51657,43 @@ (51615) [1 (2) ad-hd_i-pp-vp_c ad-hd_i-modnp-vp_c ad-hd_i-pp-vp_c hd_prdp_c hd-sb_c] -8.13668e-5 {5 2 5 2} [0 1] (51616) [1 (2) ad-hd_i-pp-vp_c ad-hd_i-modnp-vp_c hd-sb_c ad-hd_i-pp-vp_c sp-hd_c] -1.94757e-4 {5 2 5 2} [0 1] (51617) [1 (2) hd-sb_c ad-hd_i-pp-vp_c ad-hd_i-modnp-vp_c hd_advnp_c ad-hd_i-pp-vp_c] -1.79898e-4 {5 2 5 2} [0 1] -(51618) [1 (2) +pp3cna00 vmn0000 v_acc_dlr v_np-pp*_e-rfx_le] 0.00951249 {215 2 215 2} [0 1] +(51618) [1 (2) +pp3cna0 vmn0000 v_acc_dlr v_np-pp*_e-rfx_le] 0.00951249 {215 2 215 2} [0 1] (51619) [1 (2) hd-cmp_mrk_c hd-ad_i-v-pp_c hd-cmp_c sps00 hd-ad_i-cn-ap_c] -0.0399817 {11 2 11 2} [0 1] (51620) [1 (2) ad-hd_i-pp-vp_c hd-cmp_v-cp_c hd-cmp_mrk_c cs hd-ad_i-v-pp_c] -7.77719e-4 {8 3 8 3} [0 1] (51621) [1 (1) ad-hd_s_c sp-hd_c da0ms0 ncms000] -0.0344568 {96 2 96 2} [0 1] (51622) [1 (2) sb-hd_c hd-cmp_v-cp_c vmip1p0 v_pp_e-vp-inf-ssr_le] 0.0119359 {67 2 67 2} [0 1] (51623) [1 (1) sb-hd_c hd-cmp_v-cp_c vmip1p0 hd-cmp_mrk_c] 0.0119359 {67 2 67 2} [0 1] (51624) [1 (2) ^ sb-hd_c hd-cmp_v-cp_c vmip1p0 hd-cmp_mrk_c] 0.24626 {14 2 14 2} [0 1] -(51625) [1 (2) hd_xcmp-v_c +pp3cna00 vmn0000 v_acd_dlr] 0.295962 {175 3 175 3} [0 1] -(51626) [1 (1) hd_xcmp-v_c +pp3cna00 vmn0000] 0.27849 {237 3 237 3} [0 1] -(51627) [1 (2) hd_optcmp-v_c hd_xcmp-v_c +pp3cna00 vmn0000] -0.0268322 {49 2 49 2} [0 1] -(51628) [1 (0) hd_xcmp-v_c +pp3cna00] 0.27849 {237 3 237 3} [0 1] -(51629) [1 (1) hd_optcmp-v_c hd_xcmp-v_c +pp3cna00] -0.0268322 {49 2 49 2} [0 1] +(51625) [1 (2) hd_xcmp-v_c +pp3cna0 vmn0000 v_acd_dlr] 0.295962 {175 3 175 3} [0 1] +(51626) [1 (1) hd_xcmp-v_c +pp3cna0 vmn0000] 0.27849 {237 3 237 3} [0 1] +(51627) [1 (2) hd_optcmp-v_c hd_xcmp-v_c +pp3cna0 vmn0000] -0.0268322 {49 2 49 2} [0 1] +(51628) [1 (0) hd_xcmp-v_c +pp3cna0] 0.27849 {237 3 237 3} [0 1] +(51629) [1 (1) hd_optcmp-v_c hd_xcmp-v_c +pp3cna0] -0.0268322 {49 2 49 2} [0 1] (51630) [1 (2) hd-cmp_mrk_c hd-ad_i-v-pp_c hd_optcmp-v_c hd_xcmp-v_c] -0.157245 {22 5 22 5} [0 1] (51631) [1 (0) v_acc_dlr v_np-pp_e-cp-p-rfx_le] -0.0104276 {29 2 29 2} [0 1] (51632) [1 (1) vmn0000 v_acc_dlr v_np-pp_e-cp-p-rfx_le] -0.0104276 {29 2 29 2} [0 1] -(51633) [1 (2) hd_xcmp-v_c +pp3cna00 vmn0000 v_acc_dlr] -0.0174725 {62 2 62 2} [0 1] -(51634) [1 (2) hd-ad_i-v-pp_c hd_xcmp-v_c +pp3cna00 vmn0000] 0.387177 {47 2 47 2} [0 1] -(51635) [1 (1) hd-ad_i-v-pp_c hd_xcmp-v_c +pp3cna00] 0.387177 {47 2 47 2} [0 1] -(51636) [1 (2) hd-cmp_mrk_c hd-ad_i-v-pp_c hd_xcmp-v_c +pp3cna00] 0.394324 {12 2 12 2} [0 1] +(51633) [1 (2) hd_xcmp-v_c +pp3cna0 vmn0000 v_acc_dlr] -0.0174725 {62 2 62 2} [0 1] +(51634) [1 (2) hd-ad_i-v-pp_c hd_xcmp-v_c +pp3cna0 vmn0000] 0.387177 {47 2 47 2} [0 1] +(51635) [1 (1) hd-ad_i-v-pp_c hd_xcmp-v_c +pp3cna0] 0.387177 {47 2 47 2} [0 1] +(51636) [1 (2) hd-cmp_mrk_c hd-ad_i-v-pp_c hd_xcmp-v_c +pp3cna0] 0.394324 {12 2 12 2} [0 1] (51637) [1 (2) hd-cmp_v-cp_c hd-cmp_mrk_c hd-ad_i-v-pp_c hd_xcmp-v_c hd-cmp_c] -0.0112483 {15 2 15 2} [0 1] -(51638) [1 (2) hd-ad_i-v-pp_c +pp3cna00 vmn0000 v_acd_dlr] -0.00598441 {59 2 59 2} [0 1] +(51638) [1 (2) hd-ad_i-v-pp_c +pp3cna0 vmn0000 v_acd_dlr] -0.00598441 {59 2 59 2} [0 1] (51639) [1 (0) hd-cmp_c sps00 nccs000] 0.169476 {1321 7 1321 7} [0 1] (51640) [1 (1) hd-ad_i-v-pp_c hd-cmp_c sps00 nccs000] -0.117558 {571 6 571 6} [0 1] (51641) [1 (2) hd-cmp_c hd-ad_i-v-pp_c hd-cmp_c sps00 nccs000] -0.00100268 {13 2 13 2} [0 1] -(51642) [1 (1) hd-cmp_c hd-ad_i-v-pp_c +pp3cna00 hd-cmp_c] -0.00103472 {12 2 12 2} [0 1] +(51642) [1 (1) hd-cmp_c hd-ad_i-v-pp_c +pp3cna0 hd-cmp_c] -0.00103472 {12 2 12 2} [0 1] (51643) [1 (2) hd-cmp_c hd-pt_c hd_prdp_c aq0cs00] -7.43272e-4 {11 2 11 2} [0 1] (51644) [1 (1) hd-cmp_c hd-pt_c hd_prdp_c fp] -7.43272e-4 {11 2 11 2} [0 1] (51645) [1 (2) hd_optcmp-v_c hd-cmp_c hd_prdp_c hd-pt_c] -2.88343e-4 {8 2 8 2} [0 1] (51646) [1 (2) hd-ad_i-v-pp_c hd-cmp_v-cp_c hd-cmp_mrk_c cs hd_optcmp-v_c] -0.100263 {43 4 43 4} [0 1] (51647) [1 (2) hd_optsb_c ad-hd_i-pp-vp_c hd-ad_i-v-pp_c hd-cmp_v-cp_c hd-cmp_c] 0.459367 {103 15 103 15} [0 1] -(51648) [1 (2) hd_xcmp-v_c hd-ad_i-v-pp_c +pp3cna00 vmn0000] -0.0059715 {47 2 47 2} [0 1] -(51649) [1 (1) hd_xcmp-v_c hd-ad_i-v-pp_c +pp3cna00 hd-cmp_c] -0.0059715 {47 2 47 2} [0 1] -(51650) [1 (2) hd-cmp_mrk_c hd_xcmp-v_c hd-ad_i-v-pp_c +pp3cna00 hd-cmp_c] -0.0051669 {12 2 12 2} [0 1] +(51648) [1 (2) hd_xcmp-v_c hd-ad_i-v-pp_c +pp3cna0 vmn0000] -0.0059715 {47 2 47 2} [0 1] +(51649) [1 (1) hd_xcmp-v_c hd-ad_i-v-pp_c +pp3cna0 hd-cmp_c] -0.0059715 {47 2 47 2} [0 1] +(51650) [1 (2) hd-cmp_mrk_c hd_xcmp-v_c hd-ad_i-v-pp_c +pp3cna0 hd-cmp_c] -0.0051669 {12 2 12 2} [0 1] (51651) [1 (2) hd-cmp_v-cp_c hd-cmp_mrk_c hd_xcmp-v_c hd-ad_i-v-pp_c] -0.0010823 {15 2 15 2} [0 1] (51652) [1 (0) hd-cmp_mrk_c cs hd_xcmp-v_c] -0.05558 {114 7 114 7} [0 1] -(51653) [1 (2) hd-cmp_mrk_c hd_xcmp-v_c +pp3cna00 vmn0000] -0.0758844 {24 2 24 2} [0 1] -(51654) [1 (1) hd-cmp_mrk_c hd_xcmp-v_c +pp3cna00] -0.0758844 {24 2 24 2} [0 1] +(51653) [1 (2) hd-cmp_mrk_c hd_xcmp-v_c +pp3cna0 vmn0000] -0.0758844 {24 2 24 2} [0 1] +(51654) [1 (1) hd-cmp_mrk_c hd_xcmp-v_c +pp3cna0] -0.0758844 {24 2 24 2} [0 1] (51655) [1 (2) hd-cmp_v-cp_c hd-ad_i-v-pp_c sb-hd_c sp-hd_c hd-cmp_v-cp_c] -0.0032622 {10 2 10 2} [0 1] (51656) [1 (1) hd-cmp_v-cp_c hd-ad_i-v-pp_c sb-hd_c hd-cmp_c] -0.120773 {14 5 14 5} [0 1] (51657) [1 (2) ^ hd-cmp_v-cp_c hd-ad_i-v-pp_c sb-hd_c hd-cmp_c] -0.0030625 {8 2 8 2} [0 1] @@ -51724,8 +51724,8 @@ (51682) [1 (1) ad-hd_i-pp-vp_c hd-ad_i-v-pp_c hd_optsb_c hd_prdp_c] -0.00807663 {31 4 31 4} [0 1] (51683) [1 (2) ^ ad-hd_i-pp-vp_c hd-ad_i-v-pp_c hd_optsb_c hd_prdp_c] -0.00788507 {22 3 22 3} [0 1] (51684) [1 (2) hd-cmp_v-cp_c sb-hd_c hd-ad_i-v-pp_c hd-cmp_v-cp_c hd_prdp_c] -1.80752e-4 {37 3 37 3} [0 1] -(51685) [1 (2) hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna00 vmn0000] -1.95561e-4 {27 2 27 2} [0 1] -(51686) [1 (1) hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna00 hd-cmp_c] -1.95561e-4 {27 2 27 2} [0 1] +(51685) [1 (2) hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna0 vmn0000] -1.95561e-4 {27 2 27 2} [0 1] +(51686) [1 (1) hd-ad_i-v-pp_c hd-ad_i-v-pp_c +pp3cna0 hd-cmp_c] -1.95561e-4 {27 2 27 2} [0 1] (51687) [1 (2) hd_optcmp-v_c hd-ad_i-v-pp_c hd-pt_c hd_prdp_c fp] -0.00345971 {71 8 71 8} [0 1] (51688) [1 (2) hd-ad_i-v-pp_c hd-ad_i-v-pp_c sb-hd_c sp-hd_c hd-cmp_v-cp_c] -2.53427e-4 {6 3 6 3} [0 1] (51689) [1 (1) ad-hd_s_c hd-ad_i-v-pp_c hd-ad_i-v-pp_c hd-pt_c] -1.85109e-4 {10 3 10 3} [0 1] @@ -52629,7 +52629,7 @@ (52587) [1 (0) hd-ad_i-pp-xp_c hd-cmp_c a-r_crd-mt_c] -2.21657e-4 {10 2 10 2} [0 1] (52588) [1 (2) hd-cmp_c hd-ad_s-xp-xp_c a-r_crd-mt_c aq0ms0 cnj-r_crd-mb_c] -3.27967e-4 {20 2 20 2} [0 1] (52589) [1 (2) hd-cmp_v-cp_c hd-ad_i-v-pp_c hd-cmp_c sps00 hd-ad_s-xp-xp_c] -0.0249188 {33 4 33 4} [0 1] -(52590) [1 (1) hd-cmp_v-cp_c hd-ad_i-v-pp_c +pp3cna00 hd-cmp_c] -0.00811745 {70 2 70 2} [0 1] +(52590) [1 (1) hd-cmp_v-cp_c hd-ad_i-v-pp_c +pp3cna0 hd-cmp_c] -0.00811745 {70 2 70 2} [0 1] (52591) [1 (0) hd-ad_s-xp-cl_c ad-hd_s_c p-r_crd-mt_c] -9.82475e-4 {13 2 13 2} [0 1] (52592) [1 (1) p-r_crd-mt_c cnj-r_crd-mb_c fc hd-pt_c] -0.0258995 {26 2 26 2} [0 1] (52593) [1 (2) hd-cmp_v-cp_c hd-ad_i-v-pp_c p-r_crd-mt_c hd-cmp_c cnj-r_crd-mb_c] -0.00131787 {3 2 3 2} [0 1] @@ -52659,8 +52659,8 @@ (52617) [1 (0) vmii3p0 v_acc_dlr] -0.591605 {355 4 355 2} [0 1] (52618) [1 (1) hd-ad_i-v-rp_c hd_optcmp-v_c vmii3p0] 0.292109 {55 2 55 2} [0 1] (52619) [1 (2) cl-cl_crd-at_c cnj-cl_crd-mb_c hd_optsb_c ad-hd_s_c] 0.274782 {247 6 247 6} [0 1] -(52620) [1 (2) vp_cr-cc_c hd_optcmp-v_c +pp3cna00 vmn0000] -0.0199918 {109 2 109 2} [0 1] -(52621) [1 (1) vp_cr-cc_c hd_optcmp-v_c +pp3cna00] -0.0199918 {109 2 109 2} [0 1] +(52620) [1 (2) vp_cr-cc_c hd_optcmp-v_c +pp3cna0 vmn0000] -0.0199918 {109 2 109 2} [0 1] +(52621) [1 (1) vp_cr-cc_c hd_optcmp-v_c +pp3cna0] -0.0199918 {109 2 109 2} [0 1] (52622) [1 (2) vp_cr-cc_c cc c_xp_pero_le "pero"] -0.0766259 {220 2 220 2} [0 1] (52623) [1 (1) vp_cr-cc_c cc c_xp_pero_le] -0.0766259 {220 2 220 2} [0 1] (52624) [1 (2) hd-cmp_v-cp_c vp_cr-cc_c cc c_xp_pero_le] -0.0629629 {177 2 177 2} [0 1] @@ -52718,7 +52718,7 @@ (52676) [1 (2) hd-cmp_v-cp_c cl-cl_crd-mt_c ad-hd_i-pp-vp_c hd-cmp_c hd_optsb_c] -0.0229601 {20 2 20 2} [0 1] (52677) [1 (2) cl-cl_crd-mt_c ad-hd_i-pp-vp_c hd-cmp_c sps00 hd_optsp_c] -0.00204706 {21 3 21 3} [0 1] (52678) [1 (2) vp_cr-cc_c hd-pt_c fc pt_-_comma_le] -0.0483632 {201 2 201 2} [0 1] -(52679) [1 (0) hd-pt_c +pp3cna00 fc] 0.0330508 {237 2 237 2} [0 1] +(52679) [1 (0) hd-pt_c +pp3cna0 fc] 0.0330508 {237 2 237 2} [0 1] (52680) [1 (2) sp-hd_c ncfp000 n_-_m_le "fuerzas"] -0.0460621 {401 3 401 3} [0 1] (52681) [1 (1) sp-hd_c ncfp000 n_-_m_le] -0.343726 {637 9 637 9} [0 1] (52682) [1 (2) hd-cmp_c vsii3p0 v_ap_ser_le "eran"] 0.194798 {271 5 271 5} [0 1] @@ -64940,7 +64940,7 @@ (64898) [1 (1) vmn0000 v_ppa*-vp_inf-oc_dlr v_ppa*-cp_p_le] -0.0221795 {159 2 159 2} [0 1] (64899) [1 (0) vmn0000 v_ppa*-vp_inf-oc_dlr] -0.0304504 {190 4 190 4} [0 1] (64900) [1 (1) hd_optcmp-v_c hd-ad_i-v-modnp_c hd-pt_c hd_advnp_c] -0.00407078 {38 3 38 3} [0 1] -(64901) [1 (2) +pp3cna00 vmn0000 v_acd_dlr v_np-ppa*_le] -0.00628388 {88 2 88 2} [0 1] +(64901) [1 (2) +pp3cna0 vmn0000 v_acd_dlr v_np-ppa*_le] -0.00628388 {88 2 88 2} [0 1] (64902) [1 (1) hd_nbar_c ad-hd_s_c rn hd-pt_c] -0.146692 {72 2 72 2} [0 1] (64903) [1 (1) cnj-vp_crd-mb_c hd_optcmp-v_c hd_xcmp-v_c] -0.00271657 {44 4 44 4} [0 1] (64904) [1 (1) sb-hd_c hd-cmp_c vmip3s0 ad-hd_s_c] -0.253269 {76 3 76 3} [0 1] From 4ea3fc654df6623de73f44e3170274f13764dcd3 Mon Sep 17 00:00:00 2001 From: olzama Date: Fri, 26 May 2023 15:38:40 +0200 Subject: [PATCH 04/18] code for fusing tags with just a couple examples in the map. Also an attempt to use a usermap but will likely use manual mapping such as in override_freeling.py instead --- util/override_freeling.py | 7 +++++-- util/srg_freeling2yy.py | 8 +++++--- util/tokenize_and_tag.py | 9 ++++++--- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/util/override_freeling.py b/util/override_freeling.py index 1f6a1aa..ea6ec5a 100644 --- a/util/override_freeling.py +++ b/util/override_freeling.py @@ -6,9 +6,12 @@ REPLACE_LEMMA_AND_TAG = {'ladra': {'lemma': 'ladrar', 'tag':'VMIP3S0'}, 'dió': {'lemma': 'dar', 'tag': 'VMIS3S0'}, 'dios': {'lemma': 'dios', 'tag': 'NCMS000'}, 'adiós': {'lemma': 'adiós', 'tag': 'NCMS000'}, - 'señor': {'lemma': 'señor', 'tag': 'NCMS000'}} + 'señor': {'lemma': 'señor', 'tag': 'NCMS000'}, + 'quería': {'lemma': 'querer', 'tag': 'VMII4S0'} } DO_NOT_OVERRIDE = {'uf', 'je', 'ja', 'oh', 'todo_lo_contrario', 'ojalá'} -STEM_EQUALS_TAG = {'Z', 'W'} \ No newline at end of file +STEM_EQUALS_TAG = {'Z', 'W'} + +FUSE = {'VMII1S0" "+VMII3S0': 'VMII4S0', 'VSSP1S0" "+VSSP3S0': 'VSSP4S0'} \ No newline at end of file diff --git a/util/srg_freeling2yy.py b/util/srg_freeling2yy.py index fa3fdaf..b51fbb9 100755 --- a/util/srg_freeling2yy.py +++ b/util/srg_freeling2yy.py @@ -6,7 +6,7 @@ ################################################################################ import sys -from override_freeling import TAGS, DO_NOT_OVERRIDE, STEM_EQUALS_TAG, REPLACE_LEMMA_AND_TAG +from override_freeling import TAGS, DO_NOT_OVERRIDE, STEM_EQUALS_TAG, REPLACE_LEMMA_AND_TAG, FUSE ''' In the old version of the grammar, some of the Freeling tags were overridden. @@ -20,6 +20,8 @@ def override_tag(selected, word, lemma): return {'tag': TAGS[selected['tag']], 'prob': -1 } if word in REPLACE_LEMMA_AND_TAG: return { 'tag': REPLACE_LEMMA_AND_TAG[word]['tag'], 'prob': -1 } + if selected['tag'] in FUSE: + return {'tag': FUSE[selected['tag']], 'prob': -1 } return selected #raise Exception("selected tag not in tag list") @@ -33,8 +35,8 @@ def override_lemma(lemma, tag): def convert_sentences(sentences): yy_sentences = [] for i, sent in enumerate(sentences): - #if i > 76: - # print("stop") + if i == 8: + print("stop") output = "" _num = 0 # lattice ID _from = 0 # lattice from diff --git a/util/tokenize_and_tag.py b/util/tokenize_and_tag.py index 5b803c5..9690758 100755 --- a/util/tokenize_and_tag.py +++ b/util/tokenize_and_tag.py @@ -14,6 +14,7 @@ def __init__(self): # Location of FreeLing configuration files. self.DATA = os.environ["FREELINGDIR"]+"/share/freeling/" + self.CUSTOM_DATA = "/home/olga/delphin/SRG/grammar/srg/util/freeling_api/srg-freeling-debug.dat" # Init locales pyfreeling_api.util_init_locale("default") # create language detector. Used just to show it. Results are printed @@ -22,7 +23,7 @@ def __init__(self): # create options set for maco analyzer. Default values are Ok, except for data files. self.LANG="es" self.op= pyfreeling_api.maco_options(self.LANG) - self.op.set_data_files( "", + self.op.set_data_files( self.CUSTOM_DATA, self.DATA + "common/punct.dat", self.DATA + self.LANG + "/dicc.src", self.DATA + self.LANG + "/afixos.dat", @@ -38,7 +39,7 @@ def __init__(self): self.mf=pyfreeling_api.maco(self.op) # activate mmorpho odules to be used in next call - self.mf.set_active_options(umap=False, num=True, pun=True, dat=False, # select which among created + self.mf.set_active_options(umap=True, num=True, pun=True, dat=False, # select which among created dic=True, aff=True, comp=False, rtk=True, # submodules are to be used. mw=True, ner=True, qt=False, prb=True ) # default: all created submodules are used @@ -56,7 +57,7 @@ def tokenize_and_tag(self, sentence_list): lin = lin + ' .' fake_final_dot = True output.append({'sentence': lin, 'tokens':[]}) - if "creerlo" in lin: + if "enhorabuena" in lin: print("debug") # With the basic NER Freeling module, may need this, as it will assume that # all uppercased items are all named entities. @@ -103,4 +104,6 @@ def get_selected_tags(self, w): tags.append(({'tag': tk.get_tag(), 'prob': a.get_prob()})) else: tags.append(({'tag': a.get_tag(), 'prob': a.get_prob()})) + #else: + # print("Non-selected analysis: {}".format(a.get_tag())) return tags From 8d2885cbda878c28089dd0f6b0a71fd2a45062e8 Mon Sep 17 00:00:00 2001 From: olzama Date: Fri, 26 May 2023 16:21:16 +0200 Subject: [PATCH 05/18] Got rid of fake final dot because this can be handled by setting the last parameter of the splitter to True --- util/parse_sppp_dat.py | 0 util/tokenize_and_tag.py | 13 +++---------- 2 files changed, 3 insertions(+), 10 deletions(-) create mode 100644 util/parse_sppp_dat.py diff --git a/util/parse_sppp_dat.py b/util/parse_sppp_dat.py new file mode 100644 index 0000000..e69de29 diff --git a/util/tokenize_and_tag.py b/util/tokenize_and_tag.py index 9690758..917f887 100755 --- a/util/tokenize_and_tag.py +++ b/util/tokenize_and_tag.py @@ -51,14 +51,9 @@ def tokenize_and_tag(self, sentence_list): sid=self.sp.open_session() # process input text for i,lin in enumerate(sentence_list): - fake_final_dot = False - if (not lin[-1] in string.punctuation) or lin.endswith('...'): - # assume a dot at the end since otherwise Freeling sometimes can't handle the sentence - lin = lin + ' .' - fake_final_dot = True output.append({'sentence': lin, 'tokens':[]}) - if "enhorabuena" in lin: - print("debug") + #if "enhorabuena" in lin: + # print("debug") # With the basic NER Freeling module, may need this, as it will assume that # all uppercased items are all named entities. #s = self.tk.tokenize(lin.lower().capitalize()) if lin.isupper() else self.tk.tokenize(lin) @@ -73,8 +68,6 @@ def tokenize_and_tag(self, sentence_list): else: s = s[0] ws = s.get_words() - if fake_final_dot: - ws = ws[:-1] for j,w in enumerate(ws) : tags_probs = self.get_selected_tags(w) tag = '" "+'.join([tp['tag'] for tp in tags_probs]) @@ -89,7 +82,7 @@ def tokenize_and_tag(self, sentence_list): def freeling_analyze(self, lin, sid): s = self.tk.tokenize(lin) - s = self.sp.split(sid, s, False) + s = self.sp.split(sid, s, True) s = self.mf.analyze(s) s = self.tg.analyze(s) return s From f171bf67172d07b26996465e784027d51d2e9fa8 Mon Sep 17 00:00:00 2001 From: olzama Date: Fri, 26 May 2023 17:09:45 +0200 Subject: [PATCH 06/18] read override rules from sppp.dat into fuse dictionary and use that instead of override_freeling.py --- util/parse_sppp_dat.py | 35 +++++++++++++++++++++++++++++++++++ util/populate_tokens.py | 9 ++++++--- util/srg_freeling2yy.py | 17 ++++++++++------- 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/util/parse_sppp_dat.py b/util/parse_sppp_dat.py index e69de29..59a7f4e 100644 --- a/util/parse_sppp_dat.py +++ b/util/parse_sppp_dat.py @@ -0,0 +1,35 @@ + +def parse_sppp(filepath): + # Dictionaries to return: + fuse = {} + replace = {} + no_disambiguate = {} + output = {} + with open(filepath, 'r') as f: + lines = f.readlines() + for i,ln in enumerate(lines): + if not ln.startswith('#'): + if ln.strip() == '': + pass + elif ln.strip() == '': + pass + elif ln.strip() == '': + end_fusion = find_concluding_line(lines, i, '') + fuse = parse_fusion(lines[i+1:end_fusion]) + elif ln.strip() == '': + pass + return fuse, replace, no_disambiguate, output + +def find_concluding_line(lines, start, opening): + closing = ' AQ0MS0 (interjection to a default adjective form; will then undergo an adjective-to-interjection rule...) ''' -def override_tag(selected, word, lemma): +def override_tag(selected, word, lemma, override_dicts): if lemma.isnumeric(): return {'tag': 'Z', 'prob': -1} if selected['tag'] in TAGS and word not in DO_NOT_OVERRIDE and word not in REPLACE_LEMMA_AND_TAG: return {'tag': TAGS[selected['tag']], 'prob': -1 } if word in REPLACE_LEMMA_AND_TAG: return { 'tag': REPLACE_LEMMA_AND_TAG[word]['tag'], 'prob': -1 } - if selected['tag'] in FUSE: - return {'tag': FUSE[selected['tag']], 'prob': -1 } + if selected['tag'] in override_dicts['fuse']: + return {'tag': override_dicts['fuse'][selected['tag']], 'prob': -1 } return selected #raise Exception("selected tag not in tag list") @@ -32,7 +33,7 @@ def override_lemma(lemma, tag): return REPLACE_LEMMA_AND_TAG[lemma]['lemma'] return lemma -def convert_sentences(sentences): +def convert_sentences(sentences, override_dicts): yy_sentences = [] for i, sent in enumerate(sentences): if i == 8: @@ -48,7 +49,7 @@ def convert_sentences(sentences): for j,tok in enumerate(sent['tokens']): surface = tok['form'] tag_prob = {'tag': tok['selected-tag'], 'prob':tok['selected-prob']} - pos_conf = override_tag(tag_prob, surface.lower(), tok['lemma']) + pos_conf = override_tag(tag_prob, surface.lower(), tok['lemma'], override_dicts) pos = pos_conf['tag'] conf = pos_conf['prob'] lemma = override_lemma(tok['lemma'], pos) @@ -76,6 +77,8 @@ def convert_sentences(sentences): return yy_sentences if __name__ == "__main__": + fuse, replace, no_disambiguate, output = parse_sppp_dat.parse_sppp('./freeling_api/srg-freeling.dat') + override_dicts = {'fuse': fuse, 'replace': replace, 'no_disambiguate': no_disambiguate, 'output': output} # read FreeLing output from file or standard input; sentences are separated by one # or more blank lines if len(sys.argv) < 2 or sys.argv[1] == "-": @@ -86,12 +89,12 @@ def convert_sentences(sentences): for ln in f: if ln.strip() == "": # inter-sentence blank line? if sent != "": - print(convert_sentences([sent])[0]) + print(convert_sentences([sent], override_dicts)[0]) sent = "" else: sent += ln if sent != "": - print(convert_sentences([sent])[0]) + print(convert_sentences([sent], override_dicts)[0]) if f is not sys.stdin: f.close() From 9cfee78012cfce88f12e3b35f34e7767e3808108 Mon Sep 17 00:00:00 2001 From: olzama Date: Fri, 26 May 2023 18:04:51 +0200 Subject: [PATCH 07/18] Implemented the ReplaceAll part of the old sppp.dat file in the freeling-SRG interface. Is not fully tested on the treebanks yet. --- util/override_freeling.py | 3 +-- util/parse_sppp_dat.py | 18 ++++++++++++++++-- util/srg_freeling2yy.py | 27 +++++++++++++++++---------- util/tokenize_and_tag.py | 4 ++-- 4 files changed, 36 insertions(+), 16 deletions(-) diff --git a/util/override_freeling.py b/util/override_freeling.py index ea6ec5a..b3b9479 100644 --- a/util/override_freeling.py +++ b/util/override_freeling.py @@ -7,11 +7,10 @@ 'dios': {'lemma': 'dios', 'tag': 'NCMS000'}, 'adiós': {'lemma': 'adiós', 'tag': 'NCMS000'}, 'señor': {'lemma': 'señor', 'tag': 'NCMS000'}, - 'quería': {'lemma': 'querer', 'tag': 'VMII4S0'} } + } DO_NOT_OVERRIDE = {'uf', 'je', 'ja', 'oh', 'todo_lo_contrario', 'ojalá'} STEM_EQUALS_TAG = {'Z', 'W'} -FUSE = {'VMII1S0" "+VMII3S0': 'VMII4S0', 'VSSP1S0" "+VSSP3S0': 'VSSP4S0'} \ No newline at end of file diff --git a/util/parse_sppp_dat.py b/util/parse_sppp_dat.py index 59a7f4e..e186a60 100644 --- a/util/parse_sppp_dat.py +++ b/util/parse_sppp_dat.py @@ -12,7 +12,8 @@ def parse_sppp(filepath): if ln.strip() == '': pass elif ln.strip() == '': - pass + end_replace = find_concluding_line(lines, i, '') + replace = parse_replace(lines[i+1:end_replace]) elif ln.strip() == '': end_fusion = find_concluding_line(lines, i, '') fuse = parse_fusion(lines[i+1:end_fusion]) @@ -32,4 +33,17 @@ def parse_fusion(lines): for ln in lines: tag1, tag2, arrow, fused_tag = ln.strip().split() fuse[tag1 + '" "+' + tag2] = fused_tag - return fuse \ No newline at end of file + return fuse + +def parse_replace(lines): + replace = {} + for ln in lines: + if ln.strip(): + # the line is of the form: ... + # split the line on the first space: + form, lemma_tag_pairs = ln.strip().split(' ', 1) + # split the lemma-tag pairs on spaces: + lemma_tag_pairs = lemma_tag_pairs.split() + # put the odd items in lemma_tag_pairs list into the 'tag' key of replace[form] and the even items into the 'lemma' key: + replace[form] = {'tag': lemma_tag_pairs[1::2], 'lemma': lemma_tag_pairs[::2]} + return replace \ No newline at end of file diff --git a/util/srg_freeling2yy.py b/util/srg_freeling2yy.py index 3c2d632..2b48836 100755 --- a/util/srg_freeling2yy.py +++ b/util/srg_freeling2yy.py @@ -6,7 +6,7 @@ ################################################################################ import sys -from override_freeling import TAGS, DO_NOT_OVERRIDE, STEM_EQUALS_TAG, REPLACE_LEMMA_AND_TAG, FUSE +from override_freeling import TAGS, DO_NOT_OVERRIDE, STEM_EQUALS_TAG, REPLACE_LEMMA_AND_TAG import parse_sppp_dat ''' @@ -16,19 +16,24 @@ ''' def override_tag(selected, word, lemma, override_dicts): if lemma.isnumeric(): - return {'tag': 'Z', 'prob': -1} + return {'tags': ['Z'], 'prob': -1} if selected['tag'] in TAGS and word not in DO_NOT_OVERRIDE and word not in REPLACE_LEMMA_AND_TAG: - return {'tag': TAGS[selected['tag']], 'prob': -1 } + return {'tags': [TAGS[selected['tag']]], 'prob': -1 } if word in REPLACE_LEMMA_AND_TAG: - return { 'tag': REPLACE_LEMMA_AND_TAG[word]['tag'], 'prob': -1 } + return { 'tags': [REPLACE_LEMMA_AND_TAG[word]['tag']], 'prob': -1 } if selected['tag'] in override_dicts['fuse']: - return {'tag': override_dicts['fuse'][selected['tag']], 'prob': -1 } - return selected + return {'tags': [override_dicts['fuse'][selected['tag']]], 'prob': -1 } + if lemma in override_dicts['replace']: + return {'tags': override_dicts['replace'][lemma]['tag'], 'prob': -1 } + return {'tags': [selected['tag']], 'prob': selected['prob']} #raise Exception("selected tag not in tag list") -def override_lemma(lemma, tag): +def override_lemma(lemma, tag, override_dicts): if tag in STEM_EQUALS_TAG: return tag + if lemma in override_dicts['replace']: + # there may be more than one lemma-tag replacement pair; I have not yet figured out what to do with that + return override_dicts['replace'][lemma]['lemma'][0] elif lemma in REPLACE_LEMMA_AND_TAG: return REPLACE_LEMMA_AND_TAG[lemma]['lemma'] return lemma @@ -36,7 +41,7 @@ def override_lemma(lemma, tag): def convert_sentences(sentences, override_dicts): yy_sentences = [] for i, sent in enumerate(sentences): - if i == 8: + if i == 149: print("stop") output = "" _num = 0 # lattice ID @@ -50,9 +55,11 @@ def convert_sentences(sentences, override_dicts): surface = tok['form'] tag_prob = {'tag': tok['selected-tag'], 'prob':tok['selected-prob']} pos_conf = override_tag(tag_prob, surface.lower(), tok['lemma'], override_dicts) - pos = pos_conf['tag'] + if len(pos_conf['tags']) > 1: + print("Warning: more than one tag for token: {}".format(tok['form'])) + pos = pos_conf['tags'][0] conf = pos_conf['prob'] - lemma = override_lemma(tok['lemma'], pos) + lemma = override_lemma(tok['lemma'], pos, override_dicts) _num += 1 output += '(' output += str(_num) diff --git a/util/tokenize_and_tag.py b/util/tokenize_and_tag.py index 917f887..e3ce4bc 100755 --- a/util/tokenize_and_tag.py +++ b/util/tokenize_and_tag.py @@ -52,8 +52,8 @@ def tokenize_and_tag(self, sentence_list): # process input text for i,lin in enumerate(sentence_list): output.append({'sentence': lin, 'tokens':[]}) - #if "enhorabuena" in lin: - # print("debug") + if "aburrido" in lin: + print("debug") # With the basic NER Freeling module, may need this, as it will assume that # all uppercased items are all named entities. #s = self.tk.tokenize(lin.lower().capitalize()) if lin.isupper() else self.tk.tokenize(lin) From 521b7c479c7f8d974f3098a7aea3983ce5b10ef5 Mon Sep 17 00:00:00 2001 From: olzama Date: Mon, 29 May 2023 11:24:03 +0200 Subject: [PATCH 08/18] added a lexical entry for the double hyphen --; I don't know how this was handled before and why there wasn't an entry; maybe it should instead be mapped to some other orthography? --- letypes.tdl | 2 -- lexicon.tdl | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/letypes.tdl b/letypes.tdl index f772619..44ea9de 100644 --- a/letypes.tdl +++ b/letypes.tdl @@ -8556,7 +8556,6 @@ pt_-_lhyphn_lex := basic-punct-lex & [ SYNSEM punct_synsem & [ LOCAL.CAT.HEAD.PUNCT-MK lhyphen_punct ] ]. - pt_-_quest-op_lex := basic-punct-lex & [ SYNSEM punct_synsem & [ LOCAL.CAT.HEAD.PUNCT-MK ques_op_punct ] ]. @@ -8590,7 +8589,6 @@ pt_-_fr-op_lex := basic-punct-lex & [ LOCAL.CAT.HEAD.PUNCT-MK fra_punct ] ]. - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; --- Lexical types diff --git a/lexicon.tdl b/lexicon.tdl index 9f28ab1..37b47e3 100644 --- a/lexicon.tdl +++ b/lexicon.tdl @@ -125287,9 +125287,14 @@ hutu_n := n_-_c_native_le & hyphen_pt := pt_-_hyphn_native_le & [ STEM < "-" > ]. +doublehyphen_pt := pt_-_hyphn_native_le & + [ STEM < "--" > ]. + lhyphen_pt := pt_-_lhyphn_native_le & [ STEM < "-" > ]. +doubnlelhyphen_pt := pt_-_lhyphn_native_le & + [ STEM < "--" > ]. hypocalcificar_v-np_rfx := v_np_rfx_native_le & [ STEM < "hypocalcificar" >, From 8d23c89f490c9d3b1806eaaf6761c4408e2d865b Mon Sep 17 00:00:00 2001 From: olzama Date: Mon, 29 May 2023 11:37:59 +0200 Subject: [PATCH 09/18] added a lexical entry for the % sign; previously, it was handled differently though (non-compositionally?) Freeling can be configured to return quantity expressions, but they don't seem compositional. --- lexicon.tdl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lexicon.tdl b/lexicon.tdl index 37b47e3..b87e247 100644 --- a/lexicon.tdl +++ b/lexicon.tdl @@ -186070,6 +186070,11 @@ porche_n := n_-_c_native_le & por_ciento_av-i-vm := av_-_i-vm_native_le & [ STEM < "por_ciento" >, SYNSEM.LKEYS.KEYREL.PRED "_por_ciento_x_rel" ]. + +por_ciento_sign_av-i-vm := av_-_i-vm_native_le & + [ STEM < "%" >, + SYNSEM.LKEYS.KEYREL.PRED "_por_ciento_x_rel" ]. + porcino_aj-i-nprd := aj_-_i-nprd_native_le & [ STEM < "porcino" >, From c4695045baafa7ca145ceaf77da9832c1c2043b4 Mon Sep 17 00:00:00 2001 From: olzama Date: Mon, 29 May 2023 12:29:52 +0200 Subject: [PATCH 10/18] Removed the escape character from the single quote lexical entry, because it would seem it is not expected there. --- lexicon.tdl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lexicon.tdl b/lexicon.tdl index b87e247..6e09d09 100644 --- a/lexicon.tdl +++ b/lexicon.tdl @@ -196637,7 +196637,7 @@ quotes_pt := pt_-_quots_le & [ STEM < "\"" > ]. quotes-sngl_pt := pt_-_quots_le & - [ STEM < "\'" > ]. + [ STEM < "'" > ]. rabadilla_n := n_-_c_native_le & [ STEM < "rabadilla" >, From 56a46583997fda7fda0eff808543b63938da3aae Mon Sep 17 00:00:00 2001 From: olzama Date: Mon, 29 May 2023 12:36:18 +0200 Subject: [PATCH 11/18] Adding a lexical entry for the slash, but for now adding it as a hyphen, assuming it sometimes means things like OR. will probably need to be revisited. --- lexicon.tdl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lexicon.tdl b/lexicon.tdl index 6e09d09..8f26d4f 100644 --- a/lexicon.tdl +++ b/lexicon.tdl @@ -125287,6 +125287,9 @@ hutu_n := n_-_c_native_le & hyphen_pt := pt_-_hyphn_native_le & [ STEM < "-" > ]. +slash_pt := pt_-_hyphn_native_le & + [ STEM < "/" > ]. + doublehyphen_pt := pt_-_hyphn_native_le & [ STEM < "--" > ]. From 786f819c2a3648879927d8fcef55a46bdb410b43 Mon Sep 17 00:00:00 2001 From: olzama Date: Mon, 29 May 2023 12:39:55 +0200 Subject: [PATCH 12/18] added comments --- lexicon.tdl | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lexicon.tdl b/lexicon.tdl index 8f26d4f..c859736 100644 --- a/lexicon.tdl +++ b/lexicon.tdl @@ -125286,16 +125286,24 @@ hutu_n := n_-_c_native_le & hyphen_pt := pt_-_hyphn_native_le & [ STEM < "-" > ]. - + +;[olzama-dev 56a4658] Adding a lexical entry for the slash, but for now adding it as a hyphen, +; assuming it sometimes means things like OR. will probably need to be revisited. slash_pt := pt_-_hyphn_native_le & [ STEM < "/" > ]. +; OZ 2023-05-29: Adding a double hyphen as a simple hyphen for now; +; may need to be revisited. doublehyphen_pt := pt_-_hyphn_native_le & [ STEM < "--" > ]. lhyphen_pt := pt_-_lhyphn_native_le & [ STEM < "-" > ]. +; OZ 2023-05-29: Adding a double hyphen as a simple hyphen for now; +; may need to be revisited. +; In reality, this occurs as the opening punctuation in dialog: +; "-- No." doubnlelhyphen_pt := pt_-_lhyphn_native_le & [ STEM < "--" > ]. @@ -186073,7 +186081,11 @@ porche_n := n_-_c_native_le & por_ciento_av-i-vm := av_-_i-vm_native_le & [ STEM < "por_ciento" >, SYNSEM.LKEYS.KEYREL.PRED "_por_ciento_x_rel" ]. - + +; OZ 2023-05-29 +; Adding the percentage %, which was previously handled by Freeling somehow +; (possibly, not compositionally?) +; This may beed to be revisited. por_ciento_sign_av-i-vm := av_-_i-vm_native_le & [ STEM < "%" >, SYNSEM.LKEYS.KEYREL.PRED "_por_ciento_x_rel" ]. From 458f7f42760e0ecd3746f602afc14209a3a62185 Mon Sep 17 00:00:00 2001 From: olzama Date: Mon, 29 May 2023 12:53:17 +0200 Subject: [PATCH 13/18] adding a data file which will be read in by the SRG-Freeling interface and used to override some of the Freeling output. --- util/freeling_api/srg-freeling.dat | 174 +++++++++++++++++++++++++++++ util/srg_freeling2yy.py | 7 ++ 2 files changed, 181 insertions(+) create mode 100644 util/freeling_api/srg-freeling.dat diff --git a/util/freeling_api/srg-freeling.dat b/util/freeling_api/srg-freeling.dat new file mode 100644 index 0000000..24c6a3d --- /dev/null +++ b/util/freeling_api/srg-freeling.dat @@ -0,0 +1,174 @@ +## List of forms (or tags, if uppercased) for which PoS tagger output will +## be ignored (no analysis discarded) when found at the specified @position + +NP00000 @begin +que @any +hasta @any +tanto @any +como @any +fui @any +fuiste @any +fue @any +fuimos @any +fuisteis @any +fueron @any + + +## List of words for which the list of output analysis given +## by FreeLing must be ignored and replaced by the specified list. +## One entry per line, format: +## form lemma1 tag1 lemma2 tag2 ... + +quería querer VMII4S0 +un un Z +uno uno Z +una una Z +acá acá NC00000 +acullá acullá NC00000 +ahí ahí NC00000 +ahora ahora NC00000 +allá allá NC00000 +allende allende NC00000 +allí allí NC00000 +anoche anoche NC00000 +antaño antaño NC00000 +anteanoche anteanoche NC00000 +anteanteayer anteanteayer NC00000 +anteayer anteayer NC00000 +antes_de_anoche antes_de_anoche NC00000 +antes_de_ayer antes_de_ayer NC00000 +aquende aquende NC00000 +aquí aquí NC00000 +así así NC00000 así SP +ayer ayer NC00000 +ayer_noche ayer_noche NC00000 +entonces entonces NC00000 +hogaño hogaño NC00000 +hoy hoy NC00000 +ibídem ibídem NC00000 +mañana mañana NC00000 +pasado_mañana pasado_mañana NC00000 +ni ni CC ni RG +demás demás PI0CC000 +vez vez NC00000 +veces vez NC00000 +antes antes SP antes RG +después después SP después RG +más más AQ0CS00 más SP más RG +menos menos AQ0CS00 menos SP menos RG +múltiples múltiple DI0CP0 +cierta cierto AQ0FS00 cierto DI0FS0 +ciertas cierto AQ0FP00 cierto DI0FP0 +cierto cierto AQ0MS00 cierto DI0MS0 +ciertos cierto AQ0MP00 cierto DI0MP0 +determinada determinar VMP00SF determinado DI0FS0 +determinadas determinar VMP00PF determinado DI0FP0 +determinado determinar VMP00SM determinado DI0MS0 +determinados determinar VMP00PM determinado DI0MP0 +diferente diferente AQ0CS00 diferente DI0CS0 +diferentes diferente AQ0CP00 diferente DI0CP0 +distinta diferente AQ0FS00 diferente DI0FS0 +distintas distinto AQ0FP00 diferente DI0FP0 +distinta distinto AQ0FS00 distinto DI0FS0 +distintas distinto AQ0FP00 distinto DI0FP0 +distinto distinto AQ0MS00 distinto DI0MS0 +distintos distinto AQ0MP00 distinto DI0MP0 +diversa diverso AQ0FS00 diverso DI0FS0 +diversas diverso AQ0FP00 diverso DI0FP0 +diverso diverso AQ0MS00 diverso DI0MS0 +diversos diverso AQ0MP00 diverso DI0MP0 +escasa escaso AQ0FS00 escaso DI0FS0 +escasas escaso AQ0FP00 escaso DI0FP0 +escaso escaso AQ0MS00 escaso DI0MS0 +escasos escaso AQ0MP00 escaso DI0MP0 +numerosa numeroso AQ0FS00 numeroso DI0FS0 +numerosas numeroso AQ0FP00 numeroso DI0FP0 +numeroso numeroso AQ0MS00 numeroso DI0MS0 +numerosos numeroso AQ0MP00 numeroso DI0MP0 +rara raro AQ0FS00 raro DI0FS0 +raras raro AQ0FP00 raro DI0FP0 +raro raro AQ0MS00 raro DI0MS0 +raros raro AQ0MP00 raro DI0MP0 +cientos ciento Zd +millares millar Zd +miles mil Zd +mejor mejor AQ0CS00 +off-line off-line AQ0CN00 +on-line on-line AQ0CN00 +peor peor AQ0CS00 + + + +## List of tag fusions to perform. +## When a word has all tags at the left hand side (with the same lemma), +## they are replaced by the tag at the right hand side (keeping the same lemma). +## Format: +## tag1 tag2 ... tagn => tag + +VMII1S0 VMII3S0 => VMII4S0 +VMII3S0 VMII1S0 => VMII4S0 +VMIC1S0 VMIC3S0 => VMIC4S0 +VMIC3S0 VMIC1S0 => VMIC4S0 +VMSP1S0 VMSP3S0 => VMSP4S0 +VMSP3S0 VMSP1S0 => VMSP4S0 +VMSI1S0 VMSI3S0 => VMSI4S0 +VMSI3S0 VMSI1S0 => VMSI4S0 +VMSF1S0 VMSF3S0 => VMSF4S0 +VMSF3S0 VMSF1S0 => VMSF4S0 +VAII1S0 VAII3S0 => VAII4S0 +VAII3S0 VAII1S0 => VAII4S0 +VAIC1S0 VAIC3S0 => VAIC4S0 +VAIC3S0 VAIC1S0 => VAIC4S0 +VASP1S0 VASP3S0 => VASP4S0 +VASP3S0 VASP1S0 => VASP4S0 +VASI1S0 VASI3S0 => VASI4S0 +VASI3S0 VASI1S0 => VASI4S0 +VASF1S0 VASF3S0 => VASF4S0 +VASF3S0 VASF1S0 => VASF4S0 +VSII1S0 VSII3S0 => VSII4S0 +VSII3S0 VSII1S0 => VSII4S0 +VSIC1S0 VSIC3S0 => VSIC4S0 +VSIC3S0 VSIC1S0 => VSIC4S0 +VSSP1S0 VSSP3S0 => VSSP4S0 +VSSP3S0 VSSP1S0 => VSSP4S0 +VSSI1S0 VSSI3S0 => VSSI4S0 +VSSI3S0 VSSI1S0 => VSSI4S0 +VSSF1S0 VSSF3S0 => VSSF4S0 +VSSF3S0 VSSF1S0 => VSSF4S0 +VMIP1P0 VMIS1P0 => VMIB1P0 +VMIS1P0 VMIP1P0 => VMIB1P0 +PP3CNA0 PP3MSA0 => PP3MSA0 +PP3MSA0 PP3CNA0 => PP3MSA0 +NCMS000 NCFS000 => NCCS000 +NCFS000 NCMS000 => NCCS000 +NCFS000 NCFS000 => NCCS000 +NCMP000 NCFP000 => NCCP000 +NCFP000 NCMP000 => NCCP000 +P00CN00 P03CN00 => P03CN00 +P03CN00 P00CN00 => P03CN00 + + +## Rearrangements to SPPP output fields +## Rule form is: +## form lemma tag => stem rule_id form +## +## On the left hand side: +## "form", "lemma", and "tag" are regular expressions. +## "*" may be used to mean "anything". +## For "form" and "lemma" complete match will be checked. +## For "tag" prefix match will be used. +## Symbol "!" preceding the regexp negates it. +## +## On the right hand side: +## "stem" may be "F" (form), "L" (lemma), "T" (tag), or any lowercase literal. +## "rule_id" may be "F" (form), "L" (lemma), or "T" (tag). +## "form" may be any combination of "F", "L", and "T". form/lemma/tag will be +## concatenated in the given order, separated by "#". +## +## Rules are applied in order, until a match is found, thus, a last default +## rule "* * *" is needed. + +* * !(Z|W|NP|AO) => L T F ## stem=lema per tots excepte numeros, dates, NPs i AOs. +(un|una|uno) * Z => F T FL ## lema="un/o/a" per "un/o/a" amb tag Z (tenien lema="1") +* * * => T T FL ## stem=tag per la resta (numeros!="un/o/a", dates, NPs, AOs) + diff --git a/util/srg_freeling2yy.py b/util/srg_freeling2yy.py index 2b48836..ca90cb3 100755 --- a/util/srg_freeling2yy.py +++ b/util/srg_freeling2yy.py @@ -21,6 +21,13 @@ def override_tag(selected, word, lemma, override_dicts): return {'tags': [TAGS[selected['tag']]], 'prob': -1 } if word in REPLACE_LEMMA_AND_TAG: return { 'tags': [REPLACE_LEMMA_AND_TAG[word]['tag']], 'prob': -1 } + # Sometimes Freeling returns a sequence of two identical tags; + # I am not sure what this means for the moment. + # We will assume for now a single tag is sufficient. + if '+' in selected['tag']: + tag1, tag2 = selected['tag'].split('+') + if tag1.strip() == tag2.strip(): + return {'tags': [tag1.strip()], 'prob': -1 } if selected['tag'] in override_dicts['fuse']: return {'tags': [override_dicts['fuse'][selected['tag']]], 'prob': -1 } if lemma in override_dicts['replace']: From 0ddde0f4b0dd4138d7a84325292afd67757c84a9 Mon Sep 17 00:00:00 2001 From: olzama Date: Mon, 29 May 2023 13:05:57 +0200 Subject: [PATCH 14/18] Looks like I had deleted some zeroes 0 which should have been kept in new Freeling tags, e.g. AQSFP00 --- inflr.tdl | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/inflr.tdl b/inflr.tdl index 9cbb12b..15713de 100644 --- a/inflr.tdl +++ b/inflr.tdl @@ -1110,13 +1110,13 @@ a_ilr. ; -- comparatives ; e.g. mejor -aqccs0 := -%suffix (aqccs0 aqccs0) +aqccs00 := +%suffix (aqccs00 aqccs00) a_sg_ilr. ; e.g. mejores -aqccp0 := -%suffix (aqccp0 aqccp0) +aqccp00 := +%suffix (aqccp00 aqccp00) a_pl_ilr. ; -- superlatives @@ -1136,33 +1136,33 @@ aqsfs00 := a_fem-sg_ilr. ; e.g. dificilísimas -aqsfp0 := -%suffix (aqsfp0 aqsfp0) +aqsfp00 := +%suffix (aqsfp00 aqsfp00) a_fem-pl_ilr. ; -- diminutives ; e.g. pequeñísimo -aqdms0 := -%suffix (aqdms0 aqdms0) +aqdms00 := +%suffix (aqdms00 aqdms00) a_masc-sg_ilr. ; e.g. pequeñísimos -aqdmp0 := -%suffix (aqdmp0 aqdmp0) +aqdmp00 := +%suffix (aqdmp00 aqdmp00) a_masc-pl_ilr. ; e.g. pequeñísima -aqdfs0 := -%suffix (aqdfs0 aqdfs0) +aqdfs00 := +%suffix (aqdfs00 aqdfs00) a_fem-sg_ilr. ; e.g. pequeñísimos -aqdfp0 := -%suffix (aqdfp0 aqdfp0) +aqdfp00 := +%suffix (aqdfp00 aqdfp00) a_fem-pl_ilr. -aq0000 := -%suffix (aq0000 aq0000) +aq00000 := +%suffix (aq00000 aq00000) no_ilr. From 96842cc5d9500227f12d252ff439af446a034c26 Mon Sep 17 00:00:00 2001 From: olzama Date: Mon, 29 May 2023 13:06:44 +0200 Subject: [PATCH 15/18] Added comments --- util/srg_freeling2yy.py | 1 + util/tokenize_and_tag.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/util/srg_freeling2yy.py b/util/srg_freeling2yy.py index ca90cb3..0df636c 100755 --- a/util/srg_freeling2yy.py +++ b/util/srg_freeling2yy.py @@ -28,6 +28,7 @@ def override_tag(selected, word, lemma, override_dicts): tag1, tag2 = selected['tag'].split('+') if tag1.strip() == tag2.strip(): return {'tags': [tag1.strip()], 'prob': -1 } + # Otherwise, two tags need to be fused according to a data file (e.g. srg-freeling.dat) if selected['tag'] in override_dicts['fuse']: return {'tags': [override_dicts['fuse'][selected['tag']]], 'prob': -1 } if lemma in override_dicts['replace']: diff --git a/util/tokenize_and_tag.py b/util/tokenize_and_tag.py index e3ce4bc..200c5d2 100755 --- a/util/tokenize_and_tag.py +++ b/util/tokenize_and_tag.py @@ -52,8 +52,8 @@ def tokenize_and_tag(self, sentence_list): # process input text for i,lin in enumerate(sentence_list): output.append({'sentence': lin, 'tokens':[]}) - if "aburrido" in lin: - print("debug") + #if "aburrido" in lin: + # print("debug") # With the basic NER Freeling module, may need this, as it will assume that # all uppercased items are all named entities. #s = self.tk.tokenize(lin.lower().capitalize()) if lin.isupper() else self.tk.tokenize(lin) From cf6ffa51ad0d2ac069f3d6158c2a03e1808c6c0d Mon Sep 17 00:00:00 2001 From: olzama Date: Mon, 29 May 2023 13:09:53 +0200 Subject: [PATCH 16/18] Added a missing Freeling tag NCFP00V --- inflr.tdl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/inflr.tdl b/inflr.tdl index 15713de..c20f97c 100644 --- a/inflr.tdl +++ b/inflr.tdl @@ -834,6 +834,10 @@ ncfp000 := %suffix (ncfp000 ncfp000) n_fem-pl_ilr. +ncfp00v := +%suffix (ncfp00v ncfp00v) +n_fem-pl_ilr. + ncms00a := %suffix (ncms00a ncms00a) n_masc-sg_ilr. From f00433aed5a53d6deec1f26412b5737f888ab966 Mon Sep 17 00:00:00 2001 From: olzama Date: Mon, 29 May 2023 13:17:16 +0200 Subject: [PATCH 17/18] Added a couple missing Freeling tags to the system; one to the actual inflectional rules and another to just be mapped to an existing one --- inflr.tdl | 4 ++++ lexicon.tdl | 3 +++ util/override_freeling.py | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/inflr.tdl b/inflr.tdl index c20f97c..45d7f3c 100644 --- a/inflr.tdl +++ b/inflr.tdl @@ -859,6 +859,10 @@ ncfs00a := %suffix (ncfs00a ncfs00a) n_fem-sg_ilr. +ncfs00v := +%suffix (ncfs00v ncfs00v) +n_fem-sg_ilr. + ncfp00a := %suffix (ncfp00a ncfp00a) n_fem-pl_ilr. diff --git a/lexicon.tdl b/lexicon.tdl index c859736..94bddb2 100644 --- a/lexicon.tdl +++ b/lexicon.tdl @@ -125296,6 +125296,9 @@ slash_pt := pt_-_hyphn_native_le & ; may need to be revisited. doublehyphen_pt := pt_-_hyphn_native_le & [ STEM < "--" > ]. + +triplehyphen_pt := pt_-_hyphn_native_le & + [ STEM < "---" > ]. lhyphen_pt := pt_-_lhyphn_native_le & [ STEM < "-" > ]. diff --git a/util/override_freeling.py b/util/override_freeling.py index b3b9479..8b60925 100644 --- a/util/override_freeling.py +++ b/util/override_freeling.py @@ -1,7 +1,7 @@ # Freeling tags to override and replace by other tags TAGS = {'I': 'AQ0MS00', 'DP1MPP': 'AP0MP1P', 'AQVMP00':'AQ0MP00', - 'DP1MSP': 'AP0MS1P', 'DP1FPP': 'AP0FP1P', 'DP1FSP': 'AP0FS1P', 'AQ00000':'AQ0000'} + 'DP1MSP': 'AP0MS1P', 'DP1FPP': 'AP0FP1P', 'DP1FSP': 'AP0FS1P', 'AQVFS00': 'AQ0FS00'} REPLACE_LEMMA_AND_TAG = {'ladra': {'lemma': 'ladrar', 'tag':'VMIP3S0'}, 'dió': {'lemma': 'dar', 'tag': 'VMIS3S0'}, 'dios': {'lemma': 'dios', 'tag': 'NCMS000'}, From 3ccb939ea3f02c93e250eb7b4e9eaf54497429e4 Mon Sep 17 00:00:00 2001 From: olzama Date: Tue, 30 May 2023 13:26:39 +0200 Subject: [PATCH 18/18] grammar version for re-treebanking pass --- util/srg_freeling2yy.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/util/srg_freeling2yy.py b/util/srg_freeling2yy.py index 0df636c..b6d02a6 100755 --- a/util/srg_freeling2yy.py +++ b/util/srg_freeling2yy.py @@ -25,12 +25,16 @@ def override_tag(selected, word, lemma, override_dicts): # I am not sure what this means for the moment. # We will assume for now a single tag is sufficient. if '+' in selected['tag']: - tag1, tag2 = selected['tag'].split('+') - if tag1.strip() == tag2.strip(): - return {'tags': [tag1.strip()], 'prob': -1 } - # Otherwise, two tags need to be fused according to a data file (e.g. srg-freeling.dat) - if selected['tag'] in override_dicts['fuse']: - return {'tags': [override_dicts['fuse'][selected['tag']]], 'prob': -1 } + if selected['tag'] in override_dicts['fuse']: + return {'tags': [override_dicts['fuse'][selected['tag']]], 'prob': -1} + #print(selected['tag']) + else: + tags = selected['tag'].split('+') + if len(tags) == 2: + if tags[0][:-3] == tags[1]: # The first tag will have a trailing space followed by an extra quote mark, e.g. 'VMN0000 "' + return {'tags': [tags[0][:-3]], 'prob': -1 } + else: + print("More than two tags in Freeling output: {}".format(selected['tag'])) if lemma in override_dicts['replace']: return {'tags': override_dicts['replace'][lemma]['tag'], 'prob': -1 } return {'tags': [selected['tag']], 'prob': selected['prob']}