SYNTAGMA: a brief overview


1. SYNTAGMA is a language processing pipeline, which includes tokenizer, pos-tagger, parser, NER, semantic-labeling.

Text-tagging and sentiment-analysis modules are currently under development.


2. Source code is provisionally written in FreePascal. Lexical-, NE- and semantic data are stored as MySQL tables.


3. It is a deterministic, rule-based system, not a statistical one. There are some "probabilistic" rules, for morphological and syntactic disambiguation (they assign a score), but they are still rules, since my assumption is that human language competence doesn't work statistically!

Attachment 1) shows some parse results.


4. There are some fundamental data linked with lexical entries in order to make SYNTAGMA work properly. The most important are the following two:


4.1 For each lexical entry there is an index of at least one meaning (MNG), i.e. word-sense.

Meanings are linked with data related to their argument structure, that includes information about subcategorisation, connectives and semantic properties of each argument.

This information is crucial for SYNTAGMA, since it works on a cross-verification between syntactic and semantic properties in order to select the appropriate pattern ('phrase-structure') in a given context.

This data for Italian has been extracted from an Italian dictionary which includes information about the valence (Tesnière 1959) of lexical entries. For English one can use syntactic frames linked to the WordNet synsets, but they are less complete.

Attachment 2) shows some argument frames of different categories of words.


4.2 The parser works bottom-up, building syntagmatic units based on a list of patterns. Patterns describe syntactic structures whose complexity gradually increases, from terminal elements to complex sentences, including dislocations and elliptical constructions and what else you want to include in syntagma's syntactic "knowledge".

The difference between a 'phrase structure' (as in Generative Grammar) and the 'pattern' is that this latter describes possible part of- and sentence structures, rather than 'abstract' constituents, but maintaining recursiveness.

This list of patterns ("phrase structures") is given in a text file, so it can be written and managed very easily.

Attachment 3) shows an extract of the Pattern_List (Italian).



Daniel Christen (www.semasia.ch)


syntagma_overview.pdf (this document as pdf)










ATTACHMENT 1. SYNTAGMA. Parse examples. Daniel Christen (www.semasia.ch). October 2019.


EXAMPLE (1) input= "La bambina glielo vorrebbe poter regalare." ("The girl would like to be able to give it to him").

Note well that Italian has more complex syntactic structures than English!

The example shows a sentence with two encapsulated modal verbs ("want" and "can") and two pro-clitic pronouns ("gli" Dative and "lo" Accusative) which are antecedents for the arguments of the verb "regalare" ("give") in the subordinate clause; these arguments are given by two Traces, with a coreference pointer (REF) to its antecedents.

Italian allows phonetically unexpressed subjects, which are represented by the symbol PRO (Null-subject) or Pro (non-finite clause subject), following Gouvernement and Bynding Theory.

The unexpressed subject Pro has a coreference pointer (REF) to the subject of the main-verb.

The coreference index (REF) refers to the terminal index (TRM) of the antecedent.


Note well that the parse selects, for each lexical entry, the word-sense/word-senses (MNG) that are compatible with the selected syntactic structure. The other word-senses are deleted from

the meaning-index array of the given lexical entry. This is the result of a FILTER that considers the relation between a meaning and its argument frame (listed in the argument frame table).


Parsing completed: s=1 global_id_snt=1 tot_words=7.

TEMA: snt=1 frasi[snt]="la bambina glielo vorrebbe poter regalare.". Selected result:


205;F1; snt=1;4101; SUCCESS=1; INHIBITED=FALSE; NUM_PAR=7; E_TYPE=ASSERT; S_TYPE=; HEAD=8; DOM=(203);(IMs=552467;volere; DISCs=86307; MDVs=2; TMPs=1; PRSs=3; GENs=0; NUMs=1;)

1;la; LEX: la; ID=1; TRM=1; RTRM=1; GOV=4; FNCT=det; TAGS=NP; CAT=613; |1-2|; MORF [(IM=150264; LEX=la; CAT=613; DISC=477; MDV=0; TMP=0; PRS=3; GEN=2; NUM=1; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=; LogicSPACE -1

2;bambina; LEX: bambino; ID=2; TRM=4; RTRM=4; GOV=8; FNCT=sogg; TAGS=NP; CAT=200; |2-3|; MORF [(IM=29563; LEX=bambino; CAT=200; DISC=8110; MDV=0; TMP=0; PRS=3; GEN=2; NUM=1; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=; MNG(8110_01) LogicSPACE -1

3;gli; LEX: gli; ID=3; TRM=6; RTRM=6; GOV=10; FNCT=rc; TAGS=PronDat; CAT=511; |3-4|; MORF [(IM=121527; LEX=gli; CAT=511; DISC=1278; MDV=0; TMP=0; PRS=3; GEN=0; NUM=0; Lsem=0; RESTR_LEX= (1);)] BOUND=462531; DIAT=; LogicSPACE -1

4;lo; LEX: lo; ID=3; TRM=7; RTRM=7; GOV=10; FNCT=ro; TAGS=PronAcc; CAT=512; |4-5|; MORF [(IM=552740; LEX=lo; CAT=512; DISC=1297; MDV=0; TMP=0; PRS=3; GEN=1; NUM=1; Lsem=0; RESTR_LEX= (1);)] BOUND=462531; DIAT=; LogicSPACE -1

5;vorrebbe; LEX: volere; ID=4; TRM=8; RTRM=8; GOV=0; FNCT=v; TAGS=VP; CAT=100; |5-6|; MORF [(IM=552467; LEX=volere; CAT=100; DISC=86307; MDV=2; TMP=1; PRS=3; GEN=0; NUM=1; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=att; MNG(86307_51) LogicSPACE -1

6;PRO; LEX: PRO; ID=0; TRM=13; RTRM=13; GOV=10; FNCT=sogg; TAGS=NP; CAT=pro; |0-0|; MORF [(IM=0; LEX=PRO; CAT=; DISC=0; MDV=0; TMP=0; PRS=3; GEN=2; NUM=1; Lsem=; RESTR_LEX= (0);)(IM=0; LEX=; CAT=; DISC=; MDV=0; TMP=0; PRS=3; GEN=2; NUM=1; Lsem=; RESTR_LEX= (0);)] BOUND=0; DIAT=; LogicSPACE -1 REF(4:0)

7;potere; LEX: potere; ID=5; TRM=10; RTRM=10; GOV=8; FNCT=arg; TAGS=VP; CAT=100; |6-7|; MORF [(IM=215796; LEX=potere; CAT=100; DISC=59288; MDV=6; TMP=1; PRS=0; GEN=0; NUM=0; Lsem=0; RESTR_LEX= (1);)(IM=542214; LEX=potere; CAT=100; DISC=59288; MDV=6; TMP=1; PRS=0; GEN=0; NUM=0; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=; MNG(59288_01) LogicSPACE -1

8;PRO; LEX: PRO; ID=0; TRM=13; RTRM=13; GOV=11; FNCT=sogg; TAGS=NP; CAT=pro; |0-0|; MORF [(IM=0; LEX=PRO; CAT=; DISC=0; MDV=0; TMP=0; PRS=0; GEN=0; NUM=0; Lsem=; RESTR_LEX= (0);)] BOUND=0; DIAT=; LogicSPACE -1 REF(13:0)

9;regalare; LEX: regalare; ID=6; TRM=11; RTRM=11; GOV=10; FNCT=arg; TAGS=VP; CAT=100; |7-8|; MORF [(IM=460630; LEX=regalare; CAT=100; DISC=63732; MDV=6; TMP=1; PRS=0; GEN=0; NUM=0; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=; MNG(63732_01) LogicSPACE -1

10;T; LEX: T; ID=0; TRM=14; RTRM=14; GOV=11; FNCT=arg; TAGS=NP; CAT=trace; |0-0|; MORF [(IM=0; LEX=T; CAT=; DISC=0; MDV=0; TMP=0; PRS=3; GEN=1; NUM=1; Lsem=; RESTR_LEX= (0);)] BOUND=0; DIAT=; LogicSPACE -1 REF(7:0)

11;T; LEX: T; ID=0; TRM=14; RTRM=14; GOV=11; FNCT=prep.arg; TAGS=PP; CAT=trace; |0-0|; MORF [(IM=0; LEX=T; CAT=; DISC=0; MDV=0; TMP=0; PRS=3; GEN=0; NUM=0; Lsem=; RESTR_LEX= (0);)] BOUND=0; DIAT=; LogicSPACE -1 REF(6:0)

12;.; LEX: .; ID=7; TRM=12; RTRM=12; GOV=8; FNCT=sep; TAGS=Sep21; CAT=11; |8-9|; MORF [(IM=553196; LEX=.; CAT=11; DISC=1; MDV=0; TMP=0; PRS=0; GEN=0; NUM=0; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=; LogicSPACE -1

SCORE= 0.00000000000000E+000; SEM_SCORE= 0.00000000000000E+000; TestWon/Done=0/0 Competitors=179,

History=()



EXAMPLE (2) input= "L'applicativo funziona bene ma è troppo caro." ("The app works well, but it is too expensive.")

Parse with sentiment analysis.

The unexpressed subject PRO of the coordinate clause has a coreference pointer (REF=4) to the terminal index (TRM) subject ("applicativo") of the first clause verb.


Parsing completed: s=1 global_id_snt=1 tot_parole=9.

TEMA: snt=1 frasi[snt]="L' applicativo funziona bene ma è troppo caro.". Selected result:

307;F1; snt=1;4101; SUCCESS=1; INHIBITED=FALSE; NUM_PAR=9; E_TYPE=ASSERT; S_TYPE="COORD"; HEAD=12; LOGIC(11 0F1 "BUT") DOM=(297);(IMs=538721;essere; DISCs=27895; MDVs=1; TMPs=1; PRSs=3; GENs=0; NUMs=1;)

1;l'; LEX: l'; ID=1; TRM=1; RTRM=1; GOV=4; FNCT=det; TAGS=NP; CAT=613; |1-2|; MORF [(IM=552735; LEX=l'; CAT=613; DISC=476; MDV=0; TMP=0; PRS=3; GEN=0; NUM=1; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=; GOV_COORD 0 LSPACE -1

2;applicativo; LEX: applicativo; ID=2; TRM=4; RTRM=4; GOV=5; FNCT=sogg; TAGS=NP; CAT=200; |2-3|; MORF [(IM=18750; LEX=applicativo; CAT=200; DISC=5043; MDV=0; TMP=0; PRS=3; GEN=1; NUM=1; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=; MNG(5043_02) GOV_COORD 0 LSPACE -1

3;funziona; LEX: funzionare; ID=3; TRM=5; RTRM=5; GOV=0; FNCT=v; TAGS=VP; CAT=100; |3-4|; MORF [(IM=538721; LEX=essere; CAT=100; DISC=27895; MDV=1; TMP=1; PRS=3; GEN=0; NUM=1; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=att; MNG(32205_01) GOV_COORD 0 LSPACE 11

4;bene; LEX: bene; ID=4; TRM=7; RTRM=7; GOV=5; FNCT=exp; TAGS=AdvP; CAT=300; |4-5|; MORF [(IM=32531; LEX=bene; CAT=300; DISC=9017; MDV=0; TMP=0; PRS=0; GEN=0; NUM=0; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=; MNG(9017_01) GOV_COORD 0 LSPACE -1

5;ma; LEX: ma; ID=5; TRM=11; RTRM=11; GOV=12; FNCT=ccoord; TAGS=CngCoord01; CAT=715; |5-6|; MORF [(IM=158897; LEX=ma; CAT=715; DISC=508; MDV=0; TMP=0; PRS=0; GEN=0; NUM=0; Lsem=BUT; RESTR_LEX= (1);)] BOUND=0; DIAT=; GOV_COORD 0 LSPACE -1

6;PRO; LEX: PRO; ID=0; TRM=22; RTRM=22; GOV=12; FNCT=sogg; TAGS=NP; CAT=pro; |0-0|; MORF [(IM=0; LEX=PRO; CAT=; DISC=0; MDV=0; TMP=0; PRS=3; GEN=0; NUM=1; Lsem=; RESTR_LEX= (0);)] BOUND=0; DIAT=0; GOV_COORD 0 LSPACE -1 REF(4:0)

7;è; LEX: essere; ID=6; TRM=12; RTRM=12; GOV=0; FNCT=v; TAGS=VP; CAT=100; |6-7|; MORF [(IM=538721; LEX=essere; CAT=100; DISC=27895; MDV=1; TMP=1; PRS=3; GEN=0; NUM=1; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=att; MNG(27895_33) GOV_COORD 0 LSPACE 11

8;troppo; LEX: troppo; ID=7; TRM=14; RTRM=14; GOV=18; FNCT=exp; TAGS=AdjP; CAT=310; |7-8|; MORF [(IM=299706; LEX=troppo; CAT=310; DISC=364; MDV=0; TMP=0; PRS=0; GEN=0; NUM=0; Lsem=QUANTITY|PLUS; RESTR_LEX= (1);)] BOUND=0; DIAT=; GOV_COORD 0 LSPACE -1

9;caro; LEX: caro; ID=8; TRM=18; RTRM=18; GOV=12; FNCT=compl.pred; TAGS=AdjP; CAT=400; |8-9|; MORF [(IM=47780; LEX=caro; CAT=400; DISC=13557; MDV=0; TMP=0; PRS=0; GEN=1; NUM=1; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=; MNG(13557_01) GOV_COORD 0 LSPACE -1

10;.; LEX: .; ID=9; TRM=21; RTRM=21; GOV=12; FNCT=sep; TAGS=Sep21; CAT=11; |9-10|; MORF [(IM=553196; LEX=.; CAT=11; DISC=1; MDV=0; TMP=0; PRS=0; GEN=0; NUM=0; Lsem=0; RESTR_LEX= (1);)] BOUND=0; DIAT=; GOV_COORD 5,12 LSPACE -1

SCORE= 1.00000000000000E+000; SEM_SCORE= 2.00000000000000E-001; TestWon/Done=7/7 Competitors=210,211,212,214,301,302,303,304,305,306,308,309,310,333,334,335,336,

History=[267 W D7 170][267 W D7 253][307 W D7 214][307 W C8 (caro) 301][307 W C8 (caro) 302][307 W C8 (caro) 303][307 W C8 (caro) 305]


registra_parse_result: sintagma.sntgm=290 has_highest_score(sintagma)=TRUE

Parser: tot_s=1 s=1 global_id_snt=1 frasi[s]=L' applicativo funziona bene ma è troppo caro."

TEMA: process completed. Input=L'applicativo funziona bene ma è troppo caro."

FINE registra_sentiment_text: global_id_text=0 text_domain= sentiment_text_result= 1.05416666666660E+001

Parsing completed. Result is in file=dataout/xout_parser.txt

Parser: Press ENTER for next sentence!











ATTACHMENT 2. SYNTAGMA argument frames: examples. Daniel Christen, October 2019


The following tables show the argument structure (and subcategorisation frame) of the different word senses (meanings 'mng') of a lexical entry ('lex').

These examples are somewhere redundant: they bring together data coming from different tables (columns 'lex', prf', idiom' are pleonastic).


For each lexical entry ("lex" indexed by "disc") and for each word sense ('mng'), its possible argument structures (subconstituents) are listed.

For each argument/subcontituent, indexed by 'ival', the table gives:

- its syntactic function 'fnct' (sogg=subject; arg=direct object; prep.arg = indirect object ...)

- for each 'fnct' the table describes its possible surface forms and properties ('iprp'), that is:

- the syntactic label 'vcat' (NP, PP, VP, F=Clause, Finf=infinitive clause)

- the selected connectives 'conn': i.e. prepositions, conjuncions

- restrictions on the lexical form ('vlex') of the contituent

- restrictions on its morphological features (verbal mood 'vmdv', tempus 'vtmp', person 'vprs', number, gender)

- semantic label 'vsem' (which can have a restrictive role)

- anaphora link to some other subcontituent 'vref'

- special restrictions (given in a logical form: they are mostly in the Pattern-List file)

Data coming from other tables:

- lexical entry ('lex')

- gloss ('prf')

- 'idiom': 1=the word sense belongs to an idiom (idiomatic locution).


EXAMPLE 1: argument frame of "amare" (verb "love"): word senses (meanings=column 'mng') of the lexical entry (which is indexed as 'disc').

# id_frame, disc, mng, ival, fnct, opt, iprp, vcat, conn, vlex, vmdv, vtmp, vprs, vgen, vnum, vpos, vsem, vref, vrestr, lex, prf, idiom, verif

'1970', '3085', '3085_01', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'Provare amore e affetto verso qlcu.', '0', '0'

'1970', '3085', '3085_01', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'Provare amore e affetto verso qlcu.', '0', '0'

'1970', '3085', '3085_01', '3', 'arg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'Provare amore e affetto verso qlcu.', '0', '0'


'1972', '3085', '3085_03', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'essere innamorato di qlcu.', '0', '0'

'1972', '3085', '3085_03', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'essere innamorato di qlcu.', '0', '0'

'1972', '3085', '3085_03', '3', 'arg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'essere innamorato di qlcu.', '0', '0'


'1977', '3085', '3085_08', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'provare diletto nel fare qlco. o desiderare, volere qlco.', '0', '0'

'1977', '3085', '3085_08', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'provare diletto nel fare qlco. o desiderare, volere qlco.', '0', '0'

'1977', '3085', '3085_08', '3', 'arg', 'F', '1', 'Finf', 'no_conn|di', '0', '6', '0', '0', '0', '0', '0', 'THING', '0', '0', 'amare', 'provare diletto nel fare qlco. o desiderare, volere qlco.', '0', '0'

'1977', '3085', '3085_08', '3', 'arg', 'F', '2', 'F', 'che', '0', '1|2|3', '0', '0', '0', '0', '0', 'THING', '0', '0', 'amare', 'provare diletto nel fare qlco. o desiderare, volere qlco.', '0', '0'


'1978', '3085', '3085_09', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', 'animal', '0', '0', 'amare', 'prediligere qlco.', '0', '0'

'1978', '3085', '3085_09', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'prediligere qlco.', '0', '0'

'1978', '3085', '3085_09', '3', 'arg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', 'THING', '0', '0', 'amare', 'prediligere qlco.', '0', '0'


'1979', '3085', '3085_10', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', 'vegetal&plant', '0', '0', 'amare', 'abbisognare di qlco. per prosperare', '0', '0'

'1979', '3085', '3085_10', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'abbisognare di qlco. per prosperare', '0', '0'

'1979', '3085', '3085_10', '3', 'arg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'amare', 'abbisognare di qlco. per prosperare', '0', '0'


EXAMPLE 2: argument frame of "decisione" (noun: "decision")

# id_frame, disc, mng, ival, fnct, opt, iprp, vcat, conn, vlex, vmdv, vtmp, vprs, vgen, vnum, vpos, vsem, vref, vrestr, lex, prf, idiom, verif

'0', '21481', '21481_01', '1', 'spc', 'T', '1', 'PP', 'di', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'source: EXE (conn)', 'decisione', 'rimettersi alle decisione di qlcu.', '0', '1'

'0', '21481', '21481_03', '1', 'spc', 'T', '1', 'PP', 'di', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'source: EXE (conn)', 'decisione', 'decisione del tribunale', '0', '1'


EXAMPLE 3: argument frame of "fedele" (adj: "faithful", "loyal")

'11200', '29318', '29318_03', '1', 'spc', 'F', '1', 'PP', 'a', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'fedele', 'che è costante nell\'amore, negli affetti, nelle proprie convinzioni', '0', '0'

'0', '29318', '29318_05', '1', 'spc', 'T', '1', 'PP', 'a', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'source: EXE (conn)', 'fedele', 'fedele alla parola data, agli amici', '0', '1'

'0', '29318', '29318_06', '1', 'spc', 'T', '1', 'PP', 'a', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'source: PRF (conn)', 'fedele', 'Conforme all\'originale o al vero (anche con la prep. a)', '0', '1'

'0', '29318', '29318_08', '1', 'spc', 'T', '1', 'PP', 'di', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'source: EXE (conn)', 'fedele', 'fare un quadro fedele della situazione', '0', '1'

'0', '29318', '29318_12', '1', 'spc', 'T', '1', 'PP', 'di', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'source: EXE (conn)', 'fedele', 'i fedele del re, del Milan', '0', '1'


EXAMPLE 4: some argument frames of "vedere" (verb: "see")

'33277', '84807', '84807_01', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', 'ANIMATE|PERSON|ANIMAL', '0', '0', 'vedere', 'Percepire qlcu. o qlco. mediante la facoltà della vista', '0', '0'

'33277', '84807', '84807_01', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'Percepire qlcu. o qlco. mediante la facoltà della vista', '0', '0'

'33277', '84807', '84807_01', '3', 'arg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', 'PERCEPTION|THING|PERSON|EVENT', '0', '0', 'vedere', 'Percepire qlcu. o qlco. mediante la facoltà della vista', '0', '0'


'33296', '84807', '84807_23', '3', 'arg', 'T', '2', 'Finterr', 'chi|che cosa|cosa|quando|perché', '0', '1|2|3', '0', '0', '0', '0', '0', 'EVENT', '0', '0', 'vedere', 'Prendere in esame, osservare qlco.', '0', '1'

'33297', '84807', '84807_24', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', 'PERSON', '0', '0', 'vedere', 'considerare, controllare qlco.', '0', '0'

'33297', '84807', '84807_24', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'considerare, controllare qlco.', '0', '0'

'33297', '84807', '84807_24', '3', 'arg', 'T', '1', 'NP', '0', '0', '1|2|3', '0', '0', '0', '0', '0', 'THING', '0', '0', 'vedere', 'considerare, controllare qlco.', '0', '0'


'33307', '84807', '84807_34', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'seguita da frase, esprime atteggiamento di cautela, di sospensione del giudizio o anche di sfida e richiesta di verifica', '1', '0'

'33307', '84807', '84807_34', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'seguita da frase, esprime atteggiamento di cautela, di sospensione del giudizio o anche di sfida e richiesta di verifica', '1', '0'

'33307', '84807', '84807_34', '3', 'arg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'seguita da frase, esprime atteggiamento di cautela, di sospensione del giudizio o anche di sfida e richiesta di verifica', '1', '0'


'33318', '84807', '84807_52', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'Visitare, guardare qlco.', '0', '0'

'33318', '84807', '84807_52', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'Visitare, guardare qlco.', '0', '0'

'33318', '84807', '84807_52', '3', 'arg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', 'THING', '0', '0', 'vedere', 'Visitare, guardare qlco.', '0', '0'

'33319', '84807', '84807_53', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'assistere a qlco.', '0', '0'

'33319', '84807', '84807_53', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'assistere a qlco.', '0', '0'

'33319', '84807', '84807_53', '3', 'arg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'assistere a qlco.', '0', '0'

'33320', '84807', '84807_54', '1', 'sogg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'Incontrare qlcu.', '0', '0'

'33320', '84807', '84807_54', '2', 'v', 'F', '1', 'VP', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'vedere', 'Incontrare qlcu.', '0', '0'

'33320', '84807', '84807_54', '3', 'arg', 'F', '1', 'NP', '0', '0', '0', '0', '0', '0', '0', '0', 'PERSON', '0', '0', 'vedere', 'Incontrare qlcu.', '0', '0'




ATTACHMENT 3. SYNTAGMA patterns: examples. Daniel Christen (www.semasia.ch), October 2019.


SYNTAGMA parser (Daniel Christen, www.semasia.ch)

Example of Syntactic Patterns. Language: ITALIAN.


Data structure:

pattern_id, tag, (subcat), (dependencies), (function), {restrictions} // comment (non read by the parser)


The tag for terminal constituents consists mostly in a number, which is the 'id' of a fine-graned classification of

Closed Class elements (articles, prepositions, conjunctions, pronouns....) stored in Syntagma's Lexical db.


The original list of patterns (about 650 lines) covers (almost) all possible sentence structures of the target language.


[...]

502,NP,(NUMBER)

503,NP,(Det,NUMBER),(2,0),(det,0),,,

505,NP,(SYMBOL)

506,NP,(Det,SYMBOL),(2,0),(det,0),,,

602,NP,(Pron1)

603,NP,(N)

605,NP,(PronImp) // Pronome imperonale "si"/"se"

606,NP,(Pro) // NP=PRO: formato da soggetto inespresso (PRO)

608,NP,(Det,EName,670),(2,0,2),(det,0,exp), // Costrutti con nome cancellato (Empty Name) seguiti da numerale: "le [ore] sei": con 670=numerale(due, tre, ....),,,

609,NP,(Det,EName,671),(2,0,2),(det,0,exp), // Costrutti con nome cancellato (Empty Name) seguiti da numerale: "il [x] primo": con 671=ordinale (primo, secondo, terzo, ....),,

610,NP,(Qnt,EName),(2,0),(det,0) // Costrutti con quantificatore in funzione di pronome: "ne sono arrivati venti/più di venti/oltre venti", "più di venti hanno rinunciato",)

612,NP,(Det,670,N),(3,3,0),(det,exp,0) // Det + Agg numerale cardinale

613,NP,(Det,671,N),(3,3,0),(det,exp,0) // Det + Agg ordinale

630,NP,(NP,SYMBOL),(0,1),(0,exp),{(T(CT=1) R(CAT#pro), R(CAT#trace))}


741,Aux1,(100,PronDat),(4,1),(v,rc){$(T(CT=1) R(LEX=essere), R(LEX=avere), R(LEX=venire)),T(CT=1) R(MDV=56)} // avergli/avendogli parlato..... aux+enclitico: con gerundio e R(DIAT=att),

742,Aux1,(100,PronAcc),(4,1),(v,ro){$(T(CT=1) R(LEX=essere), R(LEX=avere), R(LEX=venire)),T(CT=1) R(MDV=56)} // avendolo visto..... aux+enclitico: con gerundio e R(DIAT=att),

743,Aux1,(100,PronPart),(4,1),(v,ro){$(T(CT=1) R(LEX=essere), R(LEX=avere), R(LEX=venire)),T(CT=1) R(MDV=56)} // avendone preso..... aux+enclitico: con gerundio e R(DIAT=att),

749,Aux1,(100,PronDat,PronAcc),(4,1,1),(v,rc,ro),{$(T(CT=1) R(LEX=essere), R(LEX=avere), R(LEX=venire)),T(CT=1) R(MDV=56))} // avendoglielo/averglielo dato..... aux+enclitico

761,Aux1,(Aux1,Sep01,AdvP,Sep01),(0,3,1,3),(0,sep,exp,sep)// Aux+EXP INTRUSA di FRASE con sep.

813,VP01,(Aux1,AdvP,Aux2,V),(4,4,4,0),(aux,exp,aux2,v),{(T(CT=1) R(LEX=essere), T(CT=3) R(MDV=4))} // è/essendo/essere + sorprendentemente + stato + eletto PASS = 801 con avverbio

817,VP01,(Aux1,AdvQnt,V),(3,3,0),(aux,exp,v),{(T(CT=3) R(LEX#essere), R(LEX#avere)} // come 802 con avverbio Qnt: ha molto sofferto

821,VP01,(Aux1,NP,V),(3,3,0),(aux,sogg,v),{&(&(T(CT=1) R(LEX=avere),R(MDV=5)),(T(CT=2) R(CAT#trace), R(CAT#pro)),(T(CT=3) R(MDV=4)))} // essendo Paolo partito, avendo l'abate mangiato: sogg intruso

904,VP01,(VP01,Sep01,AdvP,Sep01),(0,3,1,3),(0,sep,exp,sep),{$(C(TAG=0F1) T(SUB_FNCT=arg) R(CAT#trace), T(SUB_FNCT=prep.arg) R(CAT#trace))} // VP+EXP INTRUSA di FRASE TRA VP e COMPL (non traccia) con sep., anche con modi non finiti

905,VP01,(VP01,Sep01,Fsub,Sep01),(0,3,1,3),(0,sep,exp,sep),{$(C(TAG=0F1) T(SUB_FNCT=arg) R(CAT#trace),

909,VP01,(VP01,PP),(0,1),(0,spc),{(T(CT=2) R(CAT#trace))} // Per es. "parlare" ha ("parlare con calma")

910,VP01,(VP01,AdvQnt),(0,1),(0,exp),{(T(CT=1) R(LEX#essere), R(LEX#avere)}

1001,VP,(VP01,NP,PP,PP),(0,1,1,1),(v,arg,prep.arg,prep.arg),{(T(CT=1) R(DIAT=att),R(TRN=2))}// s porta y da z a w

1002,VP,(VP01,PP,PP),(0,1,1),(v,prep.arg,prep.arg),{(T(CT=1) R(DIAT=att))} // sogg va da x a y

1003,VP,(VP01,PP,NP),(0,1,1),(v,prep.arg,arg),{(T(CT=1) R(DIAT=att),R(TRN=2))} // sogg regala all'abate un libro / l'abate lascia agli esseri umani la libertà di ridere,,,

1005,VP,(VP01,NP,NP),(0,1,1),(v,arg,compl.pred),{(T(CT=1) R(DIAT=att),$(T(CT=2) R(CAT=201),R(DET=T)))}, // compl.predicativo ATT: Il popolo considera il re un tiranno / Paolo ritiene Luigi un // cretino /Anche gerundio passato:

1006,VP,(VP01,NP,NP),(0,1,1),(v,compl.pred,arg),{(T(CT=1) R(DIAT=att),$(T(CT=3) R(CAT=201),R(DET=T)))}, // compl.predicativo ATT: Il popolo nomina re il papa /Anche gerundio passato:


1072,VP,(PronAcc,VP01,PP,PP),(2,0,2,2),(arg,v,prep.arg,prep.arg),{(T(CT=2) R(MDV=123))} // PROCLITICI + V. MODO FINITO + ... lo porta/ha portato da x a y

1073,VP,(PronAcc,VP01,PP),(2,0,2),(arg,v,prep.arg),{(T(CT=2) R(MDV=123))} // PROCLITICI + V. MODO FINITO + ... lo regala/aveva regalato a y

1074,VP,(PronDat,VP01,NP),(2,0,2),(prep.arg,v,arg),{(T(CT=2) R(MDV=123))} // PROCLITICI + V. MODO FINITO + ... gli regala/avesse regalato il libro

1086,VP,(VP01,NP,Farg),(0,1,1),(v,rs_arg,prep.arg),{(T(CT=1) R(CTRL=F), T(CT=3) R(MDV=3))} // sogg prega l'abate che canti ,,,

1087,VP,(VP01,PP,Farg),(0,1,1),(v,rs_prep.arg,arg),{(T(CT=1) R(CTRL=F), T(CT=3) R(MDV=3))} // sogg ordina/chiede all'abate che parta ,,,

1098,VP,(PronAcc,VP01,Farg),(3,0,2),(rs,v,arg),{(T(CT=1) R(MDV=6), T(CT=3) R(MDV=6))} // F con antecedente di sogg (rs): il papa lo vuole sentir Pro=rs cantare

1099,VP,(PronDat,PronAcc,VP01,Farg),(4,4,0,3),(rs,ro,v,arg),{(T(CT=4) R(MDV=6), R(CTRL=F))} // F con antecedente di sogg (rs) e di arg (ro): il papa glielo vede regalare; il papa glielo vuole veder Pro=rs prendere [arg=ro]; rende conto del fatto che la frase è ambigua con gli[rc]: pattern 1097

1153,VP,(VP01,Trace,Trace),(0,1,1),(v,arg,prep.arg),{(T(CT=1) R(MDV=6))} // VP inf con tracce

1155,VP,(VP01,Trace),(0,1),(0,arg)

1165,VP,(VP01,NP,Trace),(0,1,1),(v,arg,compl.pred),{(T(CT=1) R(TRN=2))} // VP inf con tracce; infinitva e rel.

1171,VP,(Neg,VP),(2,0),(neg,0)

1390,(EN),VP01,(verb),(0),(v)// ENGLISH DICT aux + verb

1391,(EN),VP01,(aux),(0),(v) // ENGLISH DICT: do è anche verbo, non solo ausiliare!

1436,AdjP,(AdjP1,Farg),(0,1),(0,spc) // sicuro di prendere un buon voto / sicuro che la faccenda si concluderà bene

1437,AdjP,(AdjP1) // AdjP (generico AdjP1 o AdjP2) serve come compl.pred

1439,AdjComp,(311,AdjP1,PP),(2,0,1),(exp,0,comparative),{$(T(CT=1) R(LEX=più),R(LEX=meno)), $(T(CT=3) R(CONN=di), R(CONN=che))} // più/meno + Adj + di SP (comparazione),,

1615,NP,(NP,0F1rel),(0,1),(0,rel),{(T(CT1) R(CAT#pro), R(CAT#trace), R(CAT#526), T(FNCTX=rs) R(TAGS#PronRel1))} // ExpNP=Rel: la casa che vedi, la casa abitata da Colombo

1616,NP,(NP,Farg),(0,1),(0,spc),{(T(CT=1) R(CAT#pro), R(CAT#trace), R(CAT#526), T(CT=2) R(MDV=6), R(TRACE_SAT=T))}

1631,NP,(630,NP),(2,0),(exp,0)/ / "alcune pecore", "niente pioggia" , "niente voglia di uscire"(DiSC)

1632,NP,(630,800,AdjP),(0,1,1),(0,conn,exp),{(T(CT=2) R(LEX=di))} // niente di interessante; nulla di buono

1744,PP,(PP,CngCoord01,Gap,NP),(0,4,4,0),(0,ccoord,conn,0),{(T(CT=3) R(CAT#pro), R(CAT#trace))} //&PP con cancellazione della prep (GAP)

2001,0F1,(NP,VP),(2,0),(sogg,v),{(T(CT=2) R(MDV=1236), R(DIAT=att))} //

2004,0F1,(VP,PP),(2,0,2),(v,agnt),{(T(CT=2) R(MDV=6), R(DIAT=att), R(TRN=2), T(CT=3) R(CONN=a), &(L(LVL=1) C(TAG=0F1) T(FNCT=v) R(SEM=CAUS)))} // il papa fa stracciare un libro all'abate [ragnt] | // sogg fa riparare l'auto a un meccanico | la donna fa lavare i capelli all'abate |

2007,0F1,(PronDat,VP,NP),(2,0,2),(prep.arg,v,spstv),{(T(CT=1) R(MDV=123), R(DIAT=att),R(INC=T),R(RFL=0))} // Gli occorre un vestito elegante; mi sembra una brutta faccenda : V impersonale con Sogg post // verbale postverbale

2008,0F1,(PP,VP,NP),(2,0,2),(prep.arg,v,spstv),{(T(CT=1) R(MDV=123), R(DIAT=att),R(INC=T),R(RFL=0))} // a Paolo occorre un vestito elegante; a Paolo sembra un grosso errore : V impersonale con Sogg // post verbale postverbale

2010,0F1,(PP,VP,Farg),(2,0,2),(rs_prep.arg,v,spstv),{(T(CT=1) R(MDV=123), R(TRN=1),R(DIAT=att),R(RFL=0))} // Al papa capita di cantare; A Paolo occorre di prendere il treno delle cinque; Frase soggettiva post // verbale postverbale con compl. di termine=agente o dativo;

2026,0F1,(Exp01,0F1),(2,0),(exp,0),{(T(CT=2) R(MDV=12))}

2027,0F1,(0F1,Sep01,Exp01),(0,3,1),(0,sep,exp),{(T(CT=3) R(MDV#4), R(TRACE_SAT=T), $(T(CT=2) R(MDV#6), R(CONN=prep)))}

2028,0F1,(0F1,Exp01),(0,1),(0,exp),{(T(CT=2) R(MDV#4), R(TRACE_SAT=T), $(T(CT=2) R(MDV#6), R(CONN=prep)))}

2041,0F1,(NP,Gap),(2,0),(sogg,v),{(T(CT=1) R(CAT#pro), R(CAT#trace))} //Ellissi del predicato

2051,(EN),0F1,(800_to,0F1),(2,0),(conn,0),{(T(CT=2) R(MDV=6))}

2101,0F1,(xxxxxxxxFabs,&F1),(0,0),(0,0)

2102,0F1,(0F1,CngCoord01,0F1),(0,3,0),(0,ccoord,0) // virgola, "e", "o"....

2103,0F1,(0F1,CngCoord04,0F1),(0,3,0),(0,ccoord,0) // "ma"

2212,0F1rel,(PronRel2,0F1),(2,0),(rs,0),{(T(CT=2) R(MDV=123),R(SUBJ=pro), R(SUB_FNCT=sogg))} // REL: Il PronRel è antecedente di una traccia PRO con function 'sogg' (sogg sub coreferente con sogg reggente):l'abate che vuole torturare il papa abbaia. / l'abate che vuole poter Torturare il papa abbaia. Ho tolto la restrizione (T(CT=2) T(FNCT=sogg) R(CAT=pro)), per altrimenti impedisce: ..che[rs] il papa sente cantare; Ho aggiunto la restrizione R(SUB_FNCT=sogg) per impedire che 'rs' diventi antecedente di 'pat'


2213,0F1rel,(PronRel2,0F1),(2,0),(ro,0),{(T(CT=2) R(MDV=123),R(GTRACE=arg))} // REL: il poeta che[ro] sogg incontra arg=Trace; ro può essere antecedente di pat in frasi passive

2215,0F1rel,(PPrel,0F1),(2,0),(rc,0),{(T(CT=2) R(MDV=123), R(GTRACE=prep.arg))} // REL: a cui [rc] sogg regala Trace un libro

2219,0F1rel,(PronRel0,0F1)(2,0),(rs,0),{(T(CT=2) R(MDV=4),R(DIAT=att),R(SUBJ=pro))} // REL: Participiale attiva; PronRel0 per relative participiali: in modo che superino il test refe_tracce

2220,0F1rel,(PronRel0,0F1),(2,0),(ro,0),{(T(CT=2) R(MDV=4),R(DIAT=pass),R(GTRACE=ro))} // REL: Participiale passiva (relative participiali passive: ammesso anche PP agnt=Trace, cioè agnt indef); PronRel0 per relative participiali: in modo che superino il test refe_tracce

2222,0F1rel,(NPr,0F1),(2,0),(rs,0),{(T(CT=2) R(MDV=123), R(SUBJ=pro), R(SUB_FNCT=sogg))} // REL: "... il cui libro è bello"; ; Ho aggiunto la restrizione R(SUB_FNCT=sogg) per impedire che 'rs' diventi antecedente di 'pat'

2223,0F1rel,(NPr,0F1),(2,0),(ro,0),{(T(CT=2) R(MDV=123), R(GTRACE=arg))} //"... il cui libro l'abate ha letto";

2230,0F1rel,(0F1rel,CngCoord01,0F1rel),(0,3,0),(0,ccoord,0) // "e, né, Restrizione verificata in Ufilter_coord.pas

2231,0F1rel,(Sep01,0F1rel,Sep01),(2,0,2),(sep,0,sep)

2301,0Fint,(PronInt1,0F1),(2,0),(rs,0),{(T(CT=2) R(MDV=1236), R(SUBJ=pro))}

2521,Farg,(CngSub3,0F1),(2,0),(conn,0) // che + 0F1,,,

2522,Farg,(Prep,0F1),(2,0),(conn,0),{(T(CT=2) R(MDV=6), $(T(CT=1) R(LEX=di),R(LEX=a)))}

2524,Farg,(0F1),{(T(CT=1) R(MDV=6))}

2525,Farg,(Farg,CngCoord01,Farg),(0,3,0),(0,ccoord,0)

3301,Excl,(AdjP,16),(0,2),(0,sep) // Esclamazione con Agg: "fantastico!" "geniale!"

3302,Excl,(AdvP,16),(0,2),(0,sep) // Esclamazione con Agg: "bene!"

3303,Excl,(NP,16),(0,2),(0,sep) // Esclamazione con Agg: "merda!" "un bolide!" "un genio!"

3304,Excl,(VP,16),(0,2),(0,sep),{(T(CT=1) R(MDV=6))} // Esclamazione con Agg: "correre!"

4001,XF,(760,0F1),(2,0),(0,0) // Cng. testuale + F1

4002,XF,(0F1,Sep21),(0,1),(0,sep),{(T(CT=1) R(MDV=123))}