lexicon-pl.dic 19.1 KB
@PHRASE_NAMES
  infp np prepnp adjp ip cp ncp advp padvp
  adja prepadjp compar measure num aglt aux-fut
  aux-past aux-imp qub interj hyphen int
  rparen rparen2 rquot rquot2 rquot3 inclusion
  day-interval day-lex day-month-interval date-interval
  month-lex month-interval year-interval roman roman-interval
  hour-minute-interval hour-interval obj-id match-result
  url email day-month day year date hour hour-minute
  się nie by s <root> or or2 <colon> <speaker> <speaker-end> <squery>

@WEIGHTS
symbol_weight=1
measure_weight=0.5

@LEXICON

# symbole występujące w tekście - daty itp. i słowa określające ich typy
lemma=dzień,pos=subst,number=sg,case=gen: day-lex/(date+day+day-month): symbol_weight;
lemma=dzień,pos=subst,number=sg:          np*number*case*gender*person/(date+day+day-month): symbol_weight;
lemma=dzień,pos=subst,number=pl:          np*number*case*gender*person/(date-interval+day-interval+day-month-interval): symbol_weight;
pos=date:                date{schema}: symbol_weight;
pos=date-interval:       date-interval: symbol_weight;
pos=day:                 day/month-lex: symbol_weight;
pos=day-interval:        day-interval/month-lex: symbol_weight;
pos=day-month:           day-month{schema}: symbol_weight;
pos=day-month-interval:  day-month-interval: symbol_weight;

lemma=styczeń|luty|marzec|kwiecień|maj|czerwiec|lipiec|sierpień|wrzesień|październik|litopad|grudzień,pos=subst,number=sg,case=gen:
  month-lex/(1+year+np*T*gen*T*T): symbol_weight;
lemma=styczeń|luty|marzec|kwiecień|maj|czerwiec|lipiec|sierpień|wrzesień|październik|litopad|grudzień,pos=subst,number=sg:
  np*number*case*gender*person/year: symbol_weight;
pos=month-interval:      month-interval: symbol_weight;

lemma=rok,pos=subst,number=sg: np*number*case*gender*person|year: symbol_weight;
lemma=rok,pos=subst,number=pl: np*number*case*gender*person/year-interval: symbol_weight;
pos=year:                 year: symbol_weight;
pos=year-interval:        year-interval: symbol_weight;

lemma=wiek,pos=subst,number=sg: np*number*case*gender*person|roman: symbol_weight;
lemma=wiek,pos=subst,number=pl: np*number*case*gender*person/roman-interval: symbol_weight;
pos=roman:                roman: symbol_weight;
pos=roman-interval:       roman-interval: symbol_weight;

lemma=godzina,pos=subst,number=sg: np*number*case*gender*person/(hour+hour-minute): symbol_weight;
lemma=godzina,pos=subst,number=pl: np*number*case*gender*person/(hour-interval+hour-minute-interval): symbol_weight;
pos=hour-minute:          hour-minute{schema}: symbol_weight;
pos=hour:                 hour{schema}: symbol_weight;
pos=hour-minute-interval: hour-minute-interval: symbol_weight;
pos=hour-interval:        hour-interval: symbol_weight;

lemma=rysunek,pos=subst,number=sg: np*number*case*gender*person/obj-id: symbol_weight; # objids
pos=obj-id:               obj-id: symbol_weight;

pos=match-result:         match-result: symbol_weight;
pos=url:                  url: symbol_weight;
pos=email:                email: symbol_weight;

pos=symbol:               np*number*case*gender*person{\(1+qub),/(1+inclusion)};

# FIXME: uslalić kiedy schema jest pusta i wyciąć ją w takich przypadkach
# frazy rzeczownikowe
pos=subst|depr,nsyn!=pronoun,nsem!=measure:
  np*number*case*gender*person{\(1+num*number*case*gender*person*congr)}{schema}{\(1+qub),/(1+inclusion)};
pos=subst,case=gen,nsyn!=pronoun,nsem!=measure:
  QUANT[number=T,case=all_cases,gender=T,person=T]
  np*sg*case*n2*person{\num*number*case*gender*person*rec}{schema}{\(1+qub),/(1+inclusion)}; # UWAGA: number "sg" i gender "n2", żeby uzgadniać z podmiotem czasownika
pos=subst,case=gen,nsyn!=pronoun,nsem!=measure:
  QUANT[unumber=all_numbers,ucase=all_cases,ugender=all_genders, uperson=all_persons,number=T,case=all_cases,gender=T,person=ter] # FIXME: all_cases
  np*unumber*ucase*ugender*uperson{\measure*unumber*ucase*ugender*uperson}{schema}{\(1+qub),/(1+inclusion)};
pos=subst|depr,nsyn=pronoun,nsem!=measure:
  np*number*case*gender*person{\(1+num*number*case*gender*person*congr)}{\(1+qub),/(1+inclusion)};
pos=subst,case=gen,nsyn=pronoun,nsem!=measure:
  QUANT[number=T,case=all_cases,gender=T,person=T]
  np*sg*case*n2*person{\num*number*case*gender*person*rec}{\(1+qub),/(1+inclusion)}; # UWAGA: number "sg" i gender "n2", żeby uzgadniać z podmiotem czasownika
pos=subst,case=gen,nsyn=pronoun,nsem!=measure:
  QUANT[unumber=all_numbers,ucase=all_cases,ugender=all_genders, uperson=all_persons,number=T,case=all_cases,gender=T,person=ter]
  np*unumber*ucase*ugender*uperson{\measure*unumber*ucase*ugender*uperson}{\(1+qub),/(1+inclusion)};
pos=ppron12:
  np*number*case*gender*person{\(1+qub),/(1+inclusion)};
pos=ppron3,praep=npraep|praep-npraep:
  np*number*case*gender*person{\(1+qub),/(1+inclusion)};
pos=siebie:
  np*number*case*gender*person{\(1+qub),/(1+inclusion)};
lemma=jakiś|ten|taki,pos=apron:
  QUANT[number=T,case=T,gender=T,person=ter]
  np*number*case*gender*person{\(1+qub),/(1+inclusion)};

# liczebniki
# FIXME: liczba po rzeczowniku  # FIXME: zbadać jak liczebniki współdziałąją z jako COMPAR
pos=num|intnum|realnum|intnum-interval|realnum-interval:
  num*number*case*gender*person*acm{\(1+qub),/(1+inclusion)}; # FIXME: jak usunięcie Phrase ProNG wpływa na pokrycie?

# pojemniki
pos=subst,nsem=measure:
  measure*number*case*gender*person{\(1+num*number*case*gender*person*congr)}{schema}{\(1+qub),/(1+inclusion)}: measure_weight;
pos=subst,case=gen,nsem=measure:
  QUANT[number=T,case=all_cases,gender=T,person=ter]
  measure*sg*case*n2*person{\num*number*case*gender*person*rec}{schema}{\(1+qub),/(1+inclusion)}: measure_weight; # UWAGA: number "sg" i gender "n2", żeby uzgadniać z podmiotem czasownika

# frazy przyimkowe
pos=prep:           prepnp*lemma*case{\(1+advp),/np*T*case*T*T}{\(1+qub),/(1+inclusion)};
pos=prep:           prepadjp*lemma*case{\(1+advp),/adjp*T*case*T}{\(1+qub),/(1+inclusion)};
lemma=po,pos=prep:  QUANT[case=postp] prepadjp*lemma*case{\(1+advp),/(adjp*sg*dat*m1+adjp*T*postp*T)}{\(1+qub),/(1+inclusion)}; # po polsku, po kreciemu
lemma=z,pos=prep:   QUANT[case=postp] prepadjp*lemma*case{\(1+advp),/adjp*sg*nom*f}{\(1+qub),/(1+inclusion)}; # z bliska
lemma=na,pos=prep:  QUANT[case=postp] prepadjp*lemma*case{\(1+advp),/advp}{\(1+qub),/(1+inclusion)}; # na lewo

# przimkowe określenia czasu
lemma=z,pos=prep,case=gen:      prepnp*lemma*case{\(1+advp),/(day-month+day+year+date+hour+hour-minute)}{\(1+qub),/(1+inclusion)};
lemma=do,pos=prep,case=gen:     prepnp*lemma*case{\(1+advp),/(day-month+day+year+date+hour+hour-minute)}{\(1+qub),/(1+inclusion)};
lemma=na,pos=prep,case=acc:     prepnp*lemma*case{\(1+advp),/(day-month+day+date+hour+hour-minute)}{\(1+qub),/(1+inclusion)};
lemma=o,pos=prep,case=loc:      prepnp*lemma*case{\(1+advp),/(hour+hour-minute)}{\(1+qub),/(1+inclusion)};
lemma=od,pos=prep,case=gen:     prepnp*lemma*case{\(1+advp),/(day-month+day+year+date+hour+hour-minute)}{\(1+qub),/(1+inclusion)};
lemma=około,pos=prep,case=gen:  prepnp*lemma*case{\(1+advp),/(day-month+day+year+date+hour+hour-minute)}{\(1+qub),/(1+inclusion)};
lemma=po,pos=prep,case=loc:     prepnp*lemma*case{\(1+advp),/(day-month+day+year+date+hour+hour-minute)}{\(1+qub),/(1+inclusion)};
lemma=przed,pos=prep,case=inst: prepnp*lemma*case{\(1+advp),/(day-month+day+year+date+hour+hour-minute)}{\(1+qub),/(1+inclusion)};
lemma=w,pos=prep,case=loc:      prepnp*lemma*case{\(1+advp),/(day-month+day+year+date+hour+hour-minute)}{\(1+qub),/(1+inclusion)};

# komparatywy
# FIXME: trzeba poprawić comparnp i comparpp w walencji
pos=compar: QUANT[case=nom&gen&dat&acc&inst] compar*lemma*case{\(1+advp),/np*T*case*T*T}{\(1+qub),/(1+inclusion)};
pos=compar: QUANT[case=postp] compar*lemma*case{\(1+advp),/(prepnp*T*T+prepadjp*T*T)}{\(1+qub),/(1+inclusion)};

# frazy przymiotnikowe
# FIXME: let grad = match grads with [grad] -> grad | _ -> failwith "make_adjp: grad" in
pos=adj|adjc|adjp:              adjp*number*case*gender{schema}{\(1+qub),/(1+inclusion)}{\(1+adja)};
lemma=jakiś|ten|taki,pos=apron: adjp*number*case*gender{\(1+qub),/(1+inclusion)};
pos=ordnum|roman-ordnum:        adjp*number*case*gender{\(1+qub),/(1+inclusion)}{\(1+adja)};

pos=adja|intnum|realnum|intnum-interval|realnum-interval|roman|roman-interval: adja/hyphen;

# przysłówki
# FIXME let grad = match grads with [grad] -> grad | _ -> failwith "make_advp: grad" in
pos=adv: advp{schema}{\(1+qub),/(1+inclusion)}{\(1+adja)};

# relatory
# FIXME: dwa znaczenia jak: pytanie o cechę lub spójnik
lemma=jak|skąd|dokąd|gdzie|którędy|kiedy,pos=adv:
  QUANT[inumber=0,igender=0,iperson=0,ctype=int&rel] RAISED[ctype]
  cp*ctype*lemma{\(1+advp),/(ip*inumber*igender*iperson/advp)}; #["CTYPE",SubstVar "ctype"]
lemma=odkąd|dlaczego|czemu,pos=adv:
  QUANT[inumber=0,igender=0,iperson=0,ctype=int] RAISED[ctype]
  cp*ctype*lemma{\(1+advp),/(ip*inumber*igender*iperson/advp)}; #["CTYPE",SubstVar "ctype"]
lemma=gdy,pos=adv:
  QUANT[inumber=0,igender=0,iperson=0,ctype=sub] RAISED[ctype]
  cp*ctype*lemma{\(1+advp),/(ip*inumber*igender*iperson/advp)}; #["CTYPE",SubstVar "ctype"]

# czasowniki
pos=ger:  np*number*case*gender*person{schema}{\(1+qub),/(1+inclusion)};

pos=pact: adjp*number*case*gender{schema}{\(1+qub),/(1+inclusion)};
pos=ppas: adjp*number*case*gender{schema}{\(1+qub),/(1+inclusion)};

pos=fin|bedzie,negation=aff,mood=indicative:  ip*number*gender*person{/(1+int),schema}{\(1+qub),/(1+inclusion)};
pos=fin|bedzie,negation=neg,mood=indicative:  ip*number*gender*person{/(1+int),schema}{\(1+qub),/(1+inclusion)}{\nie};
pos=fin,negation=aff,mood=imperative:         ip*number*gender*person{/(1+int),schema,|aux-imp}{\(1+qub),/(1+inclusion)};
pos=fin,negation=neg,mood=imperative:         ip*number*gender*person{/(1+int),schema,|aux-imp}{\(1+qub),/(1+inclusion)}{\nie};
pos=impt|imps,negation=aff:                   ip*number*gender*person{/(1+int),schema}{\(1+qub),/(1+inclusion)};
pos=impt|imps,negation=neg:                   ip*number*gender*person{/(1+int),schema}{\(1+qub),/(1+inclusion)}{\nie};

pos=pred,negation=aff,tense=pres: ip*number*gender*person{/(1+int),schema}{\(1+qub),/(1+inclusion)};
pos=pred,negation=neg,tense=pres: ip*number*gender*person{/(1+int),schema}{\(1+qub),/(1+inclusion)}{\nie};
pos=pred,negation=aff,tense=fut:  ip*number*gender*person{/(1+int),schema,|aux-fut*number*gender*person}{\(1+qub),/(1+inclusion)};
pos=pred,negation=neg,tense=fut:  ip*number*gender*person{/(1+int),schema,|aux-fut*number*gender*person}{\(1+qub),/(1+inclusion)}{\nie};
pos=pred,negation=aff,tense=past: ip*number*gender*person{/(1+int),schema,|aux-past*number*gender*person}{\(1+qub),/(1+inclusion)};
pos=pred,negation=neg,tense=past: ip*number*gender*person{/(1+int),schema,|aux-past*number*gender*person}{\(1+qub),/(1+inclusion)}{\nie};

pos=praet|winien,person=ter,negation=aff,mood=indicative:   ip*number*gender*person{/(1+int),schema}{\(1+qub),/(1+inclusion)};
pos=praet|winien,person=ter,negation=neg,mood=indicative:   ip*number*gender*person{/(1+int),schema}{\(1+qub),/(1+inclusion)}{\nie};
pos=praet|winien,person!=ter,negation=aff,mood=indicative:  ip*number*gender*person{/(1+int),schema,|aglt*number*person}{\(1+qub),/(1+inclusion)};
pos=praet|winien,person!=ter,negation=neg,mood=indicative:  ip*number*gender*person{/(1+int),schema,|aglt*number*person}{\(1+qub),/(1+inclusion)}{\nie};

pos=praet|winien,person=ter,negation=aff,mood=conditional:  ip*number*gender*person{/(1+int),schema,|by}{\(1+qub),/(1+inclusion)};
pos=praet|winien,person=ter,negation=neg,mood=conditional:  ip*number*gender*person{/(1+int),schema,|by}{\(1+qub),/(1+inclusion)}{\nie};
pos=praet|winien,person!=ter,negation=aff,mood=conditional: ip*number*gender*person{/(1+int),schema,|aglt*number*person,|by}{\(1+qub),/(1+inclusion)};
pos=praet|winien,person!=ter,negation=neg,mood=conditional: ip*number*gender*person{/(1+int),schema,|aglt*number*person,|by}{\(1+qub),/(1+inclusion)}{\nie};

pos=praet|winien,negation=aff,tense=fut:  ip*number*gender*person{/(1+int),schema,|aux-fut*number*gender*person}{\(1+qub),/(1+inclusion)};

pos=winien,person=ter,negation=aff,tense=past:  ip*number*gender*person{/(1+int),schema,|aux-past*number*gender*person}{\(1+qub),/(1+inclusion)};
pos=winien,person=ter,negation=neg,tense=past:  ip*number*gender*person{/(1+int),schema,|aux-past*number*gender*person}{\(1+qub),/(1+inclusion)}{\nie};
pos=winien,person!=ter,negation=aff,tense=past: ip*number*gender*person{/(1+int),schema,|aglt*number*person,|aux-past*number*gender*person}{\(1+qub),/(1+inclusion)};
pos=winien,person!=ter,negation=neg,tense=past: ip*number*gender*person{/(1+int),schema,|aglt*number*person,|aux-past*number*gender*person}{\(1+qub),/(1+inclusion)}{\nie};

pos=bedzie:           aux-fut*number*gender*person;
lemma=być,pos=praet:  aux-past*number*gender*person;
pos=aglt:             aglt*number*person;

pos=inf,negation=aff:   infp{schema}{\(1+qub),/(1+inclusion)};
pos=inf,negation=neg:   infp{schema}{\(1+qub),/(1+inclusion)}{\nie};
pos=pcon,negation=aff:  padvp{schema}{\(1+qub),/(1+inclusion)};
pos=pcon,negation=neg:  padvp{schema}{\(1+qub),/(1+inclusion)}{\nie};
pos=pant,negation=aff:  padvp{schema}{\(1+qub),/(1+inclusion)};
pos=pant,negation=neg:  padvp{schema}{\(1+qub),/(1+inclusion)}{\nie};

pos=comp:               QUANT[ctype=sub] cp*ctype*lemma/ip*T*T*T;
pos=conj:               QUANT[ctype=coord] cp*ctype*lemma/ip*T*T*T;
#lemma=i|lub|czy|bądź,pos=conj:   Conj([number=all_numbers,gender=all_genders,person=all_persons],"(ip*number*gender*person/ip*T*T*T)\ip*T*T*T"),0.;
#lemma=,|i|lub|czy|bądź,pos=conj: Conj([],"(advp/prepnp*T*T)\prepnp*T*T"),0.;
#lemma=,|i|lub|czy|bądź,pos=conj: Conj([],"(advp/advp)\prepnp*T*T"),0.;
#lemma=,|i|lub|czy|bądź,pos=conj: Conj([],"(advp/prepnp*T*T)\advp"),0.;
#lemma=,|i|lub|czy|bądź,pos=conj: Conj([],"(advp/advp)\advp"),0.;
#lemma=,|i|lub|czy|bądź,pos=conj: Conj([plemma=0,case=all_cases],"(prepnp*plemma*case/prepnp*plemma*case)\prepnp*plemma*case"),0.;
#lemma=,|i|lub|czy|bądź,pos=conj: Conj([number=all_numbers,case=all_cases,gender=all_genders,person=all_persons],"(np*number*case*gender*person/np*T*case*T*T)\np*T*case*T*T"),0.;
#lemma=,|i|lub|czy|bądź,pos=conj: Conj([number=all_numbers,case=all_cases,gender=all_genders],"(adjp*number*case*gender/adjp*number*case*gender)\adjp*number*case*gender"),0.;

lemma=co|kto,pos=subst:
  QUANT[inumber=0,igender=0,iperson=0,ctype=int&rel,number=T,case=T,gender=T,person=ter] RAISED[ctype]
  cp*ctype*lemma/(ip*inumber*igender*iperson/np*number*case*gender*person); #["CTYPE",SubstVar "ctype"]
lemma=co|kto,pos=subst:
  QUANT[inumber=0,igender=0,iperson=0,plemma=0,ctype=int&rel,number=T,case=T,gender=T,person=ter] RAISED[ctype]
  cp*ctype*lemma{/(ip*inumber*igender*iperson/prepnp*plemma*case),/(prepnp*plemma*case/np*number*case*gender*person)}; #["CTYPE",SubstVar "ctype"]
lemma=to,pos=subst:
  QUANT[ctype=0,plemma=0,number=T,case=T,gender=T,person=ter]
  ncp*number*case*gender*person*ctype*plemma{\(1+qub),/(1+inclusion)}{/cp*ctype*plemma};
pos=ppron3,praep=praep:
  QUANT[plemma=0,number=T,case=T,gender=T,person=T] RAISED[]
  prepnp*plemma*case\(prepnp*plemma*case/np*number*case*gender*person); #inclusion #[Number;Case;Gender;Person];
lemma=ile,pos=num:  # FIXME: iloma ma bezpośredni podrzędnik rzeczownikowy, a ile nie # FIXME: mwe "o ile, na ile"
  QUANT[inumber=0,igender=0,iperson=0,ctype=int&rel,number=T,case=T,gender=T,person=ter]
  cp*ctype*lemma/ip*inumber*igender*iperson; # FIXME: zaślepka, bo podrzędnik ile nie musi z nim sąciadować  #["CTYPE",SubstVar "ctype"] # FIXME: trzeba dodać przypadki, bezpośredniego podrzędnika rzeczownikowego i przyimka nad "ile"
lemma=czyj|jaki|który,pos=apron:
  QUANT[inumber=0,igender=0,iperson=0,nperson=0,ctype=int,number=T,case=T,gender=T] RAISED[ctype]
  cp*ctype*lemma{/(ip*inumber*igender*iperson/np*number*case*gender*nperson)}{/(np*number*case*gender*nperson\adjp*number*case*gender)}; #["CTYPE",SubstVar "ctype"]
lemma=czyj|jaki|który,pos=apron:
  QUANT[inumber=0,igender=0,iperson=0,nperson=0,plemma=0,ctype=int,number=T,case=T,gender=T] RAISED[ctype]
  cp*ctype*lemma{/(ip*inumber*igender*iperson/prepnp*plemma*case)}{/(prepnp*plemma*case/np*number*case*gender*nperson)}{/(np*number*case*gender*nperson\adjp*number*case*gender)}; #["CTYPE",SubstVar "ctype"]
lemma=czyj|jaki,pos=apron:
  QUANT[inumber=0,igender=0,iperson=0,ctype=rel,number=T,case=T,gender=T,person=ter] RAISED[ctype]
  cp*ctype*lemma/(ip*inumber*igender*iperson/np*number*case*gender*person); #["CTYPE",SubstVar "ctype"]
lemma=jaki|który,pos=apron:
  QUANT[inumber=0,igender=0,iperson=0,plemma=0,ctype=rel,number=T,case=T,gender=T,person=ter] RAISED[ctype]
  cp*ctype*lemma{/(ip*inumber*igender*iperson/prepnp*plemma*case)}{/(prepnp*plemma*case/np*number*case*gender*person)}; #["CTYPE",SubstVar "ctype"]

lemma=się,pos=qub:        się; # FIXME: dodać make_np
lemma=nie,pos=qub:        nie;
lemma=by,pos=qub:         by;
lemma=niech,pos=qub:      aux-imp;
lemma=niechaj,pos=qub:    aux-imp;
lemma=niechże,pos=qub:    aux-imp;
lemma=niechajże,pos=qub:  aux-imp;
lemma=czy,pos=qub:        QUANT[ctype=int] cp*ctype*lemma/ip*T*T*T;
lemma=gdyby,pos=qub:      QUANT[ctype=rel] cp*ctype*lemma/ip*T*T*T;
pos=qub:                  qub;
pos=interj:               interj;
lemma=-,pos=interp:       hyphen;
lemma=?,pos=interp:       int;
#lemma=„,pos=interp:       Quot([number=0,case=0,gender=0,person=0],"(np*number*case*gender*person/rquot)/np*number*case*gender*person"),0.;
#lemma=«,pos=interp:       Quot([number=0,case=0,gender=0,person=0],"(np*number*case*gender*person/rquot2)/np*number*case*gender*person"),0.;
#lemma=»,pos=interp:       Quot([number=0,case=0,gender=0,person=0],"(np*number*case*gender*person/rquot3)/np*number*case*gender*person"),0.;
lemma=”,pos=interp:       rquot;
lemma=»,pos=interp:       rquot2;
lemma=«,pos=interp:       rquot3;
#lemma=(,pos=interp:       Inclusion "(inclusion/rparen)/(np*T*T*T*T+ip*T*T*T+adjp*T*T*T+prepnp*T*T);
#lemma=[,pos=interp:       Inclusion "(inclusion/rparen2)/(np*T*T*T*T+ip*T*T*T+adjp*T*T*T+prepnp*T*T);
lemma=),pos=interp:       rparen;
lemma=],pos=interp:       rparen2;
pos=unk:                  np*number*case*gender*person;

#  | ".","interp",[] -> [LCGrenderer.make_frame_simple [] ["dot"] c (make_node "." "interp" c.weight 0 [])] # FIXME: to jest potrzebne przy CONLL
#      | "<conll_root>","interp",[] ->
#       let batrs = (make_node "<conll_root>" "interp" c.weight 0 []) in
#       let schema_list = [[schema_field CLAUSE "Clause" Forward [Phrase IP;Phrase (CP(Int,CompUndef));Phrase (NP(Case "voc"));Phrase (Lex "interj")]]] in
#       [LCGrenderer.make_frame false tokens lex_sems [] schema_list ["<conll_root>"] d batrs]
#      | lemma,c,l -> failwith ("process_interp: " ^ lemma ^ ":" ^ c ^ ":" ^ (String.concat ":" (Xlist.map l (String.concat ".")))) in

pos=sinterj:                      BRACKET interj;

lemma=</sentence>,pos=interp:     BRACKET s\?(ip*T*T*T+cp*int*T+np*sg*voc*T*T+interj);
lemma=<sentence>,pos=interp:      BRACKET <root>/s;

lemma=:,pos=interp:               BRACKET or;
lemma=:s,pos=interp:              BRACKET <colon>\<speaker>;
lemma=:s,pos=interp:              BRACKET (<colon>\<speaker>)/<squery>;
lemma=<or-sentence>,pos=interp:   BRACKET <root>/s;
lemma=<or-sentence>,pos=interp:   BRACKET ((<root>/<speaker-end>)/(ip*T*T*T/or))/or2;
lemma=</or-sentence>,pos=interp:  BRACKET or2\?(ip*T*T*T+cp*int*T+np*sg*voc*T*T+interj);
lemma=<sentence>,pos=interp:      BRACKET (<speaker>/<speaker-end>)/np*T*nom*T*T;
lemma=</sentence>,pos=interp:     BRACKET <speaker-end>;