************** FRASE NEWS-1 **************

 ( (S
    (VP (VMA~PA Bruciata)
        (NP-EXTPSBJ-233
            (NP (ART~DE la) (NOU~CS sede))
            (PP (PREP del)
                (NP (ART~DE del) (NOU~CS partito) (ADJ~QU democratico))))
          (CONJ mentre)
          (S
              (NP-SBJ (ART~DE i) (NOU~CP reparti) (ADJ~QU antisommossa))
              (NP (PRO~RI si))
              (VP (VAU~RE sono)
                  (VP (VMA~PA ritirati)
                      (PP-LOC (PREP dalla)
                          (NP (ART~DE dalla) (NOU~CA citta')))))))
           (NP-SBJ (-NONE- *-233))
           (. .)) )


************** FRASE NEWS-2 **************

 ( (S
    (NP-SBJ (NOU~PR Valona))
    (VP (-NONE- *)
        (PP-PRD (PREP IN_MANO_A)
            (NP (ART~DE ai) (NOU~CP dimostranti))))
      (. .)) )


************** FRASE NEWS-3 **************

 ( (S
    (VP (VMA~RE Slitta)
        (PP-LOC (PREP a)
            (NP (NOU~PR Tirana)))
         (NP-EXTPSBJ-433
             (NP (ART~DE la) (NOU~CS decisione))
             (PP (PREP sullo)
                 (NP
                     (NP (ART~DE sullo) (NOU~CS stato))
                     (PP (PREP di)
                         (NP (NOU~CS emergenza)))))))
          (NP-SBJ (-NONE- *-433))
          (. .)) )


************** FRASE NEWS-4 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Il) (NOU~CS Governo))
        (PP (PREP di)
            (NP (NOU~PR Berisha))))
      (VP (VMA~RE appare)
          (PP-PRD (PREP in)
              (NP (NOU~CA difficolta'))))
        (. .)) )


************** FRASE NEWS-5 **************

 ( (S
    (VP (VMA~RE Ha)
        (NP (ART~IN un) (NOU~CS nome) (ADJ~QU dolce))
        (NP-EXTPSBJ-533
            (NP (ART~DE l') (ADJ~OR ultima) (NOU~CS tappa))
            (PP-LOC (PREP prima)
                (PP (PREP di)
                    (S
                        (VP (VMA~IN entrare)
                            (PP-LOC (PREP a)
                                (NP (NOU~PR Valona))))
                          (NP-SBJ (-NONE- *)))))))
           (NP-SBJ (-NONE- *-533))
           (. .)) )


************** FRASE NEWS-6 **************

 ( (NP (ART~DE La)
    (NP
        (NP (NOU~CS Collina))
        (PP (PREP degli)
            (NP (ART~DE degli) (NOU~CP Ulivi)))
         (, ,)
         (NP
             (PP (PREP in)
                 (NP (NOU~CS albanese))) (NOU~PR Chafa) (NOU~PR Kushojviz)))
        (. .)) )


************** FRASE NEWS-7 **************

 ( (S
    (S
        (NP-SBJ (PRO~DE Questa))
        (VP (VMA~RE e')
            (ADVP-TMP (ADVB ancora))
            (' ')
            (NP-PRD
                (NP (NOU~CS terra))
                (PP (PREP di)
                    (NP (PRO~ID nessuno))))
              (' ')))
        (, ,)
        (S
            (ADVP-LOC (ADVB sotto))
            (PRN
                (, ,)
                (PP (PREP sulla)
                    (NP (ART~DE sulla)
                        (NP (NOU~CS discesa))
                        (SBAR
                            (NP-1333 (PRO~RE che))
                            (S
                                (NP-SBJ (-NONE- *-1333))
                                (VP (VMA~RE schiude)
                                    (NP (ART~DE l') (NOU~CS orizzonte))
                                    (PP (PREP al)
                                        (NP (ART~DE al) (NOU~CS mare))))))))
                      (, ,))
                   (NP-LOC (PRO~LO ci))
                   (VP (VMA~RE sono)
                       (NP-EXTPSBJ-
                           (NP-2333 (NOU~CP barricate))
                           (, ,)
                           (NP
                               (NP (NOU~CP bagliori))
                               (PP (PREP di)
                                   (NP (NOU~CP fuochi)))
                                (CONJ e)
                                (NP (NOU~CS gente) (ADJ~QU inferocita)))))
                       (NP-SBJ (-NONE- *-2333)))
                    (. .)) )


************** FRASE NEWS-8 **************

 ( (S
    (S
        (NP-SBJ (NOU~PR Valona))
        (VP (VMA~RE e')
            (PP-PRD (PREP IN_MANO_A)
                (NP (ART~DE alla) (NOU~CS folla)))
             (, ,)
             (PP (PREP fuori)
                 (PP (PREP da)
                     (NP (ADJ~IN ogni) (NOU~CS controllo))))))
         (, ,)
         (S
             (NP-SBJ-1333 (ART~DE la) (NOU~CS polizia))
             (VP (VAU~RE e')
                 (VP (VMA~PA scomparsa)
                     (, ,)
                     (S-PRD
                         (VP (VMA~PA rintanata)
                             (PP (PREP nelle)
                                 (NP (ART~DE nelle) (NOU~CP caserme))))
                           (NP-SBJ (-NONE- *-1333))))))
               (. .)) )


************** FRASE NEWS-9 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Lo) (NOU~CS stato))
        (PP (PREP di)
            (NP (NOU~CS emergenza))))
      (VP (VMA~RE e')
          (PP-LOC (PREP nei)
              (NP (ART~DE nei) (NOU~CP fatti))))
        (. .)) )


************** FRASE NEWS-10 **************

 ( (S
    (S
        (NP-SBJ
            (NP (ART~DE I) (NOU~CP posti))
            (PP (PREP di)
                (NP (NOU~CS blocco))))
          (VP (VMA~RE cominciano)
              (PP (PREP ad)
                  (NP
                      (NP (ADVB appena) (NUMR 60) (NOU~CP-933 chilometri))
                      (PP (PREP dalla)
                          (NP (ART~DE dalla) (NOU~CS capitale)))))))
           (CONJ e)
           (S
               (PP (PREP negli)
                   (NP
                       (NP (NUMR 80))
                       (NP (ART~DE negli) (ADJ~DI altri) (-NONE- *-933))
                       (PP (PREP di)
                           (NP
                               (NP (NOU~CP strade) (ADJ~QU infami))
                               (PP (PREP fra)
                                   (NP (NOU~PR Tirana)
                                       (CONJ e)
                                       (NP
                                           (NP (ART~DE il) (NOU~CS porto))
                                           (PP (PREP sull')
                                               (NP (ART~DE sull') (NOU~PR Adriatico))))))))))
                       (NP (PRO~RI si))
                       (VP (VMA~RE toccano)
                           (NP
                               (NP (PRDT tutte) (ART~DE le) (NOU~CP stazioni))
                               (PP (PREP della)
                                   (NP (ART~DE della) (NOU~CS rivolta) (ADJ~QU albanese))))))
                       (. .)) )


************** FRASE NEWS-11 **************

 ( (NP (NOU~PR Kavaje)
    (, ,)
    (NP (NOU~PR Lushinje)
        (, ,)
        (NP (NOU~PR Fier)
            (, ,)
            (NP
                (NP (ADJ~IN ogni) (NOU~CA citta'))
                (PP (PREP con)
                    (NP
                        (NP (ART~DE le)
                            (' ')
                            (NP (ADJ~PO sue) (NOU~CP piramidi) (ADJ~QU finanziarie))
                            (' ')
                            (VP (VMA~PA fallite)
                                (NP (-NONE- *))))
                          (, ,)
                          (NP
                              (NP
                                  (NP (ART~DE gli) (NOU~CP assalti))
                                  (PP
                                      (PP (PREP ai)
                                          (NP (ART~DE ai) (NOU~CP municipi)))
                                       (CONJ e)
                                       (PP (PREP alle)
                                           (NP
                                               (NP (ART~DE alle) (NOU~CP stazioni))
                                               (PP (PREP di)
                                                   (NP (NOU~CS polizia)))))))
                                    (, ,)
                                    (NP
                                        (NP (ART~DE le) (NOU~CP sassaiole))
                                        (, ,)
                                        (NP (ART~DE gli) (NOU~CP incendi)))))))))
                   (. .)) )


************** FRASE NEWS-12 **************

 ( (S
    (S
        (NP-SBJ (PRO~DE Questa))
        (VP (VMA~RE e')
            (NP-PRD (ART~IN una) (NOU~CS Repubblica) (ADJ~QU indipendente))))
      (, ,)
      (VP (VMA~RE urlano)
          (NP-EXTPSBJ-833 (ART~DE i)
              (NP (NOU~CP valonesi))
              (VP (VMA~PA trincerati)
                  (NP (-NONE- *))
                  (PP-LOC (PREP dietro)
                      (NP
                          (NP
                              (NP (NOU~CP carcasse))
                              (PP (PREP di)
                                  (NP
                                      (NP (NOU~CA auto))
                                      (VP (VMA~PA rovesciate)
                                          (NP (-NONE- *))))))
                              (, ,)
                              (NP
                                  (NP-1733 (NOU~CP bidoni))
                                  (CONJ e)
                                  (NP1
                                      (NP (NOU~CP travi))
                                      (PP (PREP di)
                                          (NP (NOU~CS legno)))
                                       (VP (VMA~PA affastellate)
                                           (NP (-NONE- *))
                                           (PP (PREP per)
                                               (S
                                                   (VP (VMA~IN bloccare)
                                                       (NP (ART~DE la) (NOU~CS strada)))
                                                    (NP-SBJ (-NONE- *-1733))))))))))))
                      (NP-SBJ (-NONE- *-833))
                      (. .)) )


************** FRASE NEWS-13 **************

 ( (S
    (ADVP (ADVB Non))
    (NP (PRO~RI si))
    (VP (VMA~RE passa))
    (. .)) )


************** FRASE NEWS-14 **************

 ( (S
    (VP (VMA~RE Piovono)
        (NP-EXTPSBJ-233
            (NP (NOU~CP pietre))
            (CONJ e)
            (NP (NOU~CP insulti)))
         (, ,)
         (PP (ADVB anche) (PREP contro)
             (NP
                 (NP (ART~DE gli) (NOU~CP stranieri))
                 (CONJ e)
                 (NP (ART~DE gli) (NOU~CP italiani)))))
        (NP-SBJ (-NONE- *-233))
        (. .)) )


************** FRASE NEWS-15 **************

 ( (S
    (PP (PREP Dalla)
        (NP
            (NP (ART~DE Dalla) (NOU~CS rabbia))
            (PP (PREP dei)
                (NP (ART~DE dei) (NOU~CP valonesi)))))
       (ADVP (ADVB non))
       (NP (PRO~RI si))
       (VP (VMA~RE salva)
           (NP-EXTPSBJ-833
               (NP (PRO~ID niente))
               (CONJ e)
               (NP (PRO~ID nessuno))))
         (NP-SBJ (-NONE- *-833))
         (. .)) )


************** FRASE NEWS-16 **************

 ( (S
    (ADVP (ADVB Ieri))
    (VP (VAU~RE e')
        (VP (VMA~PA caduto)
            (NP-EXTPSBJ-433
                (NP (ART~DE l') (ADJ~OR ultimo) (NOU~CS palazzo))
                (PP (PREP del)
                    (NP (ART~DE del) (NOU~CS potere)))
                 (ADJP (ADVB ancora) (ADJ~QU intatto))
                 (, ,)
                 (NP
                     (NP (ART~DE la) (NOU~CS sede) (ADJ~QU locale))
                     (PP (PREP del)
                         (NP
                             (NP (ART~DE del) (NOU~CS Partito) (ADJ~QU democratico))
                             (PP (PREP del)
                                 (NP (ART~DE del) (NOU~CS presidente)
                                     (NP (NOU~PR Sali) (NOU~PR Berisha))))))))))
             (NP-SBJ (-NONE- *-433))
             (. .)) )


************** FRASE NEWS-17 **************

 ( (S
    (NP-SBJ (PRO~ID Tutto))
    (VP (VAU~RE e')
        (VP (VMA~PA cominciato)
            (PP (PREP con)
                (NP
                    (NP (ART~DE i) (NOU~CP funerali))
                    (PP (PREP di)
                        (NP (NOU~PR Artur) (NOU~PR Rustemi)
                            (PRN
                                (, ,)
                                (NP (NUMR 30) (NOU~CP anni))
                                (, ,))
                             (NP
                                 (NP (PRO~ID uno))
                                 (PP (PREP dei)
                                     (NP
                                         (NP (NUMR due))
                                         (NP (ART~DE dei) (NOU~CP morti))
                                         (PP (PREP nella)
                                             (NP
                                                 (NP (ART~DE nella) (NOU~CS rivolta))
                                                 (PP (PREP di)
                                                     (NP (NOU~CA lunedi'))))))))))))
                       (, ,)
                       (CONJ quando)
                       (S
                           (PP-TMP (PREP dopo)
                               (NP
                                   (NP (ART~DE il) (NOU~CS linciaggio))
                                   (PP (PREP di)
                                       (NP
                                           (NP (ART~IN una) (NOU~CS ventina))
                                           (PP (PREP di)
                                               (NP (NOU~CP poliziotti)))))))
                                (VP (VAU~RE e')
                                    (VP (VMA~PA arrivata)
                                        (NP-EXTPSBJ-3433
                                            (NP (ART~DE la) (NOU~CS vendetta))
                                            (PP (PREP delle)
                                                (NP (ART~DE delle) (NOU~CP squadre) (ADJ~QU antisommossa))))))
                                    (NP-SBJ (-NONE- *-3433)))))
                           (. .)) )


************** FRASE NEWS-18 **************

 ( (S
    (CONJ Ma)
    (S
        (ADVP (ADVB ieri))
        (NP (ART~DE la)
            (NP (NOU~CS folla)) (S+REDUC
                (VP (-NONE- *-1933))))
          (VP (VMA~IM aveva)
              (NP (NOU~CS campo) (ADJ~QU libero)))
           (NP-SBJ (-NONE- *-333)))
        (CONJ e)
        (S
            (NP (PRO~RI si))
            (VP (VAU~RE e')
                (VP (VMA~PA sfogata)
                    (PP (PREP contro)
                        (NP
                            (NP (ADJ~IN ogni) (NOU~CS simbolo))
                            (PP (PREP del)
                                (NP (ART~DE del) (NOU~CS potere) (ADJ~QU centrale)))))
                       (, ,)
                       (S
                           (S
                               (VP-1933 (VMA~PA inviperita)
                                   (NP (-NONE- *))
                                   (PP (PREP per)
                                       (NP
                                           (NP (ART~DE i) (NOU~CP morti))
                                           (CONJ e)
                                           (NP (ART~DE i) (NOU~CP feriti)))))
                                  (NP-SBJ-19.1033 (-NONE- *-433)))
                               (, ,)
                               (S
                                   (VP (VMA~PA eccitata)
                                       (PP-LGS (PREP dalle)
                                           (NP
                                               (NP (ART~DE dalle) (NOU~CP dichiarazioni))
                                               (PP (PREP della)
                                                   (NP (ART~DE della) (NOU~CS famiglia) (NOU~PR Rustemi)
                                                       (, ,)
                                                       (NP
                                                           (NP (PRO~ID una))
                                                           (PP
                                                               (PP (PREP di)
                                                                   (NP
                                                                       (NP (PRO~DE quelle))
                                                                       (ADJP (ADVB piu') (ADJ~QU IN_VISTA)
                                                                           (PP (PREP in)
                                                                               (NP (NOU~CA citta'))))))
                                                                   (CONJ e)
                                                                   (S
                                                                       (NP-SBJ (PRO~RE che))
                                                                       (VP (VMA~RE vanta)
                                                                           (NP
                                                                               (NP (ART~IN una) (ADJ~QU lontana) (NOU~CS parentela))
                                                                               (PP (PREP con)
                                                                                   (NP (NOU~PR Avni) (NOU~PR Rustemi)
                                                                                       (, ,)
                                                                                       (NP
                                                                                           (NP (NOU~CS rivoluzionario))
                                                                                           (PP (PREP degli)
                                                                                               (NP (ART~DE degli) (NOU~CP anni)
                                                                                                   (NP (NUMR 20))))
                                                                                             (VP (VMA~PA assassinato)
                                                                                                 (NP (-NONE- *))
                                                                                                 (PP-TMP (PREP dopo)
                                                                                                     (NP
                                                                                                         (NP (ART~IN una) (NOU~CS sommossa))
                                                                                                         (PP (PREP contro)
                                                                                                             (NP (NOU~PR Re) (NOU~PR Zog)))))))))))))))))))
                                                          (NP-SBJ (-NONE- *-19.1033))))))
                                              (NP-SBJ (-NONE- *-333)))
                                           (. .)) )


************** FRASE NEWS-19 **************

 ( (S
    (S
        (NP-SBJ (ADJ~PO Mio) (NOU~CS fratello))
        (VP
            (VP
                (VP (VAU~RE e')) (VAU~PA stato)) (VMA~PA ucciso)
             (VP (-NONE- *-2133))
             (PP (PREP alle)
                 (NP (ART~DE alle) (NOU~CP spalle)))))
        (PUNCT -)
        (VP (VAU~RE ha)
            (VP (VMA~PA dichiarato)
                (NP-EXTPSBJ-1133 (NOU~PR Cezair) (NOU~PR Rustemi))
                (PUNCT -)
                (S
                    (NP-SBJ
                        (NP (ART~DE le) (NOU~CP poltrone))
                        (PP
                            (PP (PREP di)
                                (NP (NOU~PR Berisha)))
                             (CONJ e)
                             (PP (PREP dei)
                                 (NP (ART~DE dei) (PRO~PO suoi)))))
                        (VP-2133 (VMA~RE affondano)
                            (PP (PREP nel)
                                (NP
                                    (NP (ART~DE nel) (NOU~CS sangue))
                                    (PP (PREP dei)
                                        (NP (ART~DE dei) (ADJ~PO nostri) (NOU~CP morti)))))))))
                   (NP-SBJ (-NONE- *-1133))
                   (. .)) )


************** FRASE NEWS-20 **************

 ( (S
    (S
        (NP-SBJ-133 (NOU~PR Valona)
            (NP (ART~DE la) (NOU~CS ribelle)))
         (ADVP (ADVB non))
         (NP (PRO~RI si))
         (VP (VMA~RE piega)
             (PP
                 (PP (PREP a)
                     (NP (NOU~PR Berisha)))
                  (CONJ e)
                  (PP (ADVB neppure) (PREP ai)
                      (NP (ART~DE ai) (NOU~CP manganelli))))))
          (, ,)
          (S
              (S
                  (ADVP (ADVB non))
                  (VP (VMA~RE crede)
                      (PP (PREP alle)
                          (NP
                              (NP (ART~DE alle) (NOU~CP promesse))
                              (PP (PREP di)
                                  (NP (NOU~CS rimborso)))
                               (PP (PREP del)
                                   (NP (ART~DE del) (NOU~CS Governo))))))
                       (NP-SBJ-15.1033 (-NONE- *-133)))
                    (, ,)
                    (S
                        (VP (VMO~RE vuole)
                            (S
                                (VP (VMA~IN regolare)
                                    (PP
                                        (PP (PREP da)
                                            (NP (PRO~RI se')))
                                         (CONJ e)
                                         (PP (PREP alla)
                                             (NP (ART~DE alla) (ADJ~PO sua) (NOU~CS maniera))))
                                       (NP
                                           (NP (ART~DE i) (NOU~CP conti))
                                           (PP (PREP in) (ADJ~QU rosso))
                                           (VP (VMA~PA lasciati)
                                               (NP (-NONE- *))
                                               (PP-LGS (PREP dalle)
                                                   (NP (ART~DE dalle)
                                                       (NP (NOU~CP finanziarie))
                                                       (VP (VMA~PA fallite)
                                                           (NP (-NONE- *))))))))
                                         (NP-SBJ (-NONE- *-23.1033))))
                                   (NP-SBJ-23.1033 (-NONE- *-15.1033))))
                             (. .)) )


************** FRASE NEWS-21 **************

 ( (ADVP
    (CONJ Ma) (ADVB come)
    (. ?)) )


************** FRASE NEWS-22 **************

 ( (S
    (ADVP (ADVB Qui))
    (NP (PRO~RI si))
    (VP (VAU~RE e')
        (VP (VMA~PA aperto)
            (NP-EXTPSBJ-533
                (NP (ART~IN un)
                    (" ") (NOU~CS buco)
                    (" "))
                 (PP (PREP di)
                     (NP
                         (NP (ADVB almeno) (NUMR 300) (NOU~CP milioni))
                         (PP (PREP di)
                             (NP
                                 (NP (NOU~CP dollari))
                                 (VP (VMA~PA depositati)
                                     (NP (-NONE- *))
                                     (PP (PREP nella)
                                         (NP
                                             (NP (ART~DE nella) (NOU~CS piramide))
                                             (PP (PREP della)
                                                 (NP (ART~DE della) (NOU~PR Gjallica)
                                                     (SBAR
                                                         (S
                                                             (NP-LOC (PRO~LO dove))
                                                             (VP (VAU~RE-2133 sono)
                                                                 (VP (VMA~PA-2233 affluiti)
                                                                     (NP-EXTPSBJ-2333 (-NONE- *-)
                                                                         (NP-2333
                                                                             (NP (ART~DE i) (NOU~CP soldi)) (-NONE- *-)
                                                                             (PP (PREP dei)
                                                                                 (NP (ART~DE dei) (ADJ~QU piccoli) (NOU~CP risparmiatori))))
                                                                           (CONJ ma)
                                                                           (S
                                                                               (ADVP (ADVB soprattutto))
                                                                               (VP (-NONE- *-2133)
                                                                                   (VP (-NONE- *-2233)
                                                                                       (NP-EXTPSBJ-3033
                                                                                           (NP (NOU~CP milioni))
                                                                                           (PP (PREP di)
                                                                                               (NP
                                                                                                   (NP (NOU~CP dollari))
                                                                                                   (PP (PREP di)
                                                                                                       (NP
                                                                                                           (NP (NOU~CP affari) (ADJ~QU illeciti))
                                                                                                           (, ,)
                                                                                                           (PP (PREP dal)
                                                                                                               (NP (ART~DE dal) (NOU~CS narcotraffico))
                                                                                                               (, ,)
                                                                                                               (PP
                                                                                                                   (PP (PREP alla)
                                                                                                                       (NP (ART~DE alla) (NOU~CS prostituzione)))
                                                                                                                    (, ,)
                                                                                                                    (PP (PREP al)
                                                                                                                        (NP
                                                                                                                            (NP (ART~DE al) (NOU~CS passaggio))
                                                                                                                            (PP (PREP degli)
                                                                                                                                (NP (ART~DE degli) (NOU~CP emigranti) (ADJ~QU clandestini))))))))))))))
                                                                                            (NP-SBJ (-NONE- *-3033))))))
                                                                                (NP-SBJ (-NONE- *-2333))))))))))))))))
                                      (NP-SBJ (-NONE- *-533))
                                      (. .)) )


************** FRASE NEWS-23 **************

 ( (S
    (ADVP-LOC (ADVB Qui))
    (VP (VAU~RE sono)
        (VP (VAU~PA stati)
            (VP (VMA~PA riciclati))))
      (NP-SBJ (-NONE- *-533))
      (NP-EXTPSBJ-533
          (NP (ART~DE i) (NOU~CP dollari))
          (PP
              (PP (PREP della)
                  (NP (ART~DE della) (NOU~CS mafia) (ADJ~QU locale)))
               (, ,)
               (CONJ e)
               (PP
                   (ADVP (ADVB forse) (ADVB anche)) (PREP di)
                   (NP (PRO~DE quella) (ADJ~QU italiana)))))
          (. .)) )


************** FRASE NEWS-24 **************

 ( (S
    (S
        (NP-SBJ-133
            (NP (ART~DE L') (NOU~CS esplosione))
            (PP (PREP di)
                (NP (NOU~CS rabbia))))
          (VP (VMA~RE e')
              (ADJP-PRD (ADJ~QU genuina))))
        (CONJ ma)
        (S
            (S
                (VP
                    (VP (VAU~RE viene)
                        (ADVP (ADVB anche))) (VMA~PA ispirata))
                  (NP-SBJ (-NONE- *-133)))
               (CONJ e)
               (S
                   (VP (VMA~PA organizzata)
                       (PP-LGS-1333 (PREP da)
                           (NP
                               (NP (NOU~CP malavitosi))
                               (, ,)
                               (NP
                                   (NP (ADJ~QU ex) (NOU~CP agenti))
                                   (PP (PREP della)
                                       (NP (ART~DE della) (NOU~PR Segurimi)))
                                    (, ,)
                                    (NP (NOU~CP funzionari) (ADJ~QU corrotti))))))
                        (NP-SBJ (-NONE- *-133))))
                  (. .)) )


************** FRASE NEWS-25 **************

 ( (S
    (NP-TMP
        (NP (ADVB Gia') (ART~IN un) (NOU~CS paio))
        (PP (PREP di)
            (NP
                (NP (NOU~CP mesi) (ADJ~DI fa))
                (, ,)
                (CONJ quando)
                (S
                    (ADVP (ADVB non))
                    (NP (PRO~RI si))
                    (VP (VMA~IM parlava)
                        (ADVP-TMP (ADVB ancora))
                        (PP (PREP di)
                            (NP (NOU~CP fallimenti))))))))
          (, ,)
          (NP-SBJ (NOU~PR Berisha))
          (VP (VAU~IM aveva)
              (VP (VMA~PA fatto)
                  (ADVP (ADVB fuori))
                  (NP
                      (NP
                          (NP (ART~DE il) (NOU~CS capo))
                          (PP (PREP della)
                              (NP (ART~DE della) (NOU~CS polizia))))
                        (CONJ e)
                        (NP
                            (NP
                                (PRDT (ADVB quasi) (PRDT tutti)) (ART~DE gli) (NOU~CP ufficiali))
                             (PP (PREP delle)
                                 (NP (ART~DE delle) (NOU~CP dogane)))))))
                  (. .)) )


************** FRASE NEWS-26 **************

 ( (NP (ART~IN Un)
    (NP
        (NP (ADJ~QU brutto) (NOU~CS colpo))
        (PP (PREP per)
            (NP (ART~DE i)
                (NP (NOU~CP traffici) (ADJ~QU illegali))
                (SBAR
                    (NP-8333 (PRO~RE che))
                    (S
                        (NP-SBJ (-NONE- *-8333))
                        (VP (VMA~RE alimentano)
                            (NP
                                (NP (ART~DE il) (NOU~CS benessere))
                                (VP (VMA~PA gonfiato)
                                    (NP (-NONE- *)))
                                 (PP (PREP del)
                                     (NP (ART~DE del) (NOU~CS porto))))))))))
             (. .)) )


************** FRASE NEWS-27 **************

 ( (S
    (ADVP (ADVB Non))
    (NP-LOC (PRO~LO ci))
    (VP (VMA~RE vuole)
        (NP-EXTPSBJ-433 (ART~IN un') (NOU~CS indagine) (ADJ~QU particolare))
        (PP (PREP per)
            (S
                (VP (VMA~IN intuire)
                    (S
                        (ADVP (ADVB dove))
                        (VP (VMA~RE passano)
                            (PP (PREP in)
                                (NP (NOU~PR Albania)))
                             (NP-EXTPSBJ-1333
                                 (NP (ART~DE i) (NOU~CP canali))
                                 (PP (PREP dell')
                                     (NP (ART~DE dell') (NOU~CS economia) (ADJ~QU sommersa)))))
                            (NP-SBJ (-NONE- *-1333))))
                      (NP-SBJ (-NONE- *)))))
             (NP-SBJ (-NONE- *-433))
             (. .)) )


************** FRASE NEWS-28 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE La) (NOU~PR Blue) (NOU~PR Guide))
        (PP (PREP di)
            (NP (NOU~PR James) (NOU~PR Pettifer)))
         (PP (PREP sull')
             (NP (ART~DE sull') (NOU~PR Albania))))
       (VP (VMA~RE avverte))
       (. .)) )


************** FRASE NEWS-29 **************

 ( (S
    (S
        (NP-SBJ
            (NP (ART~DE La) (NOU~CS presenza))
            (PP (PREP del)
                (NP (ART~DE del) (NOU~CS crimine) (ADJ~QU organizzato)))
             (PP-LOC (PREP a)
                 (NP (NOU~PR Valona))))
           (VP (VMA~RE-833 e')
               (ADJP-PRD (ADJ~QU ramificata))))
         (, ,)
         (S
             (NP-SBJ
                 (NP (ART~DE la) (NOU~CS coltura))
                 (PP (PREP della)
                     (NP (ART~DE della) (NOU~CS canapa) (ADJ~QU indiana))))
               (VP (-NONE- *-833)
                   (ADJP-PRD (ADJ~QU estesa)
                       (PP-LOC (PREP in)
                           (NP (PRDT tutto) (ART~DE il) (NOU~CS distretto))))))
               (. .)) )


************** FRASE NEWS-30 **************

 ( (S
    (VP (VMA~RE Consigliamo)
        (PP (PREP ai)
            (NP-2.133 (ART~DE ai) (NOU~CP visitatori)))
         (PP (PREP di)
             (S
                 (ADVP (ADVB non))
                 (VP (VMA~IN passare)
                     (NP (ART~DE la) (NOU~CS notte))
                     (PP-LOC (PREP in)
                         (NP (NOU~CA citta')))
                      (PP (PREP senza)
                          (NP
                              (NP (ART~DE l') (NOU~CS assistenza))
                              (PP (PREP di)
                                  (NP
                                      (NP (PRO~ID qualcuno))
                                      (PP (PREP del)
                                          (NP (ART~DE del) (NOU~CS posto))))))))
                        (NP-SBJ (-NONE- *-2.133)))))
               (NP-SBJ (-NONE- *))
               (. .)) )


************** FRASE NEWS-31 **************

 ( (S
    (CONJ Ma)
    (NP-SBJ (NOU~PR Valona))
    (VP (VMA~RE e')
        (NP-PRD
            (NP (ADVB anche) (ART~DE il) (NOU~CS simbolo))
            (PP (PREP di)
                (NP
                    (NP (ART~IN una) (NOU~CS resistenza) (ADJ~QU secolare))
                    (PP (PREP a)
                        (NP
                            (NP (ADJ~IN ogni) (NOU~CS tentativo))
                            (PP (PREP di)
                                (NP (NOU~CS dominazione)))))))))
           (. .)) )


************** FRASE NEWS-32 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE La) (NOU~CS Piazza))
        (PP (PREP della)
            (NP (ART~DE della) (NOU~CS Bandiera))))
      (VP (VAU~RE e')
          (VP (VMA~PA dedicata)
              (PP (PREP a)
                  (NP (NOU~PR Ismail) (NOU~PR Kemal)
                      (, ,)
                      (NP (ART~DE il)
                          (NP (NOU~CS patriota))
                          (SBAR
                              (NP-1333 (PRO~RE che))
                              (S
                                  (NP-SBJ (-NONE- *-1333))
                                  (PP-TMP (PREP nel)
                                      (NP (ART~DE nel) (NUMR 1912)))
                                   (VP (VMA~RA proclamò)
                                       (PP (PREP per)
                                           (NP (ART~DE la) (ADJ~OR prima) (NOU~CS volta)))
                                        (NP (ART~DE l') (NOU~CS indipendenza) (ADJ~QU nazionale))
                                        (CONJ mentre)
                                        (S
                                            (NP-SBJ
                                                (NP (ART~DE il) (NOU~CS resto))
                                                (PP (PREP del)
                                                    (NP (ART~DE del) (NOU~CS Paese))))
                                              (VP (VMA~IM era)
                                                  (ADVP-TMP (ADVB ancora))
                                                  (PP-LOC (PREP sotto)
                                                      (NP
                                                          (NP (ART~DE il) (NOU~CS controllo))
                                                          (PP (PREP dell')
                                                              (NP (ART~DE dell') (NOU~CS Impero) (ADJ~QU Ottomano)))))))))))))))
                       (. .)) )


************** FRASE NEWS-33 **************

 ( (S
    (NP-SBJ (ADVB Anche) (ART~DE gli) (NOU~CP italiani))
    (VP (VAU~RE hanno)
        (VP (VMA~PA assaggiato)
            (NP
                (NP (ART~DE la) (NOU~CS reazione) (ADJ~QU velenosa))
                (PP (PREP di)
                    (NP (NOU~PR Valona)
                        (SBAR
                            (S
                                (NP (PRO~RE che))
                                (PP-TMP (PREP nel)
                                    (NP (ART~DE nel) (NUMR 1915)))
                                 (NP-SBJ
                                     (NP (ART~DE gli) (NOU~CP accordi) (ADJ~QU segreti))
                                     (PP (PREP di)
                                         (NP (NOU~PR Londra))))
                                   (NP (PRO~PE ci))
                                   (VP (VMA~RA assegnarono)
                                       (PP (PREP insieme)
                                           (PP (PREP alla)
                                               (NP
                                                   (NP (ART~DE alla) (NOU~CS base) (ADJ~QU militare))
                                                   (PP-LOC (PREP sull')
                                                       (NP
                                                           (NP (ART~DE sull') (NOU~CS Isola))
                                                           (PP (PREP di)
                                                               (NP (NOU~PR Saseno))))))))))))))))
                     (. .)) )


************** FRASE NEWS-34 **************

 ( (S
    (PP-TMP (PREP Nel)
        (NP (ART~DE Nel) (NUMR 1920)))
     (NP-SBJ (ART~DE gli) (NOU~CP occupanti) (ADJ~QU italiani))
     (PRN
         (, ,)
         (PP (PREP secondo)
             (NP (ART~DE la) (NOU~CS tradizione) (ADJ~QU popolare)))
          (, ,))
       (VP (VAU~RA vennero)
           (VP (VMA~PA buttati)
               (PP-LOC (PREP a)
                   (NP (NOU~CS mare)))
                (, ,)
                (CONJ mentre)
                (S
                    (PP-TMP (PREP durante)
                        (NP (ART~DE la) (ADJ~OR Seconda) (NOU~CS guerra) (ADJ~QU mondiale)))
                     (PP (PREP per)
                         (NP
                             (NP (ART~DE la) (NOU~CS resistenza) (ADJ~QU partigiana))
                             (PP (PREP alle)
                                 (NP
                                     (NP (ART~DE alle) (NOU~CP truppe))
                                     (PP (PREP dell')
                                         (NP (ART~DE dell') (NOU~PR Asse)))))))
                          (NP-SBJ (NOU~PR Valona))
                          (NP (PRO~RI si))
                          (VP (VMA~RA merito')
                              (NP
                                  (NP (ART~DE il) (NOU~CS titolo))
                                  (PP (PREP di)
                                      (NP
                                          (NP (NOU~CA Citta'))
                                          (PP (PREP degli)
                                              (NP (ART~DE degli) (NOU~CP Eroi))))))))))
                      (. .)) )


************** FRASE NEWS-35 **************

 ( (S
    (VP (VMA~RE Eccolo)
        (NP (PRO~PE Eccolo))
        (NP
            (NP (ART~DE il) (NOU~CS monumento))
            (PP (PREP dei)
                (NP (ART~DE dei) (NOU~CP martiri)))
             (PP-LOC (PREP in)
                 (NP
                     (NP (NOU~CS Piazza))
                     (PP (PREP della)
                         (NP (ART~DE della) (NOU~CS Bandiera)))))
                (, ,)
                (NP
                    (NP (ART~IN una) (ADJ~QU grande) (NOU~CS scultura))
                    (PP (PREP in)
                        (NP (NOU~CS bronzo)))
                     (SBAR
                         (S
                             (NP-LOC (PRO~LO dove))
                             (NP-SBJ-1733 (PRO~RI si))
                             (VP (VAU~RE sono)
                                 (VP (VMA~PA raccolti)
                                     (PP (PREP a)
                                         (NP (NOU~CP migliaia)))
                                      (PP (PREP per)
                                          (NP
                                              (NP (ART~DE il) (NOU~CS funerale))
                                              (PP (PREP di)
                                                  (NP (NOU~PR Artur) (NOU~PR Rustemi)))))
                                         (, ,)
                                         (S
                                             (VP (VMA~GE passandosi)
                                                 (NP (PRO~RI passandosi))
                                                 (NP (ART~DE la) (NOU~CS bara))
                                                 (PP (PREP di)
                                                     (NP
                                                         (NP (NOU~CS spalla))
                                                         (PP (PREP in)
                                                             (NP (NOU~CS spalla)))))
                                                    (S-PRD
                                                        (VP (VMA~PA avvolta)
                                                            (PP (PREP in)
                                                                (NP
                                                                    (NP (ART~IN un) (NOU~CS drappo) (ADJ~QU rosso))
                                                                    (PP (PREP con)
                                                                        (NP
                                                                            (NP (ART~DE l') (NOU~CS aquila) (ADJ~QU nera))
                                                                            (PP (PREP a)
                                                                                (NP (NUMR due) (NOU~CP teste)))
                                                                             (, ,)
                                                                             (NP
                                                                                 (NP (ART~DE il) (NOU~CS simbolo))
                                                                                 (PP (PREP dell')
                                                                                     (NP (ART~DE dell') (NOU~PR Albania)))))))))
                                                                (NP-SBJ (-NONE- *-3133))))
                                                          (NP-SBJ (-NONE- *-1733))))))))))
                                  (. .)) )


************** FRASE NEWS-36 **************

 ( (S
    (ADVP-TMP (ADVB Poi))
    (NP-SBJ-233 (ART~IN un) (NOU~CS gruppo))
    (NP (PRO~RI si))
    (VP (VAU~RE e')
        (VP (VMA~PA staccato)
            (PP-LOC (PREP dal)
                (NP (ART~DE dal)
                    (NP (NOU~CS corteo))
                    (ADJP (ADJ~QU diretto)
                        (PP (PREP al)
                            (NP
                                (NP (ART~DE al) (NOU~CS cimitero))
                                (PP (PREP degli)
                                    (NP (ART~DE degli) (NOU~CP eroi))))))))
                  (PP (PREP per)
                      (S
                          (VP (VMA~IN infilarsi)
                              (NP (PRO~RI infilarsi))
                              (PP-LOC (PREP sul)
                                  (NP
                                      (NP (ART~DE sul) (NOU~CS viale))
                                      (PP (PREP di)
                                          (NP (NOU~PR Sheshi) (NOU~PR Iflamurit)))
                                       (, ,)
                                       (NP
                                           (NP (ART~DE la) (NOU~CS via))
                                           (PP (PREP del)
                                               (NP (ART~DE del) (NOU~CS porto)))
                                            (, ,)
                                            (VP (VMA~PA fiancheggiata)
                                                (NP (-NONE- *))
                                                (PP-LGS
                                                    (PP (PREP dagli)
                                                        (NP (ART~DE dagli)
                                                            (NP (NOU~CP edifici))
                                                            (ADJP (ADJ~QU tipici)
                                                                (PP (PREP del)
                                                                    (NP
                                                                        (NP (ART~DE del) (NOU~CS regime) (ADJ~QU comunista))
                                                                        (PP (PREP di)
                                                                            (NP (NOU~PR Enver) (NOU~PR Hoxha))))))))
                                                          (CONJ e)
                                                          (PP (PREP da)
                                                              (NP
                                                                  (NP (NOU~CP case) (ADJ~QU popolari))
                                                                  (, ,)
                                                                  (VP (VMA~PA intervallate)
                                                                      (NP (-NONE- *))
                                                                      (ADVP-TMP (ADVB adesso))
                                                                      (PP-LGS (PREP dalle)
                                                                          (NP
                                                                              (NP (ART~DE dalle) (ADJ~QU ambiziose) (NOU~CP villette))
                                                                              (PP (PREP dei)
                                                                                  (NP (ART~DE dei) (ADJ~QU nuovi) (NOU~CP ricchi))))))))))))))
                                              (NP-SBJ (-NONE- *-233))))))
                                  (. .)) )


************** FRASE NEWS-37 **************

 ( (S
    (PP-LOC (PREP Da) (ADVB qui))
    (VP (VAU~RE e')
        (VP (VMA~PA partito)
            (NP-EXTPSBJ-533
                (NP (ART~DE l') (NOU~CS assalto))
                (PP (PREP alla)
                    (NP-833 (ART~DE alla)
                        (NP (NOU~CS casa))
                        (SBAR
                            (NP-9333 (PRO~RE che))
                            (S
                                (NP-SBJ (-NONE- *-9333))
                                (VP (VMA~IM ospitava)
                                    (NP (ART~DE il) (NOU~CS Partito) (ADJ~QU democratico)))))
                           (, ,) (S+REDUC
                               (S
                                   (S
                                       (VP (VMA~PA distrutta))
                                       (NP-SBJ-15.1033 (-NONE- *-833))))
                                 (CONJ e)
                                 (S
                                     (VP (VMA~PA bruciata)
                                         (CONJ come)
                                         (S
                                             (ADVP-TMP (ADVB gia'))
                                             (VP (VAU~IM era)
                                                 (VP (VMA~PA avvenuto)
                                                     (NP-TMP (ADJ~IN qualche) (NOU~CS giorno) (ADJ~DI fa))
                                                     (PP (PREP con)
                                                         (NP (ART~DE il)
                                                             (NP (NOU~CS municipio))
                                                             (, ,)
                                                             (SBAR
                                                                 (NP-2333 (PRO~RE che) (-NONE- *-))
                                                                 (S
                                                                     (NP-SBJ-2933 (-NONE- *-2333))
                                                                     (PP (PREP nei)
                                                                         (NP
                                                                             (NP (ART~DE nei) (NOU~CP piani))
                                                                             (PP (PREP dell')
                                                                                 (NP (ART~DE dell') (NOU~CS ambasciata) (ADJ~QU italiana)))))
                                                                        (VP (VMO~IM doveva)
                                                                            (S
                                                                                (VP (VMA~IN diventare)
                                                                                    (NP-PRD
                                                                                        (NP (ART~DE la) (ADJ~DI prossima) (NOU~CS sede))
                                                                                        (PP (PREP del)
                                                                                            (NP
                                                                                                (NP (ART~DE del) (NOU~CS consolato))
                                                                                                (PP (PREP di)
                                                                                                    (NP (NOU~PR Valona)))))))
                                                                                     (NP-SBJ (-NONE- *-2933))))))))))
                                                             (NP-SBJ (-NONE- *))))
                                                       (NP-SBJ (-NONE- *-15.1033)))))))))
                                  (NP-SBJ (-NONE- *-533))
                                  (. .)) )


************** FRASE NEWS-38 **************

 ( (S
    (S
        (VP (VMA~IP A_MORTE)
            (NP-EXTPSBJ-2333 (NOU~PR Berisha) (-NONE- *-)
                (CONJ e)
                (NP (ART~DE i) (NOU~CP democratici))))
          (NP-SBJ (-NONE- *-333)))
       (, ,)
       (VP (VMA~RE grida)
           (NP-EXTPSBJ-933 (ART~IN un) (ADJ~QU certo) (NOU~PR Flamur))
           (CONJ quando)
           (S
               (VP (VMA~RE vede)
                   (S-PRD
                       (VP (VMA~IN avvicinarsi)
                           (NP (PRO~RI avvicinarsi)))
                        (NP-SBJ (-NONE- *-1533)))
                     (NP-1533 (ART~IN degli) (NOU~CP stranieri)))
                  (NP-SBJ (-NONE- *-933))))
            (NP-SBJ (-NONE- *-933))
            (. .)) )


************** FRASE NEWS-39 **************

 ( (S
    (ADVP-LOC (ADVB Qui))
    (ADVP (ADVB non))
    (NP (PRO~RI si))
    (VP (VMA~RE trova)
        (ADVP-TMP (ADVB piu'))
        (NP
            (NP (ART~IN un) (NOU~CS seguace))
            (PP (PREP del)
                (NP (ART~DE del)
                    (NP (NOU~CS Partito) (ADJ~QU democratico))
                    (SBAR
                        (NP-1333 (PRO~RE che))
                        (S
                            (NP-SBJ (-NONE- *-1333))
                            (ADVP (ADVB pure))
                            (PP-LOC (PREP a)
                                (NP (NOU~PR Valona)))
                             (VP (VAU~IM aveva)
                                 (VP (VMA~PA vinto)
                                     (NP (ART~DE le) (ADJ~OR ultime) (NOU~CP elezioni))
                                     (PP (PREP con)
                                         (NP (ART~DE l') (NUMR 88) (SPECIAL %)
                                             (PP (PREP dei)
                                                 (NP (ART~DE dei) (NOU~CP consensi)))))))))))))
                (. .)) )


************** FRASE NEWS-40 **************

 ( (S
    (S
        (NP-SBJ (NOU~PR Dashamir)
            (NP (ADVB Anche) (NOU~PR Shehi))
            (PRN
                (, ,)
                (NP (ADJ~QU ex) (ADJ~QU vice) (ADJ~OR primo) (NOU~CS ministro))
                (, ,))
             (NP
                 (NP-TMP (ART~IN un) (NOU~CS tempo))
                 (NP (NOU~CS uomo))
                 (PP (PREP del)
                     (NP
                         (NP (ART~DE del) (NOU~CS Presidente))
                         (PP (PREP in)
                             (NP (NOU~CA citta')))))))
              (, ,)
              (VP (VMA~RE attacca)
                  (NP (ART~DE il) (NOU~CS Governo))))
            (CONJ e)
            (S
                (NP (PRO~RI si))
                (VP (VMA~RE oppone)
                    (PP (PREP a)
                        (NP
                            (NP (NOU~CP misure))
                            (PP (PREP di)
                                (NP (NOU~CS emergenza))))))
                    (NP-SBJ (-NONE- *-233)))
                 (. .)) )


************** FRASE NEWS-41 **************

 ( (S
    (NP-SBJ (ART~DE La) (NOU~CS gente))
    (ADVP (ADVB non))
    (VP (VMA~RE vuole)
        (ADVP-TMP (ADVB piu'))
        (NP (ADJ~DE questo) (NOU~CS sistema)))
     (. .)) )


************** FRASE NEWS-42 **************

 ( (S
    (NP-LOC (PRO~LO Ci))
    (VP (VMA~RE vuole)
        (NP-EXTPSBJ-333 (ADJ~IN piu') (NOU~CS trasparenza))
        (PP-LOC (PREP nell')
            (NP (ART~DE nell') (NOU~CS amministrazione))))
      (NP-SBJ (-NONE- *-333))
      (. .)) )


************** FRASE NEWS-43 **************

 ( (S
    (CONJ Ma)
    (ADVP-TMP (ADVB intanto))
    (VP (VMA~RE circolano)
        (NP-EXTPSBJ-433
            (NP (NOU~CP voci) (ADJ~QU inquietanti))
            (PP (PREP sul)
                (NP
                    (NP (ART~DE sul) (NOU~CS futuro))
                    (PP (PREP delle)
                        (NP (ART~DE delle) (ADJ~DI altre)
                            (' ') (NOU~CP piramidi) (ADJ~QU finanziarie)
                            (' ')
                            (, ,)
                            (NP
                                (NP (PRO~DE quelle))
                                (S
                                    (S
                                        (NP-1333 (PRO~RE che))
                                        (S
                                            (NP-SBJ (-NONE- *-1333))
                                            (PP (PREP in)
                                                (NP (NOU~CS apparenza)))
                                             (PP-TMP (PREP nelle)
                                                 (NP (ART~DE nelle) (ADJ~DI scorse) (NOU~CP settimane)))
                                              (NP (PRO~RI si))
                                              (VP (VAU~IM erano)
                                                  (VP (VMA~PA salvate)
                                                      (PP (PREP dal)
                                                          (NP (ART~DE dal) (NOU~CS fallimento)))))))
                                           (CONJ e)
                                           (S
                                               (NP-SBJ-2833 (PRO~RE che))
                                               (ADVP-TMP (ADVB adesso))
                                               (VP (VMO~CO potrebbero)
                                                   (S
                                                       (VP (VMA~IN chiudere)
                                                           (NP (ART~DE i) (NOU~CP pagamenti)))
                                                        (NP-SBJ (-NONE- *-2833)))))))))))))
                       (NP-SBJ (-NONE- *-433))
                       (. .)) )


************** FRASE NEWS-44 **************

 ( (S
    (CONJ Se)
    (S
        (VP (VMA~IM accadesse)
            (NP-EXTPSBJ-333
                (NP (ART~IN una) (NOU~CS cosa))
                (PP (PREP del)
                    (NP (ART~DE del) (NOU~CS genere)))))
           (NP-SBJ (-NONE- *-333)))
        (, ,)
        (ADVP (ADVB allora))
        (NP-SBJ-933
            (NP (ART~DE la) (NOU~CS rivolta)
                (PP (PREP di)
                    (NP (NOU~PR Valona))))
              (PP
                  (, ,)
                  (PP
                      (PP (PREP di)
                          (NP (NOU~PR Fier)))
                       (CONJ e)
                       (PP (PREP della)
                           (NP (ART~DE della) (NOU~CS provincia))))))
               (VP (VMO~CO potrebbe)
                   (S
                       (VP (VMA~IN propagarsi)
                           (NP (PRO~RI propagarsi))
                           (PP-LOC (PREP a)
                               (NP (NOU~PR Tirana))))))
                   (NP-SBJ (-NONE- *-933))
                   (. .)) )


************** FRASE NEWS-45 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE Il) (NOU~CS Governo))
        (VP (VMA~RE annaspa)))
     (, ,)
     (S
         (VP
             (ADVP (ADVB non))
             (VP (VMA~RE riesce)
                 (PP (PREP a)
                     (S
                         (VP (VMA~IN decidere)
                             (S
                                 (NP
                                     (NP (ADJ~IR quali) (NOU~CP misure))
                                     (PP (PREP di)
                                         (NP (NOU~CS sicurezza))))
                                   (VP (VMA~IN adottare))
                                   (NP-SBJ (-NONE- *-8.1033))))
                             (NP-SBJ-8.1033 (-NONE- *-6.1033)))))
                    (, ,)
                    (S
                        (NP (PRO~RI si))
                        (VP (VMA~RE profila)
                            (ADVP (ADVB anche))
                            (NP-EXTPSBJ-1833
                                (NP (ART~IN una) (NOU~CA crisi))
                                (PP (PREP dell')
                                    (NP (ART~DE dell') (NOU~CS Esecutivo))))
                              (CONJ mentre)
                              (S
                                  (NP-SBJ (ART~DE l') (NOU~CS opposizione)
                                      (PRN
                                          (PUNCT -)
                                          (SBAR
                                              (NP-2333 (PRO~RE che))
                                              (S
                                                  (NP-SBJ (-NONE- *-2333))
                                                  (VP (VMA~RE riunisce)
                                                      (PP-LOC (PREP nel)
                                                          (NP (ART~DE nel) (NOU~PR Forum)))
                                                       (NP
                                                           (NP (ART~IN una) (NOU~CS decina))
                                                           (PP (PREP di)
                                                               (NP
                                                                   (NP (NOU~CP partiti))
                                                                   (PP (PREP dagli)
                                                                       (NP (ART~DE dagli) (ADJ~QU ex) (NOU~CP comunisti))
                                                                       (PP (PREP alla)
                                                                           (NP
                                                                               (NP (ART~DE alla) (NOU~CS destra))
                                                                               (PP (PREP di)
                                                                                   (NP (NOU~PR Alleanza) (ADJ~QU democratica))))))))))))
                                                     (PUNCT -)))
                                               (VP (VMA~RE chiama)
                                                   (PP (PREP alla)
                                                       (NP
                                                           (NP (ART~DE alla) (NOU~CS protesta) (ADJ~QU pacifica))
                                                           (PP (PREP in)
                                                               (NP (NOU~CS piazza))))))))
                                             (NP-SBJ (-NONE- *-1833))))
                                       (NP-SBJ-6.1033 (-NONE- *-133)))
                                    (. .)) )


************** FRASE NEWS-46 **************

 ( (S
    (CONJ Ma)
    (PP-LOC (PREP sulla)
        (NP
            (NP (ART~DE sulla) (NOU~CS Collina))
            (PP (PREP degli)
                (NP (ART~DE degli) (NOU~CP Ulivi)))))
       (NP (PRO~RI si))
       (VP (VMA~RE respira)
           (NP
               (NP (NOU~CS aria))
               (PP (PREP di)
                   (NP (NOU~CS battaglia)))))
          (. .)) )


************** FRASE NEWS-47 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE L') (NOU~CS assedio))
        (PP (PREP di)
            (NP (NOU~PR Valona))))
      (VP (VAU~RE e')
          (VP (VMA~PA cominciato)))
       (. .)) )


************** FRASE NEWS-48 **************

 ( (S
    (NP-SBJ (ART~DE La) (NOU~CS mafia) (ADJ~QU italiana))
    (VP (VMA~RE opera)
        (PP-LOC (PREP in)
            (NP (NOU~PR Albania))))
      (. .)) )


************** FRASE NEWS-49 **************

 ( (S
    (NP (PRO~RI Si))
    (VP (VMA~RE allunga)
        (NP-EXTPSBJ-333
            (NP (ART~DE l') (NOU~CS ombra))
            (PP (PREP della)
                (NP (ART~DE della) (NOU~CS mafia))))
          (PP-LOC (PREP sullo)
              (NP
                  (NP (ART~DE sullo) (NOU~CS scandalo))
                  (PP (PREP delle)
                      (NP (ART~DE delle) (NOU~CP finanziarie) (ADJ~QU albanesi))))))
          (NP-SBJ (-NONE- *-333))
          (. .)) )


************** FRASE NEWS-50 **************

 ( (S
    (PP (PREP Nelle)
        (NP
            (NP (ART~DE Nelle) (NOU~CA societa'))
            (PP (PREP di)
                (NP (NOU~PR Tirana)))
             (SBAR
                 (NP-5333 (PRO~RE che))
                 (S
                     (NP-SBJ (-NONE- *-5333))
                     (VP (VAU~RE hanno)
                         (VP (VMA~PA truffato)
                             (NP
                                 (NP (ART~IN un) (PRO~ID quarto))
                                 (PP (PREP della)
                                     (NP (ART~DE della) (NOU~CS popolazione))))))))))
             (NP-LOC (PRO~LO c'))
             (VP (VMA~RE e')
                 (NP-EXTPSBJ-1433
                     (NP (ART~DE lo) (NOU~CS zampino))
                     (PP (PREP delle)
                         (NP (ART~DE delle) (NOU~CP organizzazioni) (ADJ~QU criminali) (ADJ~QU italiane)))))
                (NP-SBJ (-NONE- *-1433))
                (. .)) )


************** FRASE NEWS-51 **************

 ( (S
    (PP-SBJ (PREP A)
        (S
            (VP (VMA~IN sollevare)
                (NP (ART~DE l') (NOU~CS accusa)))
             (NP-SBJ (-NONE- *-733))))
       (VP (VAU~RE e')
           (VP (VMA~PA stato)
               (NP-PRD-CLEFT
                   (NP (ART~DE il) (NOU~CS rapporto)) (-NONE- *-)
                   (PP (PREP della)
                       (NP (ART~DE della) (NOU~PR Confcommercio)))
                    (PP (PREP sull')
                        (NP
                            (NP (ART~DE sull') (NOU~CS aggressione) (ADJ~QU criminale))
                            (PP (PREP all')
                                (NP (ART~DE all') (NOU~CS economia))))))))
              (. .)) )


************** FRASE NEWS-52 **************

 ( (S
    (CONJ E)
    (NP-SBJ (ART~DE lo) (NOU~CS studio)
        (PRN
            (, ,)
            (SBAR
                (NP-5333 (PRO~RE che))
                (S
                    (NP-SBJ (-NONE- *-5333))
                    (VP (VMA~RE cita)
                        (PP (PREP come)
                            (NP (NOU~CS fonte)))
                         (NP
                             (NP (ART~IN un) (ADJ~QU alto) (NOU~CS dirigente))
                             (PP (PREP della)
                                 (NP
                                     (NP (ART~DE della) (NOU~CS polizia))
                                     (PP (PREP di)
                                         (NP (NOU~CS Stato)))))))))
                    (, ,)))
              (VP (VAU~RE e')
                  (VP (VAU~PA stato)
                      (VP (VMA~PA confermato))))
                (PP-LGS
                    (PP (PREP dal)
                        (NP (ART~DE dal) (NOU~CS procuratore) (ADJ~QU nazionale) (ADJ~QU antimafia)
                            (PRN
                                (, ,)
                                (NP (NOU~PR Piero)
                                    (NP (NOU~PR Luigi) (NOU~PR Vigna)))
                                 (, ,))))
                        (CONJ e)
                        (PP (PREP dal)
                            (NP
                                (NP (ART~DE dal) (NOU~CS direttore))
                                (PP (PREP del)
                                    (NP
                                        (NP (ART~DE del) (NOU~CS servizio) (ADJ~QU centrale) (ADJ~QU operativo))
                                        (PRN
                                            (-LRB- -LRB-)
                                            (NP (NOU~PR Sco))
                                            (-RRB- -RRB-))
                                         (PP (PREP della)
                                             (NP (ART~DE della) (NOU~CS polizia)))))
                                    (, ,)
                                    (NP (NOU~PR Alessandro) (NOU~PR Pansa)))))
                           (. .)) )


************** FRASE NEWS-53 **************

 ( (S
    (S
        (VP (VMA~RE Abbiamo)
            (NP
                (NP (NOU~CS notizia))
                (PP (PREP della)
                    (NP
                        (NP (ART~DE della) (NOU~CS presenza))
                        (PP (PREP della)
                            (NP
                                (NP (ART~DE della) (NOU~CA criminalita') (ADJ~QU italiana))
                                (PP (PREP nello)
                                    (NP
                                        (NP (ART~DE nello) (NOU~CS scandalo))
                                        (PP (PREP delle)
                                            (NP (ART~DE delle) (NOU~CP finanziarie) (ADJ~QU albanesi)))))))))))
                 (NP-SBJ (-NONE- *)))
              (VP (VAU~RE ha)
                  (VP (VMA~PA detto)
                      (NP-EXTPSBJ-1533 (NOU~PR Vigna))
                      (, ,)
                      (S
                          (VP (VMA~GE ricordando)
                              (CONJ che)
                              (S
                                  (S
                                      (NP-SBJ-1933 (ART~DE l') (NOU~PR Albania))
                                      (VP
                                          (VP (VAU~RE e')
                                              (ADVP-TMP (ADVB gia'))) (VMA~PA diventata)
                                           (NP-PRD
                                               (NP (NOU~CS produttrice))
                                               (PP (PREP di)
                                                   (NP (NOU~CA marijuana))))))
                                       (CONJ e)
                                       (S
                                           (VP (VAU~RE sta)
                                               (VP (VMA~GE sperimentando)
                                                   (ADVP-TMP (ADVB oggi))
                                                   (NP
                                                       (NP (ART~DE la) (NOU~CS produzione))
                                                       (PP (PREP della)
                                                           (NP (ART~DE della) (NOU~CS coca))))))
                                               (NP-SBJ (-NONE- *-1933)))))
                                      (NP-SBJ (-NONE- *-1533)))))
                             (NP-SBJ (-NONE- *-1533))
                             (. .)) )


************** FRASE NEWS-54 **************

 ( (S
    (S
        (PP-LOC (PREP In)
            (NP (ADJ~DE quegli) (NOU~CP istituti) (ADJ~QU finanziari)))
         (ADVP (ADVB forse))
         (VP (VAU~RE sono)
             (VP (VMA~PA andati)
                 (PP (PREP a)
                     (S
                         (VP (VMA~IN finire))
                         (NP-SBJ (-NONE- *-1033))))
                   (NP-EXTPSBJ-1033 (ADJ~DE quei) (NOU~CP soldi))))
             (NP-SBJ (-NONE- *-1033)))
          (, ,)
          (VP (VAU~RE ha)
              (VP (VMA~PA aggiunto)))
           (NP-SBJ (-NONE- *))
           (. .)) )


************** FRASE NEWS-55 **************

 ( (S
    (NP-SBJ-133 (NOU~PR Pansa))
    (VP (VAU~RE ha)
        (VP (VMA~PA confermato)
            (NP
                (NP (PRO~RE quanto))
                (VP (VMA~PA sostenuto)
                    (NP (-NONE- *))
                    (PP-LGS (PREP dal)
                        (NP
                            (NP (ART~DE dal) (NOU~CS collega))
                            (PP (PREP dell')
                                (NP (ART~DE dell') (NOU~CS antimafia)))))))
                 (, ,)
                 (S
                     (VP (VMA~GE limitandosi)
                         (NP (PRO~RI limitandosi))
                         (PP (PREP ad)
                             (S
                                 (VP (VMA~IN ammettere)
                                     (CONJ che)
                                     (S
                                         (PP (PREP per)
                                             (NP (ART~DE lo) (NOU~CS scandalo) (ADJ~QU albanese)))
                                          (NP-SBJ (NOU~CP indagini))
                                          (VP (VMA~RE sono)
                                              (ADJP-PRD (ADJ~QU IN_CORSO))
                                              (PP-LOC (PREP in)
                                                  (NP (ADVB anche) (NOU~PR Italia))))))
                                      (NP-SBJ (-NONE- *-11.1033)))))
                             (NP-SBJ-11.1033 (-NONE- *-133)))))
                    (. .)) )


************** FRASE NEWS-56 **************

 ( (S
    (ADVP (ADVB Non))
    (VP (VMO~RE posso)
        (S
            (VP (VMA~IN dire)
                (ADVP (ADVB DI_PIÙ)))
             (NP-SBJ (-NONE- *-2.1033))))
       (NP-SBJ-2.1033 (-NONE- *))
       (. .)) )


************** FRASE NEWS-57 **************

 ( (S
    (NP-133 (NOU~CP Anni) (ADJ~DI fa))
    (, ,)
    (VP (VAU~RE ha)
        (VP (VMA~PA ricordato)
            (NP-EXTPSBJ-633
                (NP (ART~DE il) (NOU~CS direttore))
                (PP (PREP dello)
                    (NP (ART~DE dello) (NOU~PR Sco))))
              (, ,)
              (S
                  (PP-LOC (PREP in)
                      (NP (ADVB anche) (NOU~PR Campania)))
                   (NP-LOC (PRO~LO c'))
                   (VP (VMA~IM erano)
                       (NP-15.1133 (-NONE- *-133))
                       (NP-EXTPSBJ-1633
                           (NP (NOU~CP finanziarie))
                           (SBAR
                               (NP-1333 (PRO~RE che))
                               (S
                                   (NP-SBJ (-NONE- *-1333))
                                   (VP (VMA~IM offrivano)
                                       (NP
                                           (NP (ART~IN un) (NOU~CS interesse) (ADJ~QU mensile))
                                           (PP (PREP del)
                                               (NP (ART~DE del) (NUMR 7) (SPECIAL %))))
                                         (PP (PREP a)
                                             (NP
                                                 (NP (PRO~RE-2633 chi))
                                                 (SBAR
                                                     (S
                                                         (VP (VMA~IM affidava)
                                                             (NP (PRO~PE loro))
                                                             (NP (ART~DE i) (ADJ~PO propri) (NOU~CP risparmi)))
                                                          (NP-SBJ (-NONE- *-2333)))
                                                       (NP-2333 (-NONE- *-2633)))))))))
                                  (NP-TMP (-NONE- *-15.1133)))
                               (NP-SBJ (-NONE- *-1633)))))
                      (NP-SBJ (-NONE- *-633))
                      (. .)) )


************** FRASE NEWS-58 **************

 ( (S
    (ADVP-LOC (ADVB Dietro))
    (NP-LOC (PRO~LO c'))
    (VP (VMA~IM era)
        (NP-EXTPSBJ-433 (ART~DE la)
            (NP (NOU~CS camorra))
            (, ,)
            (SBAR
                (NP-7333 (PRO~RE che))
                (S
                    (NP-SBJ (-NONE- *-7333))
                    (VP (VMA~IM finanziava)
                        (ADVP (ADVB cosi'))
                        (NP
                            (NP (ART~DE il) (NOU~CS contrabbando))
                            (PP (PREP di)
                                (NP (NOU~CP sigarette)))))))))
           (NP-SBJ (-NONE- *-433))
           (. .)) )


************** FRASE NEWS-59 **************

 ( (S
    (NP-TMP (ADJ~IN Ogni) (NOU~CS giorno))
    (VP (VMA~IM cercavamo)
        (ADVP-TMP (ADVB sempre))
        (NP
            (NP (ART~IN un) (NOU~CS momento))
            (PP (PREP per)
                (S
                    (VP (VMA~IN sintonizzarci)
                        (NP (PRO~PE sintonizzarci))
                        (PP (PREP sulla)
                            (NP (ART~DE sulla) (NOU~CA radio) (ADJ~QU italiana))))
                      (NP-SBJ (-NONE- *-3.1033))))))
          (NP-SBJ-3.1033 (-NONE- *))
          (. .)) )


************** FRASE NEWS-60 **************

 ( (S
    (ADJP-PRD (ADJ~QU Lontani)
        (PP
            (PP (PREP dalle)
                (NP
                    (NP (ART~DE dalle) (NOU~CP orecchie))
                    (PP (-NONE- *-733))))
              (CONJ e)
              (PP (PREP dagli)
                  (NP
                      (NP (ART~DE dagli) (NOU~CP occhi))
                      (PP-733 (PREP della)
                          (NP (ART~DE della) (NOU~PR Segurimi)))))))
           (PRN
               (, ,)
               (PP (PREP con)
                   (NP
                       (NP (ART~IN un) (NOU~CS filo))
                       (PP (PREP di)
                           (NP (NOU~CS rame)))
                        (PP (PREP per)
                            (NP (NOU~CS antenna)))))
                   (, ,))
                (VP (VMA~IM ascoltavamo)
                    (PP (PREP da)
                        (NP (ADJ~IN qualche) (NOU~CS angolo) (ADJ~QU segreto)))
                     (NP
                         (NP (PRO~DE quello))
                         (SBAR
                             (NP-2333 (PRO~RE che))
                             (S
                                 (NP-SBJ (-NONE- *-2333))
                                 (VP (VMA~IM succedeva)
                                     (PP-LOC (PREP dall')
                                         (NP
                                             (NP (ART~DE dall') (ADJ~DI altra) (NOU~CS parte))
                                             (PP (PREP del)
                                                 (NP (ART~DE del) (NOU~CS mondo))))))))))
                         (NP-SBJ (-NONE- *))
                         (. .)) )


************** FRASE NEWS-61 **************

 ( (S
    (CONJ Se)
    (S
        (VP (VAU~IM venivi)
            (VP (VMA~PA colto)
                (PP (PREP sul)
                    (NP (ART~DE sul) (NOU~CS fatto)))))
           (NP-SBJ (-NONE- *)))
        (, ,)
        (NP (PRO~PE ti))
        (VP (VMA~IM aspettavano)
            (NP-EXTPSBJ-933
                (NP (NUMR otto) (NOU~CP anni))
                (PP (PREP di)
                    (NP (NOU~CS carcere)))))
           (NP-SBJ (-NONE- *-933))
           (. .)) )


************** FRASE NEWS-62 **************

 ( (S
    (NP-SBJ (PRO~DE Questa))
    (VP (VMA~RE e')
        (NP-PRD (ART~IN una)
            (NP (NOU~CS storia) (ADJ~QU comune))
            (SBAR
                (S
                    (NP-633 (PRO~RE che))
                    (VP (VMO~RE puo')
                        (S
                            (VP (VMA~IN raccontare)
                                (NP (-NONE- *-633)))
                             (NP-SBJ (-NONE- *-933)))
                          (NP-EXTPSBJ-933
                              (NP (ADJ~IN qualunque) (NOU~CS albanese))
                              (PP (PREP sopra)
                                  (NP (ART~DE i)
                                      (NP (NUMR vent')) (NOU~CP anni)))))
                          (NP-SBJ (-NONE- *-933))))))
              (. .)) )


************** FRASE NEWS-63 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (PRO~PE Noi))
        (NP (NOU~CP italiani)))
     (PP (PREP per)
         (NP (PRO~PE loro)))
      (VP (VMA~IM eravamo)
          (NP-PRD
              (NP (ART~DE l') (ADJ~DI altra) (NOU~CS parte))
              (PP (PREP del)
                  (NP (ART~DE del) (NOU~CS mondo)))))
         (. .)) )


************** FRASE NEWS-64 **************

 ( (S
    (NP-133 (PRO~PE Li))
    (VP (VMA~RA vedemmo)
        (S-PRD
            (VP (VMA~IN arrivare)
                (PP-TMP (PREP nell')
                    (NP
                        (NP (ART~DE nell') (NOU~CS estate))
                        (PP (PREP del)
                            (NP (ART~DE del) (DATE '91)))))
                   (PP-LOC (PREP a)
                       (NP (NOU~PR Bari)
                           (CONJ e) (NOU~PR Brindisi))))
                  (NP-SBJ (-NONE- *-133)))
               (S-PRD
                   (VP (VMA~PA ammassati)
                       (PP-LOC (PREP nelle)
                           (NP
                               (NP (ART~DE nelle) (NOU~CP stive))
                               (PP (PREP delle)
                                   (NP (ART~DE delle) (NOU~CP navi)))))
                          (, ,)
                          (PP (PREP senza)
                              (NP
                                  (NP (NOU~CS pane))
                                  (CONJ ne')
                                  (NP (NOU~CS acqua)))))
                         (NP-SBJ (-NONE- *-133))))
                   (NP-SBJ (-NONE- *))
                   (. .)) )


************** FRASE NEWS-65 **************

 ( (S
    (CONJ E)
    (ADVP (ADVB improvvisamente))
    (NP-SBJ (ADJ~DE quell') (NOU~CS irruzione)
        (PRN
            (, ,)
            (ADVP-TMP (ADVB subito))
            (VP (VMA~PA definita)
                (NP (-NONE- *))
                (NP-PRD (ART~IN un) (NOU~CS esodo) (ADJ~QU biblico)))
             (, ,)))
       (NP (PRO~PE ci))
       (VP (VMA~RA rivelo')
           (CONJ che)
           (S
               (PP-LOC (PREP dall')
                   (NP
                       (NP (ART~DE dall') (ADJ~DI altra) (NOU~CS parte))
                       (PP (PREP del)
                           (NP (ART~DE del) (NOU~CS mare)))))
                  (VP (VMA~IM esistevano)
                      (NP-EXTPSBJ-2133 (ART~DE gli) (NOU~CP albanesi)))
                   (NP-SBJ (-NONE- *-2133))))
             (NP-SBJ (-NONE- *-333))
             (. .)) )


************** FRASE NEWS-66 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~IN Un) (NOU~CS-233 ufficiale))
        (PRN
            (, ,)
            (CONJ e)
            (NP
                (NP (-NONE- *-233))
                (PP (PREP di)
                    (NP (ADVB non)
                        (NP (ADJ~QU basso) (NOU~CS grado)))))
               (, ,))
            (PP (PREP dell')
                (NP (ART~DE dell')
                    (" ") (NOU~PR Operazione)
                    (" "))))
           (VP (VMA~RA confesso')
               (ADVP (ADVB candidamente))
               (CONJ che)
               (S
                   (PP-TMP (PREP prima)
                       (PP (PREP di)
                           (S
                               (VP (VMA~IN partire))
                               (NP-SBJ (-NONE- *-133)))))
                      (VP (VAU~IM aveva)
                          (VP (VMO~PA dovuto)
                              (S
                                  (VP (VMA~IN prendere)
                                      (PP-LOC (PREP in)
                                          (NP (NOU~CS mano)))
                                       (NP (ART~DE la) (NOU~CS carta) (ADJ~QU geografica))
                                       (PP (PREP per)
                                           (S
                                               (VP (VMA~IN individuare)
                                                   (S
                                                       (ADVP (ADVB dove))
                                                       (VP (VMA~IM fosse)
                                                           (NP-EXTPSBJ-2333 (ADJ~DE questo)
                                                               (NP (NOU~CS Paese)) (-NONE- *-)
                                                               (, ,)
                                                               (VP (VMA~PA scomparso)
                                                                   (NP (-NONE- *))
                                                                   (PP
                                                                       (PP (PREP dalla)
                                                                           (NP (ART~DE dalla) (NOU~CS memoria)))
                                                                        (CONJ e)
                                                                        (PP (PREP dalla)
                                                                            (NP (ART~DE dalla) (NOU~CS storia)))))))
                                                             (NP-SBJ (-NONE- *-3333))))
                                                       (NP-SBJ (-NONE- *-23.1033)))))
                                              (NP-SBJ-23.1033 (-NONE- *-22.1033)))))
                                     (NP-SBJ-22.1033 (-NONE- *-133))))
                               (. .)) )


************** FRASE NEWS-67 **************

 ( (S
    (NP-SBJ (PRO~PE Loro))
    (VP (VMA~IM erano)
        (NP-PRD (ART~DE il) (ADJ~PO nostro) (NOU~CS vicino) (ADJ~QU sconosciuto)))
     (. .)) )


************** FRASE NEWS-68 **************

 ( (S
    (PP-TMP (PREP Dopo)
        (NP
            (NP (ART~DE la) (NOU~CS caduta))
            (PP (PREP del)
                (NP (ART~DE del) (NOU~CS comunismo)))))
       (NP-SBJ (PRO~PE noi))
       (ADVP (ADVB invece))
       (VP (VMA~IM rappresentavamo)
           (NP
               (NP (ART~DE l')
                   (NP (NOU~CS Eldorado))
                   (VP (VMA~PA teletrasmesso)
                       (NP (-NONE- *))
                       (NP-TMP (ADJ~IN ogni) (NOU~CS sera))
                       (PP-LGS (PREP dalle)
                           (NP (ART~DE dalle) (NOU~CP antenne) (ADJ~QU satellitari)))))
                  (, ,)
                  (NP
                      (NP
                          (NP (ART~DE il) (NOU~CS Paese))
                          (PP (PREP con)
                              (NP
                                  (NP (ART~DE il) (NOU~CS campionato))
                                  (PP (PREP di)
                                      (NP (NOU~CS calcio)))
                                   (ADJP (ADVB piu') (ADJ~QU bello))
                                   (PP (PREP del)
                                       (NP (ART~DE del) (NOU~CS mondo))))))
                           (, ,)
                           (NP
                               (NP (ART~DE la) (NOU~CS nazionale))
                               (SBAR
                                   (S
                                       (PP (PREP per)
                                           (NP (PRO~RE cui)))
                                        (PP-LOC (PREP a)
                                            (NP (NOU~PR Tirana)))
                                         (VP (VAU~IM avevano)
                                             (VP (VMA~PA esultato)
                                                 (PP-TMP (PREP dopo)
                                                     (NP
                                                         (NP (ART~DE il) (NOU~CS trionfo))
                                                         (PP (PREP di)
                                                             (NP (NOU~PR Madrid)))))
                                                    (PP-TMP (PREP nell')
                                                        (NP (ART~DE nell') (DATE '82)))))
                                               (NP-SBJ (-NONE- *-3333)))
                                            (NP-3333 (-NONE- *)))))))
                             (. .)) )


************** FRASE NEWS-69 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE L') (NOU~PR Italia))
        (VP (VMA~IM era)
            (NP-PRD (-NONE- *-633))))
      (CONJ e)
      (S
          (VP (VMA~RE rimane)
              (NP-PRD-633 (ART~IN una) (NOU~CS calamita))
              (PP (PREP nonostante)
                  (NP
                      (NP (ART~DE le) (NOU~CP illusioni))
                      (, ,)
                      (NP
                          (NP (ART~DE i) (NOU~CP dolori))
                          (CONJ e)
                          (NP (ART~DE le)
                              (NP (NOU~CP tragedie))
                              (VP (VMA~PA vissute)
                                  (NP (-NONE- *))
                                  (PP-LGS (PREP da)
                                      (NP
                                          (NP (ART~IN un) (NOU~CS popolo))
                                          (PP (PREP di)
                                              (NP (NOU~CP emigranti)))))))))))
                   (NP-SBJ (-NONE- *-133)))
                (. .)) )


************** FRASE NEWS-70 **************

 ( (S
    (NP-SBJ-233 (ADVB Anche) (ART~DE gli) (NOU~CP italiani))
    (VP (VAU~RE hanno)
        (VP (VMA~PA cominciato)
            (PP (PREP a)
                (S
                    (VP (VMA~IN conoscere)
                        (NP (ART~DE l') (NOU~PR Albania)))
                     (NP-SBJ (-NONE- *-233))))))
         (. .)) )


************** FRASE NEWS-71 **************

 ( (S
    (NP-SBJ (ART~DE I) (ADJ~OR primi) (NOU~CP approcci))
    (ADVP (ADVB non))
    (VP (VAU~RE sono)
        (VP (VMA~PA stati)
            (ADJP-PRD (ADJ~QU esaltanti))))
      (. .)) )


************** FRASE NEWS-72 **************

 ( (S
    (PP-TMP (PREP Durante)
        (NP
            (NP (ART~DE il) (NOU~CS regime))
            (PP (PREP di)
                (NP (NOU~PR Hoxha)))))
       (NP-SBJ (ART~DE gli) (NOU~CP albanesi))
       (VP (VAU~IM erano)
           (VP (VAU~PA stati)
               (VP (VMA~PA nutriti))))
         (PP (PREP di)
             (NP
                 (NP (ART~IN un) (NOU~CS risentimento) (ADJ~QU particolare))
                 (PP (PREP NEI_CONFRONTI_DI)
                     (NP (ART~DE dell') (NOU~PR Italia)
                         (, ,)
                         (NP
                             (NP (NOU~CS potenza))
                             (VP (VMA~PE occupante)
                                 (NP (-NONE- *))
                                 (PP-TMP (PREP durante)
                                     (NP (ART~DE la) (ADJ~OR Seconda) (NOU~CS guerra) (ADJ~QU mondiale)))))))))
                (. .)) )


************** FRASE NEWS-73 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE La) (NOU~CS storia))
        (NP (PRO~PE ci))
        (VP (VMA~IM univa)))
     (, ,)
     (CONJ ma)
     (S
         (ADVP (ADVB anche))
         (NP (PRO~PE ci))
         (VP (VMA~IM divideva))
         (NP-SBJ (-NONE- *-133)))
      (. .)) )


************** FRASE NEWS-74 **************

 ( (S
    (CONJ E)
    (NP-SBJ
        (ADJbar-SBJ (ADJ~IN alcuni)
            (NP (NOU~CP italiani)))
         (SBAR
             (NP-4333 (PRO~RE che))
             (S
                 (NP-SBJ (-NONE- *-4333))
                 (VP (VMA~RA vennero)
                     (ADVP-LOC (ADVB qui))
                     (PP-TMP (ADVB appena) (PREP dopo)
                         (NP
                             (NP (ART~DE la) (NOU~CS fine))
                             (PP (PREP dello)
                                 (NP (ART~DE dello) (NOU~CS stalinismo)))))))))
            (VP (VMA~RA approfittarono)
                (PRN
                    (, ,)
                    (PP (PREP in)
                        (NP (ADVB A_VOLTE)
                            (NP (NOU~CS maniera))
                            (ADJP
                                (ADJP (ADJ~QU scorretta))
                                (CONJ e)
                                (ADJP (ADVB persino) (ADJ~QU criminale)))))
                       (, ,))
                    (PP (PREP di)
                        (NP (ART~IN un)
                            (NP (NOU~CS Paese))
                            (SBAR
                                (NP-2333 (PRO~RE che))
                                (S
                                    (NP-SBJ (-NONE- *-2333))
                                    (PP-TMP (PREP dopo)
                                        (NP
                                            (NP (NUMR 50) (NOU~CP anni))
                                            (PP (PREP di)
                                                (NP (NOU~CS oscurantismo)))))
                                       (NP (PRO~RI si))
                                       (VP (VMA~IM apriva)
                                           (PP (PREP al)
                                               (NP (ART~DE al) (NOU~CS mondo)))))))))
                          (. .)) )


************** FRASE NEWS-75 **************

 ( (S
    (PP-LOC (PREP Davanti)
        (PP (PREP all')
            (NP (ART~DE all') (NOU~CS emergenza) (ADJ~QU umanitaria))))
      (, ,)
      (NP-SBJ-633 (ART~DE l') (NOU~PR Italia))
      (VP (VMA~RA decise)
          (ADVP (ADVB comunque))
          (PP (PREP di)
              (S
                  (VP (VMA~IN investire)
                      (PP-LOC (PREP in)
                          (NP (NOU~PR Albania))))
                    (NP-SBJ (-NONE- *-633)))))
           (. .)) )


************** FRASE NEWS-76 **************

 ( (ADVP
    (CONJ E) (ADVB non) (ADVB poco)
    (. .)) )


************** FRASE NEWS-77 **************

 ( (S
    (PP-TMP (PREP Dal)
        (NP (ART~DE Dal) (DATE '91))
        (PP (PREP al)
            (NP (ART~DE al) (DATE '95))))
      (VP (VAU~RE sono)
          (VP (VAU~PA stati)
              (VP (VMA~PA stanziati))))
        (NP-SBJ (-NONE- *-833))
        (NP-EXTPSBJ-833 (NUMR 450) (NOU~CP miliardi))
        (. .)) )


************** FRASE NEWS-78 **************

 ( (S
    (PP (PREP Oltre)
        (PP (PREP a)
            (S
                (VP (VMA~IN tamponare)
                    (NP
                        (NP (ART~DE la) (NOU~CS falla))
                        (PP (PREP dell')
                            (NP (ART~DE dell') (NOU~CS ondata) (ADJ~QU migratoria)))))
                   (NP-SBJ (-NONE- *-933)))))
          (NP-SBJ-933 (ADJ~DE quei) (NOU~CP soldi))
          (VP (VAU~RE sono)
              (VP (VMA~PA serviti)
                  (PRN
                      (, ,)
                      (PP-TMP (PREP dopo)
                          (NP
                              (NP (ART~IN una) (ADJ~OR prima) (NOU~CS fase))
                              (PP (PREP di)
                                  (NP (NOU~CP sprechi)))))
                         (, ,))
                      (PP
                          (PP (PREP a)
                              (S
                                  (VP (VMA~IN rifare)
                                      (NP (ART~DE la)
                                          (NP (NOU~CS rete) (ADJ~QU elettrica))
                                          (, ,)
                                          (NP (PRO~DE quella) (ADJ~QU idrica))))
                                    (NP-SBJ (-NONE- *))))
                              (, ,)
                              (PP (PREP a)
                                  (S
                                      (VP (VMA~IN rendere)
                                          (ADJP-PRD (ADJ~QU percorribili))
                                          (NP
                                              (NP (ADJ~IN alcune) (NOU~CP strade))
                                              (CONJ e)
                                              (NP (ART~DE la) (NOU~CS ferrovia)
                                                  (NP (NOU~PR Tirana)
                                                      (PUNCT -) (NOU~PR Durazzo)))))
                                          (NP-SBJ (-NONE- *)))))))
                           (. .)) )


************** FRASE NEWS-79 **************

 ( (S
    (ADVP (ADVB Insieme))
    (VP (VAU~RE sono)
        (VP (VMA~PA arrivati)
            (NP-EXTPSBJ-433 (ART~DE gli) (NOU~CP investimenti) (ADJ~QU privati))))
      (NP-SBJ (-NONE- *-433))
      (. .)) )


************** FRASE NEWS-80 **************

 ( (S
    (S
        (NP-SBJ (ART~DE Le) (NOU~CP cifre))
        (ADVP (ADVB non))
        (VP (VMA~RE sono)
            (ADJP-PRD (ADJ~QU concordi))))
      (CONJ ma)
      (S
          (NP-SBJ (PRO~RI si))
          (VP (VMA~RE parla)
              (PP
                  (PP (PREP di)
                      (NP
                          (PUNCT -)
                          (NP (NUMR 250) (NUMR 300) (NOU~CP milioni))
                          (PP (PREP di)
                              (NP (NOU~CP dollari)))))
                     (, ,)
                     (PP
                         (PP (PREP di)
                             (NP
                                 (ADVP (ADVB circa))
                                 (NP (NUMR 30)
                                     (NP (NOU~CP dipendenti) (ADJ~QU diretti))
                                     (CONJ e)
                                     (NP
                                         (NP (NUMR mila) (PRO~ID altrettanti))
                                         (PP (PREP nell')
                                             (NP (ART~DE nell') (NOU~CS indotto)))))))
                              (CONJ e)
                              (PP (PREP di)
                                  (NP
                                      (NP (ART~IN una) (NOU~CS quota))
                                      (PP (PREP del)
                                          (NP (ART~DE del) (NUMR 60) (SPECIAL %)
                                              (PP (PREP sul)
                                                  (NP
                                                      (NP (ART~DE sul) (NOU~CS totale))
                                                      (PP (PREP del)
                                                          (NP (ART~DE del) (NOU~CS commercio) (ADJ~QU estero) (ADJ~QU albanese)))))))))))))
                         (. .)) )


************** FRASE NEWS-81 **************

 ( (S
    (NP-SBJ-133 (ART~DE L') (NOU~PR Italia))
    (VP (VMA~RE ha)
        (ADVP (ADVB quindi))
        (NP
            (NP (NOU~CP interessi))
            (PP (PREP di)
                (NP (ADJ~OR primo) (NOU~CS piano)))
             (SBAR
                 (S
                     (PP (PREP tra)
                         (NP (PRO~RE cui)))
                      (VP (-NONE- *)
                          (NP-EXTPSBJ-1133
                              (NP (PRO~DE quello))
                              (PP (PREP di)
                                  (S
                                      (VP (VMA~IN contribuire)
                                          (PP (PREP ad)
                                              (S
                                                  (VP (VMA~IN assicurare)
                                                      (NP
                                                          (NP (ART~DE la) (NOU~CA stabilita'))
                                                          (PP (PREP del)
                                                              (NP (ART~DE del) (NOU~CS Paese)))))
                                                     (NP-SBJ (-NONE- *-13.1033)))))
                                            (NP-SBJ-13.1033 (-NONE- *-133))))))
                                (NP-SBJ (-NONE- *-1133))))))
                    (. .)) )


************** FRASE NEWS-82 **************

 ( (S
    (NP-SBJ-133 (PRO~DE Questo))
    (ADVP (ADVB non))
    (VP (VMO~RE vuol)
        (S
            (VP (VMA~IN dire)
                (S
                    (VP
                        (VP (VMA~IN-533 appoggiare)
                            (NP (ART~IN un) (NOU~CS Governo))
                            (PP (PREP piuttosto)
                                (CONJ che)
                                (VP (-NONE- *-533)
                                    (NP (ART~IN un) (PRO~ID altro)))))
                           (CONJ ma)
                           (S
                               (VP (VMA~IN fornire)
                                   (PRN
                                       (, ,)
                                       (PP (PREP insieme)
                                           (PP
                                               (PP (PREP ai)
                                                   (NP (ART~DE ai) (NOU~CA partner) (ADJ~QU europei)))
                                                (CONJ e)
                                                (PP (PREP alle)
                                                    (NP (ART~DE alle) (NOU~CP istituzioni) (ADJ~QU internazionali)))))
                                           (, ,))
                                        (NP (ART~DE l')
                                            (NP (NOU~CS assistenza))
                                            (ADJP
                                                (ADJP (ADJ~QU tecnica))
                                                (CONJ e)
                                                (ADJP (ADJ~QU finanziaria)))
                                             (ADJP (ADJ~QU necessaria)
                                                 (PP (PREP per)
                                                     (S
                                                         (S
                                                             (VP (VMA~IN uscire)
                                                                 (PP (PREP dal)
                                                                     (NP
                                                                         (NP (ART~DE dal) (NOU~CA crack))
                                                                         (PP (PREP delle)
                                                                             (NP (ART~DE delle)
                                                                                 (' ') (NOU~CP piramidi)
                                                                                 (' '))))))
                                                                  (NP-SBJ (-NONE- *)))
                                                               (, ,)
                                                               (S
                                                                   (VP (VMA~IN prevenire)
                                                                       (NP
                                                                           (NP (ART~IN un') (NOU~CS esplosione) (ADJ~QU sociale))
                                                                           (CONJ e)
                                                                           (NP (ART~IN una) (ADJ~OR seconda) (NOU~CS ondata) (ADJ~QU migratoria))))
                                                                     (NP-SBJ (-NONE- *))))))))
                                                   (NP-SBJ (-NONE- *))))
                                             (NP-SBJ (-NONE- *))))
                                       (NP-SBJ (-NONE- *-133))))
                                 (. .)) )


************** FRASE NEWS-83 **************

 ( (S
    (PP (PREP Per)
        (NP (ADJ~DE questo) (NOU~CS obiettivo)))
     (VP (VMA~RE sembra)
         (S-EXTPSBJ-2333
             (NP (PRO~RI si))
             (VP (VAU~CG stia)
                 (VP-733 (VMA~GE muovendo)
                     (NP-EXTPSBJ-833 (ART~DE la)
                         (NP (NOU~CS diplomazia))
                         (ADJP
                             (ADJP (ADJ~QU italiana))
                             (CONJ e)
                             (ADJP (ADJ~QU internazionale)))))) (-NONE- *-)
                 (NP-SBJ (-NONE- *-833))))
           (VP-SBJ (-NONE- *-733))
           (. .)) )


************** FRASE NEWS-84 **************

 ( (S
    (VP (VMA~IN Spingere)
        (NP-233 (ART~DE il) (NOU~CS presidente)
            (NP (NOU~PR Sali) (NOU~PR Berisha)))
         (PP
             (PP (PREP al)
                 (NP
                     (NP (ART~DE al) (NOU~CS dialogo))
                     (PP (PREP con)
                         (NP
                             (NP (ART~DE le) (NOU~CP opposizioni))
                             (CONJ e)
                             (NP
                                 (NP (ART~DE i) (NOU~CP partiti))
                                 (PP (PREP del)
                                     (NP (ART~DE del) (NOU~PR Forum)
                                         (, ,)
                                         (SBAR
                                             (NP-1333 (PRO~RE che))
                                             (S
                                                 (NP-SBJ (-NONE- *-1333))
                                                 (VP (VMA~RE riunisce)
                                                     (PP (PREP dagli)
                                                         (NP (ART~DE dagli) (ADJ~QU ex) (NOU~CP comunisti))
                                                         (PP (PREP alla)
                                                             (NP (ART~DE alla) (NOU~CS destra))))))))))))))
                         (, ,)
                         (PP (PREP a)
                             (S
                                 (VP (VMA~IN ritornare)
                                     (PP-LOC (PREP in)
                                         (NP (NOU~CS Parlamento)))
                                      (PP-TMP (PREP dopo)
                                          (NP (ART~IN un) (NOU~PR Aventino)
                                              (SBAR
                                                  (NP-3333 (PRO~RE che))
                                                  (S
                                                      (NP-SBJ (-NONE- *-3333))
                                                      (VP (VMA~RE dura)
                                                          (PP-TMP (PREP da)
                                                              (NP (ADVB oltre) (NUMR sei) (NOU~CP mesi)))))))))
                                         (NP-SBJ (-NONE- *-233))))))
                             (NP-SBJ (-NONE- *))
                             (. .)) )


************** FRASE NEWS-85 **************

 ( (S
    (CONJ Se)
    (S
        (NP-SBJ (ART~DE gli) (NOU~PR STATI_UNITI)
            (PRN
                (, ,)
                (SBAR
                    (NP-6333 (PRO~RE che))
                    (S
                        (NP-SBJ (-NONE- *-6333))
                        (VP (VAU~RE hanno)
                            (VP (VMA~PA attaccato)
                                (ADVP (ADVB duramente))
                                (NP (NOU~PR Berisha))
                                (CONJ dopo)
                                (S
                                    (VP (VAU~IN averlo)
                                        (VP (VMA~PA sostenuto)
                                            (NP-EXTPSBJ-13.1033 (NOU~PR STATI_UNITI))
                                            (PP-TMP (PREP per)
                                                (NP (NOU~CP anni)))))
                                       (NP (PRO~PE averlo))
                                       (NP-SBJ (-NONE- *-13.1033)))))))
                        (, ,)))
                  (VP (VMA~FU appoggeranno)
                      (NP (ADJ~DE questa) (NOU~CS azione))))
                (, ,)
                (ADVP (ADVB forse))
                (NP-SBJ-2233 (ART~DE la) (NOU~CS situazione) (ADJ~QU albanese))
                (VP (VMO~RE puo')
                    (S
                        (VP (VMA~IN trovare)
                            (NP (ART~IN una)
                                (NP (NOU~CS soluzione))
                                (ADJP (ADVB non) (ADJ~QU traumatica))))))
                    (NP-SBJ (-NONE- *-2233))
                    (. .)) )


************** FRASE NEWS-86 **************

 ( (S
    (ADVP (ADVB Altrimenti))
    (PRN
        (, ,)
        (PP (PREP insieme)
            (PP (PREP al)
                (NP
                    (NP (ART~DE al) (NOU~CS crollo))
                    (VP (VMA~PA annunciato)
                        (NP (-NONE- *)))
                     (PP (PREP di)
                         (NP (ADJ~DI altre)
                             (' ') (NOU~CP piramidi)
                             (' ') (ADJ~QU finanziarie))))))
              (, ,))
           (NP (PRO~RI si))
           (VP (VMA~FU aprira')
               (NP
                   (NP (ART~IN un) (ADJ~QU nuovo) (NOU~CS capitolo))
                   (PP (PREP di)
                       (NP (NOU~CS anarchia) (ADJ~QU balcanica)))))
              (. .)) )


************** FRASE NEWS-87 **************

 ( (S
    (VP (VMA~IM Era)
        (NP-PRD
            (NP (ART~DE la) (NOU~CS notte))
            (PP (PREP del)
                (NP (ART~DE del) (NUMR 13) (NOU~CS gennaio))))
          (CONJ quando)
          (S
              (PP-LOC (PREP da) (ADVB qui))
              (VP (VAU~RE e')
                  (VP (VMA~PA partito)
                      (NP-EXTPSBJ-1233 (ART~IN un)
                          (NP (NOU~CS motoscafo))
                          (VP (VMA~PA diretto)
                              (NP (-NONE- *))
                              (PP-LOC (PREP verso)
                                  (NP (ART~DE la) (NOU~CS costa) (ADJ~QU italiana)))
                               (PP (PREP con)
                                   (NP
                                       (NP (NUMR 130) (NOU~CP milioni))
                                       (PP (PREP di)
                                           (NP (NOU~CP dollari)))
                                        (PP (PREP a)
                                            (NP (NOU~CS bordo)))))))))
                       (NP-SBJ (-NONE- *-1233))))
                 (NP-SBJ (-NONE- *))
                 (. .)) )


************** FRASE NEWS-88 **************

 ( (S
    (NP-TMP (NUMR Due) (NOU~CP giorni) (ADVB dopo))
    (NP-SBJ (NOU~PR Sudja) (NOU~PR Kademi)
        (PRN
            (, ,)
            (NP (ART~DE la)
                (' ') (NOU~CS zingara)
                (' '))
             (, ,)))
       (VP (VMA~IM annunciava)
           (PP (PREP agli)
               (NP (ART~DE agli) (NOU~CP albanesi)))
            (CONJ che)
            (S
                (NP-SBJ (ART~DE la) (ADJ~PO sua) (NOU~CS piramide) (ADJ~QU finanziaria))
                (VP (VAU~IM era)
                    (VP (VMA~PA fallita)))))
           (. .)) )


************** FRASE NEWS-89 **************

 ( (S
    (NP-SBJ (ART~DE Il) (NOU~CS malloppo))
    (VP (VAU~RE e')
        (VP (VMA~PA sparito)
            (ADVP (ADVB cosi'))
            (, ,)
            (PP-LOC (PREP sulle)
                (NP
                    (NP (ART~DE sulle) (NOU~CP onde))
                    (PP (PREP dell')
                        (NP (ART~DE dell') (NOU~PR Adriatico)))))))
         (. .)) )


************** FRASE NEWS-90 **************

 ( (S
    (S
        (NP-SBJ-133 (NOU~PR Shaban))
        (VP (VMA~RE e')
            (NP-PRD
                (NP (ART~IN uno)
                    (' ') (NOU~CS scafista)
                    (' '))
                 (PP (PREP di)
                     (NP (NOU~PR Valona))))))
         (CONJ e)
         (S
             (VP (VMA~RE sa)
                 (PP (PREP di)
                     (S
                         (VP (VMA~IN raccontare)
                             (NP (ART~IN una)
                                 (NP (NOU~CS storia))
                                 (SBAR
                                     (S
                                         (NP (PRO~RE che))
                                         (PP-LOC (PREP nella)
                                             (NP (ART~DE nella) (NOU~CA citta') (ADJ~QU ribelle)))
                                          (ADVP-TMP (ADVB ormai))
                                          (VP (VMA~RE conoscono)
                                              (NP-EXTPSBJ-2133 (PRO~ID tutti)))
                                           (NP-SBJ (-NONE- *-2133))))))
                               (NP-SBJ (-NONE- *-10.1033)))))
                      (NP-SBJ-10.1033 (-NONE- *-133)))
                   (. .)) )


************** FRASE NEWS-91 **************

 ( (S
    (NP-133 (ART~DE La) (NOU~CS zingara))
    (PUNCT -)
    (VP (VMA~RE continua)
        (PUNCT -)
        (S
            (VP
                (VP (VMA~IM prometteva)
                    (NP
                        (NP (NOU~CP interessi))
                        (PP (PREP del)
                            (NP (ART~DE del) (NUMR 50) (SPECIAL %)
                                (PP (PREP al)
                                    (NP (ART~DE al) (NOU~CS mese)))
                                 (PP (PREP sui)
                                     (NP (ART~DE sui)
                                         (NP (NOU~CP soldi))
                                         (VP (VMA~PA versati)
                                             (NP (-NONE- *))
                                             (PP-LOC (PREP nella)
                                                 (NP (ART~DE nella) (ADJ~PO sua) (NOU~CS piramide))))))))))
                         (CONJ e)
                         (S
                             (VP (VMA~IM continuava)
                                 (PP (PREP a)
                                     (S
                                         (VP (VMA~IN ripetere)
                                             (PP (PREP a)
                                                 (NP-2433 (PRO~ID tutti)))
                                              (PP (PREP di)
                                                  (S
                                                      (VP (VMA~IN stare)
                                                          (ADJP-PRD (ADJ~QU tranquilli)))
                                                       (NP-SBJ (-NONE- *-2433)))))
                                              (NP-SBJ (-NONE- *-20.1033)))))
                                     (NP-SBJ-20.1033 (-NONE- *-6.1033))))
                               (NP-SBJ-6.1033 (-NONE- *-133))))
                         (NP-SBJ (-NONE- *))
                         (. .)) )


************** FRASE NEWS-92 **************

 ( (S
    (' ')
    (PP-233 (PREP Dietro)
        (PP (PREP di)
            (NP-433 (PRO~PE me))))
      (, ,)
      (VP (VMA~IM diceva)
          (, ,)
          (S
              (NP-LOC (PRO~LO c'))
              (VP (VMA~RE e')
                  (NP-EXTPSBJ-1033 (ART~IN una) (NOU~CS persona) (ADJ~QU competente)))
               (NP-SBJ (-NONE- *-1033))))
         (NP-SBJ (-NONE- *-433))
         (' ')
         (. .)) )


************** FRASE NEWS-93 **************

 ( (S
    (CONJ Ma)
    (NP (ADJ~IR quale) (NOU~CS competenza))
    (PUNCT -)
    (VP (VMA~RE ride)
        (ADJP-PRD-633 (ADJ~QU amaro))
        (NP-EXTPSBJ-733 (NOU~PR Shaban))
        (PUNCT -)
        (S
            (NP-SBJ (PRO~PE io))
            (NP-LOC (PRO~LO ci))
            (VP (VAU~RE ho)
                (VP (VMA~PA rimesso) (NUMR 140)))))
       (NP-SBJ (-NONE- *-733))
       (. .)) )


************** FRASE NEWS-94 **************

 ( (S
    (S
        (NP-SBJ-133
            (NP (ART~DE I) (NOU~CP soldi))
            (PP (PREP delle)
                (NP (ART~DE delle) (NOU~CP finanziarie))))
          (VP (VAU~RE hanno)
              (VP (VMA~PA fatto)
                  (NP
                      (NP (ART~DE il) (NOU~CS giro))
                      (PP (PREP di)
                          (NP (ADJ~IN molte) (NOU~CP tasche)))))))
           (CONJ e)
           (S
               (VP
                   (CONJ dopo)
                   (S
                       (VP (VAU~IN aver)
                           (VP (VMA~PA lasciato)
                               (ADJP-PRD (ADJ~QU AL_VERDE))
                               (NP
                                   (NP (PRO~DE quelle))
                                   (PP (PREP di)
                                       (NP
                                           (ADJP
                                               (ADJP (ADJ~QU ingenui))
                                               (CONJ e)
                                               (ADJP (ADJ~QU onesti)))
                                            (NP (NOU~CP risparmiatori))
                                            (PRN
                                                (-LRB- -LRB-)
                                                (CONJ ma)
                                                (S
                                                    (PP (PREP fra)
                                                        (NP (PRO~DE questi)))
                                                     (ADVP (ADVB non))
                                                     (NP-LOC (PRO~LO ci))
                                                     (VP (VMA~RE sono)
                                                         (ADVP (ADVB sicuramente))
                                                         (NP-EXTPSBJ-3233
                                                             (NP (ART~DE gli) (NOU~CP scafisti))
                                                             (PP (PREP di)
                                                                 (NP (NOU~PR Valona)))))
                                                        (NP-SBJ (-NONE- *-3233)))
                                                     (-RRB- -RRB-)))))))
                                   (NP-SBJ (-NONE- *-39.1033)))
                                (VP (VAU~RE sono)
                                    (ADVP (ADVB anche))) (VMA~PA finiti)
                                 (PP-LOC (PREP nel)
                                     (NP
                                         (NP (ART~DE nel) (NOU~CS circuito))
                                         (PP (PREP della)
                                             (NP (ART~DE della)
                                                 (NP (NOU~CS malavita) (ADJ~QU organizzata))
                                                 (ADJP
                                                     (ADJP (ADJ~QU albanese))
                                                     (CONJ e)
                                                     (ADJP (ADJ~QU italiana))))))))
                                   (NP-SBJ-39.1033 (-NONE- *-133)))
                                (. .)) )


************** FRASE NEWS-95 **************

 ( (S
    (PP-LOC (PREP Da)
        (NP (NOU~PR Valona)
            (CONJ e) (NOU~PR Tirana)))
      (PRN
          (, ,)
          (PP
              (PP (PREP in)
                  (NP (NOU~CS aereo)))
               (CONJ o)
               (PP (PREP con)
                   (NP (NOU~CP barche) (ADJ~QU veloci))))
             (, ,))
          (VP (VMA~IM arrivavano)
              (PP-LOC (PREP alle)
                  (NP
                      (NP (ART~DE alle) (NOU~CP dogane))
                      (PP (PREP di)
                          (NP (NOU~PR Bari)
                              (CONJ e) (NOU~PR Brindisi)))))
                  (NP-EXTPSBJ-2333
                      (NP (NOU~CP valigette)) (-NONE- *-)
                      (ADJP (ADJ~QU piene)
                          (PP (PREP di)
                              (NP (NOU~CP contanti))))
                        (, ,)
                        (VP (VMA~PA trasportate)
                            (NP (-NONE- *))
                            (PP-LGS (PREP da)
                                (NP
                                    (NP (NOU~CP dipendenti))
                                    (CONJ o)
                                    (NP
                                        (NP (NOU~CA portaborse))
                                        (PP (PREP delle)
                                            (NP (ART~DE delle)
                                                (NP (NOU~CP finanziarie))
                                                (VP (VMA~PA fallite)
                                                    (NP (-NONE- *)))))))))))
                         (NP-SBJ (-NONE- *-2033))
                         (. .)) )


************** FRASE NEWS-96 **************

 ( (S
    (PP (PREP Alla)
        (NP (ART~DE Alla) (NOU~CS dogana)))
     (VP (VMA~IM dichiaravano)
         (CONJ che)
         (S
             (VP (VAU~IM stavano)
                 (VP (VMA~GE concludendo)
                     (NP (ART~IN un) (NOU~CS affare))
                     (PP (PREP con)
                         (NP (NOU~CA societa') (ADJ~QU italiane)))))
                (NP-SBJ (-NONE- *-3.1033)))
             (, ,)
             (S
                 (VP (VMA~GE esibendo)
                     (PP (PREP ai)
                         (NP (ART~DE ai) (NOU~CP controlli)))
                      (NP
                          (NP (NOU~CP documenti))
                          (SBAR
                              (NP-1333 (PRO~RE che))
                              (S
                                  (NP-SBJ (-NONE- *-1333))
                                  (VP (VMA~IM apparivano)
                                      (ADJP-PRD (ADJ~QU regolari)))))))
                       (NP-SBJ (-NONE- *-3.1033))))
                 (NP-SBJ-3.1033 (-NONE- *))
                 (. .)) )


************** FRASE NEWS-97 **************

 ( (S
    (NP-SBJ (PRO~RI Si))
    (VP (VMA~IM riciclava)
        (NP (NOU~CS denaro) (ADJ~QU sporco))
        (PP (PREP con)
            (NP (ADJ~IN diversi) (NOU~CP sistemi))))
      (. .)) )


************** FRASE NEWS-98 **************

 ( (S
    (NP-SBJ-133 (ART~DE Le) (NOU~CP piramidi))
    (PRN
        (, ,)
        (ADVP (ADVB PER_ESEMPIO))
        (, ,))
     (VP (VMA~IM investivano)
         (S
             (VP (VMA~GE acquistando)
                 (NP
                     (NP (NOU~CP immobili))
                     (, ,)
                     (NP
                         (NP (NOU~CP terreni))
                         (CONJ ed)
                         (NP
                             (NP (ADJ~QU ex) (NOU~CP aziende))
                             (PP (PREP di)
                                 (NP (NOU~CS Stato))))))
                     (, ,)
                     (PP (PREP a)
                         (NP (ART~IN un)
                             (NP (NOU~CS valore) (ADJ~QU nominale))
                             (S
                                 (S
                                     (NP-2333 (PRO~RE che) (-NONE- *-))
                                     (S
                                         (NP-SBJ-2233 (-NONE- *-2333))
                                         (PP (PREP sulla)
                                             (NP (ART~DE sulla) (NOU~CS carta)))
                                          (VP (VMA~IM-2533 era)
                                              (NP-PRD (NUMR cento)))))
                                     (CONJ ma)
                                     (S
                                         (VP (-NONE- *-2533)
                                             (ADVP (ADVB IN_REALTÀ))
                                             (ADVP-TMP (ADVB spesso))
                                             (ADJP-PRD
                                                 (NP (NUMR dieci) (NOU~CP volte)) (ADJ~QU inferiore)))
                                           (NP-SBJ (-NONE- *-2233)))))))
                            (NP-SBJ (-NONE- *-133))))
                      (. .)) )


************** FRASE NEWS-99 **************

 ( (NP
    (NP (NOU~CP Operazioni))
    (VP (VMA~PA gonfiate)
        (NP (-NONE- *)))
     (SBAR
         (NP-3333 (PRO~RE che))
         (S
             (NP-SBJ (-NONE- *-3333))
             (VP (VMA~IM giustificavano)
                 (NP
                     (NP (ART~DE il) (NOU~CS passaggio))
                     (PP (PREP di)
                         (NP
                             (NP (ADJ~QU forti) (NOU~CP somme))
                             (PP (PREP di)
                                 (NP (NOU~CS denaro)))))
                        (PP-LOC
                            (PP (PREP da)
                                (NP (ART~IN una) (NOU~CA societa'))
                                (PP-LOC (PREP all')
                                    (NP (ART~DE all') (PRO~ID altra))))
                              (, ,)
                              (PP
                                  (PP (PREP da)
                                      (NP (ART~IN una) (NOU~CS mano))
                                      (PP-LOC (PREP all')
                                          (NP (ART~DE all') (PRO~ID altra))))
                                    (, ,)
                                    (PP (PREP da)
                                        (NP (ART~IN un) (NOU~CS Paese))
                                        (PP-LOC (PREP all')
                                            (NP (ART~DE all') (PRO~ID altro))))))))))
                    (. .)) )


************** FRASE NEWS-100 **************

 ( (S
    (PP-LOC (PREP Nella)
        (NP (ART~DE Nella)
            (NP-233
                (NP (NOU~CS nazione))
                (ADJP (ADVB piu') (ADJ~QU povera))
                (PP (PREP d')
                    (NP (NOU~PR Europa))))
              (CONJ e)
              (NP (-NONE- *-233)
                  (PP (PREP con)
                      (NP (ART~IN un')
                          (NP (NOU~CS economia))
                          (ADVP-TMP (ADVB appena))
                          (VP (VMA~PA avviata)
                              (NP (-NONE- *))
                              (PP (PREP a)
                                  (S
                                      (VP (VMA~IN uscire)
                                          (PP-LOC (PREP dalle)
                                              (NP
                                                  (NP (ART~DE dalle) (NOU~CP tenebre))
                                                  (PP (PREP del)
                                                      (NP (ART~DE del) (NOU~CS sottosviluppo))))))
                                          (NP-SBJ (-NONE- *-12.1033))))))))))
                  (, ,)
                  (VP (VMA~IM circolavano)
                      (NP-EXTPSBJ-2133 (NOU~CP capitali) (ADJ~QU ingenti)))
                   (NP-SBJ (-NONE- *-2133))
                   (. .)) )


************** FRASE NEWS-101 **************

 ( (S
    (S
        (VP
            (PP (PREP Da)
                (NP (NOU~PR Tirana)))
             (VP (VAU~RE ho)
                 (VP (VMA~PA avuto)
                     (NP
                         (NP (NOU~CP proposte))
                         (PP (PREP di)
                             (NP (NOU~CP affari)))
                          (PP (PREP da)
                              (NP
                                  (NP (NUMR 100) (NOU~CP milioni))
                                  (PP (PREP di)
                                      (NP (NOU~CP dollari))))))))
                    (CONJ ma)
                    (S
                        (NP (PRO~PE le))
                        (VP (VAU~RE ho)
                            (VP (VMA~PA respinte)))
                         (NP-SBJ (-NONE- *-4.1033))))
                   (NP-SBJ-4.1033 (-NONE- *)))
                (, ,)
                (VP (VMA~RE dichiara)
                    (NP-EXTPSBJ-1933
                        (NP (ART~IN un) (NOU~CS funzionario))
                        (PP (PREP di)
                            (NP (ART~IN una) (NOU~CS banca) (ADJ~QU europea)))
                         (, ,)
                         (VP (VMA~PA insospettito)
                             (NP (-NONE- *))
                             (PP-LGS (PREP dal)
                                 (NP
                                     (NP (ART~DE dal) (NOU~CS volume))
                                     (PP (PREP di)
                                         (NP
                                             (NP (NOU~CP operazioni))
                                             (ADJP (ADVB decisamente) (ADJ~QU sproporzionate)
                                                 (PP (PREP rispetto)
                                                     (PP (PREP ai)
                                                         (NP
                                                             (NP (ART~DE ai) (NOU~CP bilanci))
                                                             (PP (PREP degli)
                                                                 (NP
                                                                     (NP (ART~DE degli) (NOU~CP istituti) (ADJ~QU locali))
                                                                     (PP (PREP di)
                                                                         (NP (NOU~CS credito))))))))))))))))
                               (NP-SBJ (-NONE- *-1933))
                               (. .)) )


************** FRASE NEWS-102 **************

 ( (S
    (S
        (VP (VMA~RE È)
            (ADJP-PRD (ADJ~QU certo))
            (CONJ che)
            (S
                (PP (PREP in)
                    (NP (ADJ~DE questo) (NOU~CS giro)))
                 (NP-LOC (PRO~LO ci))
                 (VP (VAU~RE sono)
                     (VP (VMA~PA stati)
                         (NP-EXTPSBJ-2333
                             (NP (NOU~CP soldi)) (-NONE- *-)
                             (VP (VMA~PA riciclati)
                                 (NP (-NONE- *))))))
                     (NP-SBJ (-NONE- *-1033)))))
            (, ,)
            (CONJ e)
            (S
                (ADVP (ADVB forse))
                (ADVP (ADVB non))
                (VP (VMA~RE e')
                    (NP-PRD (ART~IN un) (NOU~CS caso))
                    (CONJ che)
                    (S
                        (NP-SBJ
                            (NP (PRDT tutti) (ART~DE i) (NOU~CP finanzieri))
                            (PP (PREP d')
                                (NP (NOU~CS assalto))))
                          (VP (VMA~IM provenissero)
                              (PP-LOC (PREP da)
                                  (NP (NOU~PR Valona)))))))
                   (. .)) )


************** FRASE NEWS-103 **************

 ( (S
    (NP (PRO~PE Lo))
    (VP (VMA~RE dichiara)
        (NP-EXTPSBJ-2333 (NOU~PR Dashim) (-NONE- *-) (NOU~PR Shehi)
            (PRN
                (, ,)
                (NP
                    (NP (NOU~CS presidente))
                    (PP (PREP della)
                        (NP (ART~DE della) (NOU~CS commissione) (NOU~PR Industria))))
                  (, ,))
               (VP (VMA~PA eletto)
                   (NP (-NONE- *))
                   (ADVP-LOC (ADVB qui))
                   (NP-PRD (NOU~CS deputato))
                   (PP-LOC (PREP nelle)
                       (NP
                           (NP (ART~DE nelle) (NOU~CP file))
                           (PP (PREP del)
                               (NP
                                   (NP (ART~DE del) (NOU~CS Partito) (ADJ~QU democratico))
                                   (PP (PREP del)
                                       (NP (ART~DE del) (NOU~CS presidente)
                                           (NP (NOU~PR Sali) (NOU~PR Berisha)))))))))))
                (NP-SBJ (-NONE- *-333))
                (. .)) )


************** FRASE NEWS-104 **************

 ( (S
    (PP-133 (PREP Sulla)
        (NP (ART~DE Sulla)
            (NP (NOU~CS rete))
            (VP (VMA~PA impiantata)
                (NP (-NONE- *))
                (PP (PREP per)
                    (S
                        (VP (VMA~IN trasferire)
                            (NP (ART~DE gli) (NOU~CP emigrati) (ADJ~QU clandestini))
                            (PP-LOC (PREP in)
                                (NP (NOU~PR Italia))))
                          (NP-SBJ (-NONE- *)))))))
           (PUNCT -)
           (VP (VMA~RE continua)
               (NP-EXTPSBJ-1333 (NOU~PR Shehi))
               (PUNCT -)
               (S
                   (VP (VAU~RE e')
                       (VP (VAU~PA stato)
                           (VP (VMA~PA costruito))))
                     (PP-LOC (-NONE- *-133))
                     (NP-SBJ (-NONE- *-1833))
                     (NP-EXTPSBJ-1833 (ART~IN un)
                         (NP (NOU~CA network))
                         (SBAR
                             (NP-2333 (PRO~RE che) (-NONE- *-))
                             (S
                                 (NP-SBJ-2033 (-NONE- *-2333))
                                 (VP (VAU~RE e')
                                     (VP (VMA~PA servito)
                                         (PP (PREP a)
                                             (S
                                                 (VP (VMA~IN sostenere)
                                                     (NP (ADJ~DI altri) (NOU~CP traffici) (ADJ~QU illegali)
                                                         (, ,)
                                                         (NP
                                                             (NP
                                                                 (NP (ADVB anche) (ART~DE il) (NOU~CS lavaggio))
                                                                 (PP (PREP di)
                                                                     (NP (NOU~CP soldi) (ADJ~QU sporchi))))
                                                               (CONJ e)
                                                               (NP
                                                                   (NP (ART~DE le) (NOU~CP esportazioni) (ADJ~QU illecite))
                                                                   (PP (PREP di)
                                                                       (NP (NOU~CP capitali)))))))
                                                        (NP-SBJ (-NONE- *-2033)))))))))))
                             (NP-SBJ (-NONE- *-1333))
                             (. .)) )


************** FRASE NEWS-105 **************

 ( (S
    (CONJ E)
    (VP (VMA~RE aggiunge)
        (NP-EXTPSBJ-333 (ART~DE il) (NOU~CS deputato)))
     (NP-SBJ (-NONE- *-333))
     (: :)) )


************** FRASE NEWS-106 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE la) (NOU~CS rete))
        (PP (PREP dei)
            (NP (ART~DE dei) (NOU~CP clandestini))))
      (ADVP-TMP (ADVB ormai))
      (VP (VMA~RE e')
          (ADJP-PRD (ADJ~QU impossibile)
              (PP (PREP da)
                  (S
                      (VP (VMA~IN smantellare)
                          (NP (-NONE- *-133)))
                       (NP-SBJ (-NONE- *))))))
           (. .)) )


************** FRASE NEWS-107 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Gli) (NOU~CP scafisti))
        (PP (PREP di)
            (NP (NOU~PR Valona))))
      (VP (VAU~RE hanno)
          (VP (VMA~PA avuto)
              (NP (ART~IN un) (NOU~CS ruolo) (ADJ~QU importante))
              (PP-LOC (PREP nella)
                  (NP (ART~DE nella) (NOU~CS bolla) (ADJ~QU finanziaria) (ADJ~QU albanese)))))
         (. .)) )


************** FRASE NEWS-108 **************

 ( (S
    (VP (VMA~IM Erano)
        (NP-EXTPSBJ-233 (PRO~PE loro))
        (NP-PRD
            (NP (PRO~DE quelli))
            (SBAR
                (NP-4333 (PRO~RE che))
                (S
                    (NP-SBJ (-NONE- *-4333))
                    (PP-LOC (PREP in)
                        (NP (NOU~CA citta')))
                     (VP (VMA~IM guadagnavano)
                         (ADVP (ADVB DI_PIÙ)))))))
          (NP-SBJ (-NONE- *-233))
          (. .)) )


************** FRASE NEWS-109 **************

 ( (S
    (S
        (NP-SBJ-133 (PRO~ID Tutti))
        (NP (PRO~PE li))
        (VP (VMA~IM conoscevano)))
     (, ,)
     (S
         (VP
             (VP (VMA~IM sapevano)
                 (CONJ che)
                 (S
                     (VP (VMA~IM investivano)
                         (PP-LOC (PREP nelle)
                             (NP (ART~DE nelle) (NOU~CP piramidi))))
                       (NP-SBJ (-NONE- *-5.1033))))
                 (CONJ e)
                 (S
                     (NP-SBJ (PRO~ID molti))
                     (NP (PRO~PE li))
                     (VP (VAU~RE hanno)
                         (VP (VMA~PA imitati)))))
                (NP-SBJ-5.1033 (-NONE- *-133)))
             (. .)) )


************** FRASE NEWS-110 **************

 ( (S
    (PP-TMP (PREP All')
        (NP
            (NP (ART~DE All') (NOU~CS inizio))
            (PP (PREP dell')
                (NP (ART~DE dell')
                    (" ") (NOU~CA attivita')
                    (" ")))))
        (ADVP (ADVB DI_SOLITO))
        (VP (VMA~IM erano)
            (PP-PRD (PREP in)
                (NP
                    (NP (NOU~CA societa'))
                    (PP (PREP con)
                        (NP (ART~DE gli)
                            (NP (NOU~CP italiani))
                            (, ,)
                            (S
                                (S
                                    (S
                                        (PP (PREP da)
                                            (NP (PRO~RE cui)))
                                         (VP (VMA~IM affittavano)
                                             (NP (ART~DE le) (NOU~CP barche)))
                                          (NP-SBJ (-NONE- *-9.1033))))
                                    (CONJ e)
                                    (S
                                        (VP (VMA~IM dividevano)
                                            (PP (PREP al)
                                                (NP (ART~DE al) (NUMR 50) (SPECIAL %)))
                                             (NP (ART~DE i) (NOU~CP guadagni)))
                                          (NP-SBJ (-NONE- *-9.1033)))))))))
                     (NP-SBJ-9.1033 (-NONE- *))
                     (. .)) )


************** FRASE NEWS-111 **************

 ( (S
    (ADVP-TMP (ADVB Poi))
    (PRN
        (, ,)
        (PP-TMP (PREP alla)
            (NP
                (NP (ART~DE alla) (NOU~CS fine))
                (PP (PREP del)
                    (NP (ART~DE del) (DATE '93)))))
           (, ,))
        (VP (VAU~RE hanno)
            (VP (VMA~PA cominciato)
                (PP (PREP a)
                    (S
                        (VP (VMA~IN comprare)
                            (NP
                                (NP (NOU~CP gommoni))
                                (CONJ e)
                                (NP (NOU~CP motoscafi))))
                          (NP-SBJ (-NONE- *-9.1033))))
                    (S
                        (VP (VMA~GE mettendosi)
                            (NP (PRO~RI mettendosi))
                            (PP (PREP in)
                                (NP (PRO~PO proprio))))
                          (NP-SBJ (-NONE- *-9.1033)))))
                 (NP-SBJ-9.1033 (-NONE- *))
                 (. .)) )


************** FRASE NEWS-112 **************

 ( (S
    (NP-SBJ
        (NP (ART~IN Un) (NOU~CS passaggio))
        (PP (PREP per)
            (NP (ART~IN un) (NOU~CS emigrante) (ADJ~QU clandestino) (ADJ~QU albanese))))
      (VP (VMA~RE costa)
          (PP (PREP dai)
              (NP (ART~DE dai) (NUMR 600))
              (PP (PREP ai)
                  (NP (ART~DE ai)
                      (NP (NUMR 1.000)) (NOU~CP dollari)))))
          (. .)) )


************** FRASE NEWS-113 **************

 ( (S
    (ADVP-PRD (ADVB Molto) (ADVB DI_PIÙ))
    (VP (VMA~RE e')
        (NP-EXTPSBJ-533 (ART~DE la)
            (NP (NOU~CS tariffa))
            (VP (VMA~PA richiesta)
                (NP (-NONE- *))
                (PP (PREP agli)
                    (NP (ART~DE agli) (NOU~CP stranieri)
                        (, ,)
                        (NP
                            (NP (NOU~CP curdi))
                            (, ,)
                            (NP
                                (NP (NOU~CP cinesi))
                                (, ,)
                                (NP (NOU~CS singalesi)))))))))
           (NP-SBJ (-NONE- *-533))
           (. .)) )


************** FRASE NEWS-114 **************

 ( (NP
    (NP (NUMR 2.500) (NOU~CP dollari))
    (PP (PREP per)
        (S
            (VP (VMA~IN toccare)
                (NP
                    (NP (ART~DE l') (ADJ~DI altra) (NOU~CS sponda))
                    (PP (PREP dell')
                        (NP (ART~DE dell') (NOU~PR Adriatico)))))
               (NP-SBJ (-NONE- *))))
         (. .)) )


************** FRASE NEWS-115 **************

 ( (S
    (PP-TMP (PREP Dopo)
        (NP
            (NP (ART~DE gli) (NOU~CP accordi))
            (PP (PREP di)
                (NP (NOU~PR Tirana)))
             (PP (PREP con)
                 (NP (ART~DE l') (NOU~PR Italia)))
              (PP (PREP per)
                  (S
                      (VP (VMA~IN sorvegliare)
                          (NP (ART~DE il) (NOU~CS traffico)))
                       (NP-SBJ (-NONE- *))))))
           (, ,)
           (NP-SBJ-1433 (ART~DE la) (NOU~CS polizia) (ADJ~QU albanese))
           (VP (VAU~RE ha)
               (VP (VMA~PA cominciato)
                   (PP (PREP a)
                       (S
                           (VP (VMA~IN rafforzare)
                               (NP (ART~DE i) (NOU~CP controlli)))))))
                (NP-SBJ (-NONE- *-1433))
                (. .)) )


************** FRASE NEWS-116 **************

 ( (S
    (PP-TMP (PREP Nel)
        (NP (ART~DE Nel) (DATE '96)))
     (PP-TMP (PREP in)
         (NP (NUMR ventiquattro) (NOU~CP ore)))
      (VP (VAU~RE sono)
          (VP (VAU~PA state)
              (VP (VMA~PA sequestrate))))
        (NP-SBJ (-NONE- *-933))
        (NP-EXTPSBJ-933 (NUMR 35) (NOU~CP barche))
        (, ,)
        (NP (ART~IN una)
            (NP (NOU~CS giornata) (ADJ~QU nera))
            (SBAR
                (S
                    (VP
                        (NP (PRO~RE che))
                        (NP-EXTPSBJ-1633
                            (NP (ART~DE gli) (NOU~CP scafisti))
                            (PP-LOC (PREP di)
                                (NP (NOU~PR Valona))))
                          (ADVP (ADVB non))
                          (VP (VAU~RE hanno)
                              (ADVP-TMP (ADVB mai))) (VMA~PA dimenticato))
                        (NP-SBJ (-NONE- *-1633)))))
               (. .)) )


************** FRASE NEWS-117 **************

 ( (S
    (CONJ Appena)
    (S
        (NP-SBJ
            (NP (ART~DE la) (NOU~CS folla))
            (PP (PREP in)
                (NP
                    (NP (NOU~CS rivolta))
                    (PP (PREP per)
                        (NP
                            (NP (ART~DE il) (NOU~CA crack))
                            (PP (PREP delle)
                                (NP (ART~DE delle) (NOU~CP finanziarie))))))))
              (VP (VAU~RE ha)
                  (VP (VMA~PA preso)
                      (NP
                          (NP (ART~DE il) (NOU~CS controllo))
                          (PP (PREP della)
                              (NP (ART~DE della)
                                  (NP (NOU~CA citta'))
                                  (, ,)
                                  (VP (VMA~PA rimasta)
                                      (NP (-NONE- *))
                                      (S-PRD
                                          (VP (VMA~PA abbandonata)
                                              (ADVP-TMP (ADVB anche) (ADVB ieri))
                                              (PP-LGS (PREP dalle)
                                                  (NP
                                                      (NP (ART~DE dalle) (NOU~CP forze))
                                                      (PP (PREP dell')
                                                          (NP (ART~DE dell') (NOU~CS ordine))))))
                                              (NP-SBJ (-NONE- *-18.1033))))))))))
                      (, ,)
                      (NP-SBJ-2733 (ART~DE gli) (NOU~CP scafisti))
                      (NP (PRO~RI si))
                      (VP (VAU~RE sono)
                          (VP (VMA~PA diretti)
                              (PP (PREP con)
                                  (NP
                                      (NP (NOU~CA auto))
                                      (CONJ e)
                                      (NP (NOU~CP carrelli))))
                                (PP-LOC (PREP al)
                                    (NP
                                        (NP (ART~DE al) (NOU~CS porto))
                                        (PP (PREP di)
                                            (NP (NOU~PR Ravima)))
                                         (SBAR
                                             (S
                                                 (NP-LOC (PRO~LO dove))
                                                 (NP (PRO~RI si))
                                                 (VP (VAU~RE sono)
                                                     (VP (VMA~PA portati)
                                                         (ADVP-LOC (ADVB via))
                                                         (NP
                                                             (NP (NUMR 135) (NOU~CP barche))
                                                             (VP (VMA~PA sequestrate)
                                                                 (NP (-NONE- *))))))))))))
                                   (NP-SBJ (-NONE- *-2733))
                                   (. .)) )


************** FRASE NEWS-118 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE I) (NOU~CP poliziotti))
        (PP (PREP di)
            (NP (NOU~CS guardia)))
         (PRN
             (, ,)
             (NP
                 (NP
                     (ADVP (ADVB non)) (PRO~ID piu'))
                  (CONJ di)
                  (NP (NUMR cinque)))
               (, ,)))
         (VP (VAU~RE hanno)
             (VP (VMA~PA dovuto)
                 (PP (PREP per)
                     (NP (NOU~CS forza)))
                  (S
                      (VP (VMA~IN lasciar)
                          (S
                              (VP (VMA~IN fare))
                              (NP-SBJ (-NONE- *))))
                        (NP-SBJ (-NONE- *-133)))))
               (. .)) )


************** FRASE NEWS-119 **************

 ( (S
    (PP-LOC (PREP A)
        (NP (NOU~PR Valona)
            (PRN
                (, ,)
                (SBAR
                    (S
                        (NP-LOC (PRO~LO dove))
                        (ADVP-TMP (ADVB ieri))
                        (VP (VAU~RE e')
                            (VP (VAU~PA stata)
                                (VP (VMA~PA convocata))))
                          (NP-SBJ (-NONE- *-933))
                          (NP-EXTPSBJ-933
                              (NP (ART~IN un') (ADJ~DI altra) (NOU~CS manifestazione))
                              (PP (PREP di)
                                  (NP (NOU~CS protesta)))
                               (SBAR
                                   (S
                                       (NP (PRO~RE cui))
                                       (VP (VAU~RE hanno)
                                           (VP (VMA~PA partecipato)
                                               (NP-EXTPSBJ-1733 (NUMR 5.000) (NOU~CP persone))))
                                         (NP-SBJ (-NONE- *-1733)))))))
                          (, ,))))
                 (NP-SBJ (ART~DE l') (NOU~CS atmosfera))
                 (VP (VMA~RE e')
                     (ADJP-PRD (ADVB meno) (ADJ~QU elettrica)))
                  (. .)) )


************** FRASE NEWS-120 **************

 ( (S
    (CONJ Ma)
    (PP-TMP (PREP in)
        (NP (NOU~CS serata)))
     (NP-SBJ
         (NP (ART~IN un) (NOU~CS agente))
         (PP (PREP in)
             (NP
                 (NP (NOU~CS servizio))
                 (PP (PREP nel)
                     (NP
                         (NP (ART~DE nel) (NOU~CS commissariato))
                         (PP (PREP di)
                             (NP (NOU~CS polizia))))))))
           (VP (VAU~RE e')
               (VP (VAU~PA stato)
                   (VP (VMA~PA ucciso))))
             (PP (PREP in)
                 (NP (ART~IN un) (NOU~CS agguato)))
              (. .)) )


************** FRASE NEWS-121 **************

 ( (S
    (NP-SBJ
        (NP (ART~IN Un) (NOU~CS momento))
        (PP (PREP di)
            (NP (NOU~CS tensione))))
      (NP-LOC (PRO~LO c'))
      (VP (VAU~RE e')
          (VP (VMA~PA stato)
              (CONJ quando)
              (S
                  (NP (PRO~RI si))
                  (VP (VAU~RE e')
                      (VP (VMA~PA diffusa)
                          (NP-EXTPSBJ-1233 (ART~DE la)
                              (NP (NOU~CS voce))
                              (PRN
                                  (, ,)
                                  (ADJP (ADJ~QU infondata))
                                  (, ,))
                               (CONJ che)
                               (S
                                   (VP (VAU~IM erano)
                                       (VP (VAU~PA state)
                                           (VP (VMA~PA minate))))
                                     (NP-SBJ (-NONE- *-2133))
                                     (NP-EXTPSBJ-2133
                                         (NP (ART~DE le) (NOU~CP aree))
                                         (PP (PREP intorno)
                                             (PP (PREP a)
                                                 (NP (ADJ~IN qualche) (NOU~CS edificio) (ADJ~QU pubblico)))))))))
                            (NP-SBJ (-NONE- *-1233)))))
                   (. .)) )


************** FRASE NEWS-122 **************

 ( (S
    (S
        (NP-SBJ (ART~DE L') (NOU~CS allarme))
        (ADVP-TMP (ADVB poi))
        (VP (VAU~RE e')
            (VP (VMA~PA rientrato))))
      (, ,)
      (CONJ ed)
      (S
          (VP (VAU~RE e')
              (VP (VAU~PA stata)
                  (VP (VMA~PA accolta))))
            (NP-SBJ (-NONE- *-1333))
            (PP (PREP con)
                (NP (NOU~CS soddisfazione)))
             (NP-EXTPSBJ-1333
                 (NP (ART~DE la) (NOU~CS destituzione))
                 (PP (PREP del)
                     (NP
                         (NP (ART~DE del) (NOU~CS capo))
                         (PP (PREP della)
                             (NP (ART~DE della) (NOU~CS polizia)))))))
              (. .)) )


************** FRASE NEWS-123 **************

 ( (S
    (PP (PREP Ai)
        (NP (ART~DE Ai) (NOU~CP valonesi)))
     (NP-SBJ (ADJ~DE quel) (NOU~CS poliziotto))
     (ADVP (ADVB non))
     (VP (VMA~IM piaceva)
         (ADVP (ADVB proprio)))
      (. .)) )


************** FRASE NEWS-124 **************

 ( (S
    (ADVP (ADVB Forse))
    (VP (VAU~IM aveva)
        (VP (VMA~PA preso)
            (ADVP (ADVB troppo) (ADVB SUL_SERIO))
            (NP
                (NP (ART~DE il) (ADJ~PO suo) (NOU~CS lavoro))
                (PP (PREP di)
                    (S
                        (VP (VMA~IN frenare)
                            (NP
                                (NP (ART~DE il) (NOU~CA boom))
                                (PP (PREP dei)
                                    (NP
                                        (NP (ART~DE dei) (NOU~CP traffici) (ADJ~QU illegali))
                                        (, ,)
                                        (PP (PREP da)
                                            (NP
                                                (NP (PRO~DE quello))
                                                (PP (PREP dei)
                                                    (NP (ART~DE dei) (NOU~CP clandestini))))
                                              (PP (PREP alla)
                                                  (NP (ART~DE alla) (NOU~CS droga))))))))
                                (NP-SBJ (-NONE- *-3.1033)))))))
                 (NP-SBJ-3.1033 (-NONE- *))
                 (. .)) )


************** FRASE NEWS-125 **************

 ( (S
    (PP (PREP Con)
        (NP
            (NP (ART~DE l') (NOU~CS aumento))
            (PP (PREP della)
                (NP
                    (NP (ART~DE della) (NOU~CS produzione))
                    (PP (PREP di)
                        (NP (NOU~CA marijuana)))
                     (PRN
                         (, ,)
                         (VP (VMA~PA iniziata)
                             (NP (-NONE- *))
                             (PP-LOC (PREP in)
                                 (NP (NOU~PR Albania)))
                              (NP-TMP (ADVB circa)
                                  (NP (NUMR tre) (NOU~CP anni) (ADJ~DI fa))))
                            (, ,))))))
             (NP-SBJ
                 (NP (ART~DE l') (NOU~CS esportazione))
                 (PP (PREP di)
                     (NP (NOU~CA hashish))))
               (VP (VAU~RE e')
                   (VP (VMA~PA diventata)
                       (NP-PRD
                           (NP (ART~IN un') (ADJ~DI altra) (NOU~CS fonte))
                           (PP (PREP di)
                               (NP (NOU~CS reddito))))
                         (PP (PREP per)
                             (NP
                                 (NP (NOU~CP contrabbandieri))
                                 (CONJ e)
                                 (NP (NOU~CP scafisti))))))
                     (. .)) )


************** FRASE NEWS-126 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (PRO~DE Quelli))
        (SBAR
            (NP-2333 (PRO~RE che))
            (S
                (NP-SBJ (-NONE- *-2333))
                (ADVP (ADVB non))
                (VP (VAU~RE hanno)
                    (VP (VMA~PA investito)
                        (NP (PRDT tutti) (ART~DE i) (NOU~CP soldi))
                        (PP (PREP nelle)
                            (NP (ART~DE nelle) (NOU~CP piramidi))))))))
          (NP (PRO~RI si))
          (VP (VAU~RE sono)
              (VP (VMA~PA costruiti)
                  (NP
                      (NP
                          (NP (NOU~CP villette) (ADJ~QU abusive))
                          (PP-LOC (PREP sul)
                              (NP (ART~DE sul) (NOU~CS lungomare))))
                        (, ,)
                        (NP
                            (NP (NOU~CP ristoranti))
                            (, ,)
                            (NP (NOU~CP chioschi))))))
                (. .)) )


************** FRASE NEWS-127 **************

 ( (S
    (NP-SBJ-133 (ART~DE I)
        (ADJP (ADVB piu') (ADJ~QU ricchi)))
     (VP (VAU~RE hanno)
         (VP (VMA~PA puntato)
             (PP (PREP ad)
                 (S
                     (VP (VMA~IN acquistare)
                         (NP (ART~IN una) (NOU~CS residenza))
                         (PP-LOC (PREP ad)
                             (NP (NOU~PR Acquafredda)
                                 (, ,)
                                 (PP (PREP a)
                                     (NP
                                         (NP (NOU~CS sud))
                                         (PP (PREP del)
                                             (NP (ART~DE del) (NOU~CS porto))))))))
                           (NP-SBJ (-NONE- *-133))))))
               (. .)) )


************** FRASE NEWS-128 **************

 ( (NP
    (NP (NOU~CS Zona) (ADJ~QU prestigiosa))
    (, ,)
    (SBAR
        (S
            (VP
                (NP-LOC (PRO~LO dove))
                (NP-TMP (ART~IN un) (NOU~CS tempo))
                (NP-LOC (PRO~LO-733 c'))
                (VP (VMA~IM-833 era)
                    (NP-EXTPSBJ-933
                        (NP (ART~DE la) (NOU~CS villa))
                        (PP (PREP di)
                            (NP (NOU~PR Enver) (NOU~PR Hoxha)))))
                   (CONJ e)
                   (S
                       (VP (-NONE- *-833)
                           (NP-LOC (-NONE- *-733))
                           (ADVP-TMP (ADVB oggi))
                           (NP-EXTPSBJ-1633
                               (NP (PRO~DE quella))
                               (PP (PREP del)
                                   (NP (ART~DE del) (NOU~CS presidente)
                                       (NP (NOU~PR Sali) (NOU~PR Berisha))))))
                           (NP-SBJ (-NONE- *-1633))))
                     (NP-SBJ (-NONE- *-933))))
               (. .)) )


************** FRASE NEWS-129 **************

 ( (S
    (PP-LOC (PREP Lungo)
        (NP (ART~DE la) (NOU~CS costiera)))
     (PRN
         (, ,)
         (PP (PREP prima)
             (PP (PREP di)
                 (S
                     (VP (VMA~IN arrivare)
                         (PP-LOC (PREP alla)
                             (NP
                                 (NP (ART~DE alla)
                                     (' ') (NOU~CS baia)
                                     (' '))
                                  (PP (PREP dei)
                                      (NP (ART~DE dei) (NOU~CP contrabbandieri))))))
                          (NP-SBJ (-NONE- *)))))
                 (, ,))
              (NP-LOC (PRO~LO c'))
              (VP (VMA~RE e')
                  (NP-EXTPSBJ-1733
                      (NP (ART~DE la) (NOU~CS penisola))
                      (PP (PREP di)
                          (NP (NOU~PR Karaburun)))))
                 (NP-SBJ (-NONE- *-1733))
                 (. .)) )


************** FRASE NEWS-130 **************

 ( (S
    (S
        (VP (VMA~PA Crollato)
            (NP-EXTPSBJ-233 (ART~DE lo) (NOU~CS stalinismo)))
         (NP-SBJ (-NONE- *-233)))
      (, ,)
      (NP-SBJ-533 (NOU~PR Cenaj))
      (VP (VAU~RE e')
          (VP (VMA~PA emerso)
              (PP-LOC (PREP dal)
                  (NP (ART~DE dal) (NOU~CA nulla)))
               (PP (PREP per)
                   (S
                       (VP (VMA~IN impiantare)
                           (NP
                               (NP (ART~IN una) (NOU~CA societa'))
                               (PP (PREP di)
                                   (NP (NOU~CA import-export)))
                                (VP (VMA~PA diventata)
                                    (NP (-NONE- *))
                                    (PP-TMP (PREP in)
                                        (NP (ADJ~IN poco) (NOU~CS tempo)))
                                     (NP-PRD
                                         (NP (PRO~ID una))
                                         (PP (PREP delle)
                                             (NP
                                                 (NP (ART~DE delle) (NOU~CA holding))
                                                 (ADJP (ADVB piu') (ADJ~QU IN_VISTA))
                                                 (PP (PREP del)
                                                     (NP (ART~DE del) (NOU~CS Paese)))))))))
                                (NP-SBJ (-NONE- *-533))))))
                    (. .)) )


************** FRASE NEWS-131 **************

 ( (NP (ART~IN Un')
    (NP
        (NP (ADJ~DI altra) (NOU~CS piramide))
        (, ,)
        (SBAR
            (NP-5333 (PRO~RE che))
            (S
                (NP-SBJ (-NONE- *-5333))
                (PP-TMP (PREP nei)
                    (NP
                        (NP (ART~DE nei) (NOU~CP momenti))
                        (PP (PREP di)
                            (NP (NOU~CS gloria)))))
                   (VP (VMA~IM pagava)
                       (NP (NUMR 3.000) (NOU~CP dollari))
                       (NP
                           (NP (ART~IN un) (NOU~CS minuto))
                           (PP (PREP di)
                               (NP
                                   (NP (NOU~CA pubblicita'))
                                   (PP (PREP sulla)
                                       (NP
                                           (NP (ART~DE sulla) (NOU~CA tv))
                                           (PP (PREP di)
                                               (NP (NOU~CS Stato))))))))))))
                 (. .)) )


************** FRASE NEWS-132 **************

 ( (S
    (NP-SBJ (NOU~PR Karaburun))
    (PP (PREP per)
        (NP (ART~DE i) (NOU~CP valonesi)))
     (VP (VMA~RE e')
         (NP-PRD
             (NP (ART~IN un') (ADJ~DI altra) (NOU~CS pagina) (ADJ~QU gloriosa))
             (PP (PREP della)
                 (NP
                     (NP (ART~DE della) (NOU~CS storia))
                     (PP (PREP di)
                         (NP
                             (NP (ART~IN un) (NOU~CS popolo))
                             (PP
                                 (PP (PREP dal)
                                     (NP (ART~DE dal) (NOU~CS sangue) (ADJ~QU caldo)))
                                  (, ,)
                                  (ADJP
                                      (ADJP (ADJ~QU nazionalista))
                                      (CONJ e)
                                      (NP
                                          (NP (ADVB oggi) (NOU~CS incrocio))
                                          (PP (PREP di)
                                              (NP (NUMR mille) (NOU~CP traffici))))))))))))
                (. .)) )


************** FRASE NEWS-133 **************

 ( (S
    (ADVP-LOC (ADVB Qui))
    (NP-LOC (PRO~LO c'))
    (VP (VMA~IM era)
        (NP-EXTPSBJ-433
            (NP (ART~DE la) (NOU~CS base) (ADJ~QU militare))
            (PP (PREP di)
                (NP (NOU~PR Pasha) (NOU~PR Liman)))
             (VP (VMA~PA affittata)
                 (NP (-NONE- *))
                 (PP (PREP ai)
                     (NP (ART~DE ai)
                         (NP (NOU~CP russi))
                         (SBAR
                             (NP-1333 (PRO~RE che))
                             (S
                                 (NP-SBJ (-NONE- *-1333))
                                 (VP (VMA~IM tenevano)
                                     (PP-LOC (PREP alla)
                                         (NP (ART~DE alla) (NOU~CS fonda)))
                                      (NP (ART~DE i) (ADJ~PO loro) (NOU~CP sommergibili))))))))))
              (NP-SBJ (-NONE- *-433))
              (. .)) )


************** FRASE NEWS-134 **************

 ( (S
    (PP-TMP (PREP Dopo)
        (NP
            (NP (ART~DE la) (NOU~CS rottura) (ADJ~QU clamorosa))
            (PP (PREP tra)
                (NP (NOU~PR Hoxha)
                    (CONJ e) (NOU~PR Kruscev)))))
        (, ,)
        (PP-TMP (PREP nell')
            (NP
                (NP (ART~DE nell') (NOU~CS aprile))
                (PP (PREP del)
                    (NP (ART~DE del) (DATE '61)))))
           (NP-SBJ-1433 (NOU~PR Mosca))
           (VP (VMA~RA tento')
               (PP (PREP di)
                   (S
                       (VP (VMA~IN occuparla)
                           (NP (PRO~PE occuparla))
                           (ADVP (ADVB militarmente))))))
               (NP-SBJ (-NONE- *-1433))
               (. .)) )


************** FRASE NEWS-135 **************

 ( (S
    (CONJ Ma)
    (S
        (NP-SBJ-233 (ART~DE i) (NOU~CP valonesi))
        (VP (VMA~RA reagirono)
            (PP (PREP con)
                (NP (NOU~CS violenza)))))
       (CONJ e)
       (S
           (VP (VMA~RA costrinsero)
               (NP-933 (ART~DE i) (NOU~CP sovietici))
               (PP (PREP ad)
                   (S
                       (VP (VMA~IN andarsene)
                           (NP (PRO~PE andarsene))
                           (NP-LOC (PRO~LO andarsene))
                           (S
                               (VP (VMA~GE sequestrando)
                                   (NP (NUMR quattro) (NOU~CP sommergibili)))
                                (NP-SBJ (-NONE- *-8.1033))))
                          (NP-SBJ (-NONE- *-933)))))
                 (NP-SBJ-8.1033 (-NONE- *-233)))
              (. .)) )


************** FRASE NEWS-136 **************

 ( (S
    (S
        (NP-SBJ-133 (NOU~PR Mosca))
        (VP (VMA~RA tento')
            (PP (PREP di)
                (S
                    (VP (VMA~IN riaverli)
                        (NP (PRO~PE riaverli))
                        (ADVP (ADVB indietro)))
                     (NP-SBJ (-NONE- *-133))))))
         (CONJ ma)
         (S
             (VP
                 (ADVP-TMP (ADVB intanto))
                 (VP (VAU~IM era)
                     (VP (VMA~PA scoppiata)
                         (NP-EXTPSBJ-1033
                             (NP (ART~DE la) (NOU~CA crisi))
                             (PP
                                 (PP (PREP di)
                                     (NP (NOU~PR Cuba)))
                                  (CONJ e)
                                  (PP (PREP della)
                                      (NP
                                          (NP (ART~DE della) (NOU~CS Baia))
                                          (PP (PREP dei)
                                              (NP (ART~DE dei) (NOU~CP Porci)))))))))
                         (, ,)
                         (CONJ e)
                         (S
                             (ADVP (ADVB cosi'))
                             (NP-SBJ-2333
                                 (ADVP (ADVB anche)) (NOU~PR Kruscev))
                              (NP-2433 (PRO~RI si))
                              (VP (VMO~RA dovette)
                                  (S
                                      (VP (VMA~IN arrendere)
                                          (NP (-NONE- *-2433)))))
                                 (NP-SBJ (-NONE- *-2333))))
                           (NP-SBJ (-NONE- *-1033)))
                        (. .)) )


************** FRASE NEWS-137 **************

 ( (S
    (NP (PRO~IN Cosa))
    (VP (VMA~FU faranno)
        (ADVP-TMP (ADVB adesso))
        (NP-EXTPSBJ-433 (-NONE- *-)
            (NP-433
                (NP (ART~DE il) (NOU~CS Governo)) (-NONE- *-)
                (PP (PREP del)
                    (NP (ART~DE del) (NOU~CA premier) (NOU~PR Meksi))))
              (CONJ e) (NOU~PR Berisha)))
        (NP-SBJ (-NONE- *-433))
        (. ?)) )


************** FRASE NEWS-138 **************

 ( (S
    (NP-SBJ-133 (ART~DE La)
        (NP (NOU~CS tattica))
        (VP (VMA~PA scelta)
            (NP (-NONE- *))))
      (VP (VMA~RE sembra)
          (PRN
              (, ,)
              (ADVP-TMP (ADVB PER_ORA))
              (, ,))
           (S
               (VP
                   (VP (VMA~IN attendere)
                       (NP (NOU~CP momenti) (ADJ~QU migliori)))
                    (, ,)
                    (S
                        (S
                            (VP (VMA~IN lasciar)
                                (S
                                    (VP (VMA~IN sbollire)
                                        (NP-1533 (ART~DE la) (NOU~CS rabbia)))
                                     (NP-SBJ (-NONE- *-1533))))
                               (NP-SBJ-13.1033 (-NONE- *-9.1033)))
                            (CONJ e)
                            (S
                                (VP (VMA~IN tornare)
                                    (PP (PREP a)
                                        (S
                                            (VP (VMA~IN occupare)
                                                (NP (ART~DE la) (NOU~CA citta')))
                                             (NP-SBJ (-NONE- *-18.1033)))))
                                    (NP-SBJ-18.1033 (-NONE- *-13.1033)))))
                           (NP-SBJ-9.1033 (-NONE- *-133))))
                     (. .)) )


************** FRASE NEWS-139 **************

 ( (S
    (CONJ Ma)
    (NP-SBJ (ART~IN una) (NOU~CS cosa))
    (VP (VMA~RE e')
        (ADJP-PRD (ADJ~QU certa)))
     (. .)) )


************** FRASE NEWS-140 **************

 ( (S
    (NP-TMP (ADVB Anche) (ADJ~DE questa) (NOU~CS volta))
    (NP-SBJ (NOU~PR Valona))
    (NP (PRO~RI si))
    (VP (VAU~RE e')
        (VP (VMA~PA guadagnata)
            (NP
                (NP (ART~DE la) (ADJ~OR prima) (NOU~CS pagina))
                (PP (PREP della)
                    (NP
                        (NP (ART~DE della) (ADJ~QU breve) (NOU~CS storia))
                        (PP (PREP dell')
                            (NP (ART~DE dell') (NOU~PR Albania))))))))
          (. .)) )


************** FRASE NEWS-141 **************

 ( (S
    (VP (VMA~RE Resta)
        (ADJP-PRD (ADJ~QU tesa))
        (NP-EXTPSBJ-333 (ART~DE la) (NOU~CS situazione))
        (PP-LOC (PREP in)
            (NP (NOU~PR Albania)))
         (, ,)
         (CONJ mentre)
         (S
             (NP-SBJ (ART~DE la) (NOU~PR Farnesina))
             (VP (VMA~RE lancia)
                 (NP (ART~IN un) (NOU~CS avvertimento))
                 (PP (PREP agli)
                     (NP (ART~DE agli)
                         (NP (NOU~CP italiani))
                         (S
                             (S
                                 (NP-1333 (PRO~RE che))
                                 (S
                                     (NP-SBJ (-NONE- *-1333))
                                     (VP (VMA~RE risiedono))))
                               (CONJ o)
                               (S
                                   (NP-SBJ (PRO~RE che))
                                   (VP (VMA~RE hanno)
                                       (NP
                                           (NP (NOU~CP piani))
                                           (PP (PREP di)
                                               (NP
                                                   (NP (NOU~CS viaggio))
                                                   (PP (PREP nel)
                                                       (NP (ART~DE nel) (NOU~CS Paese) (ADJ~QU balcanico))))))))))))))
                   (NP-SBJ (-NONE- *-333))
                   (. .)) )


************** FRASE NEWS-142 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE Il) (NOU~CS Ministero))
        (PP (PREP degli)
            (NP (ART~DE degli) (NOU~CP esteri)))
         (PRN
             (, ,)
             (SBAR
                 (NP-6333 (PRO~RE che) (-NONE- *-))
                 (S
                     (NP-SBJ-633 (-NONE- *-6333))
                     (VP (VAU~RE ha)
                         (VP (VMA~PA detto)
                             (PP (PREP di)
                                 (S
                                     (VP (VMA~IN seguire)
                                         (PP (PREP con)
                                             (NP (NOU~CS preoccupazione)))
                                          (NP
                                              (NP (ART~DE i) (NOU~CP disordini))
                                              (PP (PREP in)
                                                  (NP (NOU~CS atto)))))
                                         (NP-SBJ (-NONE- *-633))))))))
                       (, ,)))
                 (VP (VAU~RE ha)
                     (VP (VMA~PA chiesto)
                         (PP (PREP ai)
                             (NP (ART~DE ai) (NOU~CP cittadini) (ADJ~QU italiani)))
                          (PP (PREP di)
                              (S
                                  (VP (VMA~IN limitare)
                                      (NP
                                          (NP (ART~DE i) (ADJ~PO propri) (NOU~CP spostamenti))
                                          (PP-LOC (PREP in)
                                              (NP (NOU~PR Albania))))
                                        (PP (PREP a)
                                            (NP
                                                (NP (PRO~DE quelli))
                                                (VP (VMA~PA motivati)
                                                    (NP (-NONE- *))
                                                    (PP-LGS (PREP da)
                                                        (NP (NOU~CP esigenze) (ADJ~QU improcrastinabili))))))
                                            (, ,)
                                            (PP (PREP ALLA_LUCE_DI)
                                                (NP (ART~IN una)
                                                    (NP (NOU~CS situazione))
                                                    (SBAR
                                                        (NP-4333 (PRO~RE che) (-NONE- *-))
                                                        (S
                                                            (NP-SBJ-4233 (-NONE- *-4333))
                                                            (VP (VMO~CO potrebbe)
                                                                (S
                                                                    (VP (VMA~IN peggiorare)
                                                                        (PP-TMP (PREP in)
                                                                            (NP (ADJ~IN ogni) (NOU~CS momento))))
                                                                      (NP-SBJ (-NONE- *-4233)))))))))
                                                 (NP-SBJ (-NONE- *-133))))))
                                     (. .)) )


************** FRASE NEWS-143 **************

 ( (S
    (PP (PREP Nonostante)
        (NP
            (NP (ART~DE l') (NOU~CS assenza))
            (PP (PREP di)
                (NP (NOU~CP episodi) (ADJ~QU gravi)))))
       (, ,)
       (ADVP-TMP (ADVB anche) (ADVB ieri))
       (NP-SBJ (ART~DE l') (NOU~CS atmosfera))
       (VP (VMA~IM era)
           (ADJP-PRD (ADJ~QU carica)
               (PP (PREP di)
                   (NP (NOU~CS tensione)))))
          (. .)) )


************** FRASE NEWS-144 **************

 ( (S
    (PP-LOC (PREP A)
        (NP (NOU~PR Tirana)))
     (NP-SBJ-333 (ART~DE la) (NOU~CS polizia))
     (VP (VAU~RE ha)
         (VP (VMA~PA impedito)
             (NP (ADJ~QU nuove) (NOU~CP manifestazioni))
             (S
                 (VP (VMA~GE presidiando)
                     (NP
                         (NP (ART~DE i) (NOU~CP luoghi))
                         (PP (PREP di)
                             (NP (ADJ~QU possibile) (NOU~CS raduno))))))
                 (, ,)
                 (CONJ mentre)
                 (S
                     (NP-SBJ
                         (NP-SBJ (PRO~ID uno))
                         (PP (PREP dei)
                             (NP
                                 (NP (ART~DE dei) (NOU~CP capi))
                                 (PP (PREP della)
                                     (NP
                                         (NP (ART~DE della) (NOU~CS protesta))
                                         (PP (PREP contro)
                                             (NP (ART~DE le) (NOU~CP finanziarie)
                                                 (PUNCT -)
                                                 (NP (NOU~CS truffa)))))))))
                            (VP (VAU~RE e')
                                (VP (VAU~PA stato)
                                    (VP (VMA~PA picchiato))))
                              (PP-LGS (PREP dai)
                                  (NP (ART~DE dai) (ADJ~PO suoi) (ADJ~DI stessi) (NOU~CP sostenitori)))
                               (PP (PREP per)
                                   (S
                                       (VP (VAU~IN aver)
                                           (VP (VMA~PA aderito)
                                               (PP (PREP al)
                                                   (NP (ART~DE al)
                                                       (NP (NOU~CA forum) (ADJ~QU democratico))
                                                       (SBAR
                                                           (S
                                                               (PP (PREP di)
                                                                   (NP (PRO~RE cui)))
                                                                (VP (VMA~RE fanno)
                                                                    (NP (NOU~CS parte))
                                                                    (ADVP (ADVB anche))
                                                                    (NP-EXTPSBJ-4533
                                                                        (NP (NOU~CP forze))
                                                                        (PP (PREP di)
                                                                            (NP (NOU~CS sinistra)))))
                                                                   (NP-SBJ (-NONE- *-4533))))))))
                                                 (NP-SBJ (-NONE- *-1733)))))))
                                  (NP-SBJ (-NONE- *-333))
                                  (. .)) )


************** FRASE NEWS-145 **************

 ( (S
    (PP (PREP Per)
        (NP (NOU~PR Azem) (NOU~PR Hajdari)))
     (NP-SBJ (ADJ~IN molti) (NOU~CP politici))
     (VP (VAU~RE sono)
         (VP (VMA~PA coinvolti)
             (PP (PREP nel)
                 (NP
                     (NP (ART~DE nel) (NOU~CA crack))
                     (PP (PREP delle)
                         (NP (ART~DE delle) (NOU~CP finanziarie)))))))
          (. .)) )


************** FRASE NEWS-146 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Il) (NOU~CS capo))
        (PP (PREP dei)
            (NP (ART~DE dei) (NOU~CP sindacati))))
      (VP (VMA~RE va)
          (PP-LOC (PREP all')
              (NP
                  (NP (ART~DE all') (NOU~CS attacco))
                  (PP (PREP del)
                      (NP (ART~DE del) (NOU~CS Governo))))))
          (. .)) )


************** FRASE NEWS-147 **************

 ( (S
    (NP-SBJ (ART~IN Una) (ADJ~PO sua) (NOU~CS frase))
    (VP
        (VP (VAU~RE e')
            (ADVP-TMP (ADVB ormai))) (VMA~PA passata)
         (PP (PREP alla)
             (NP (ART~DE alla) (NOU~CS storia))))
       (. .)) )


************** FRASE NEWS-148 **************

 ( (S
    (S
        (NP-SBJ-133 (PRO~PE Noi))
        (VP (VMA~FU moriremo)
            (NP-PRD (PRO~ID tutti))
            (ADVP (ADVB insieme))))
      (CONJ e)
      (S
          (ADVP (ADVB non))
          (VP (VMA~FU permetteremo)
              (PP (PREP a)
                  (NP-933 (PRO~ID nessuno)))
               (PP (PREP di)
                   (S
                       (VP (VMA~IN imbrogliarci)
                           (NP (PRO~PE imbrogliarci)))
                        (NP-SBJ (-NONE- *-933)))))
               (NP-SBJ (-NONE- *-133)))
            (. .)) )


************** FRASE NEWS-149 **************

 ( (S
    (NP-SBJ (PRO~PE Io))
    (VP (VMA~FU moriro')
        (PP (PREP per)
            (NP (PRO~OR primo))))
      (. .)) )


************** FRASE NEWS-150 **************

 ( (S
    (VP (VMA~RA Fu)
        (PP-PRD-CLEFT (PREP con) (-NONE- *-)
            (NP (ADJ~DE queste) (NOU~CP parole)))
         (PRN
             (, ,)
             (CONJ mentre)
             (S
                 (NP-SBJ (ART~DE le) (NOU~CP truppe) (ADJ~QU antisommossa))
                 (NP (PRO~RI si))
                 (VP (VMA~IM preparavano)
                     (PP (PREP all')
                         (NP (ART~DE all') (NOU~CS attacco)))))
                (, ,))
             (CONJ che)
             (S
                 (NP-SBJ
                     (NP (ART~DE lo) (NOU~CS studente))
                     (PP (PREP di)
                         (NP (NOU~PR Tirana)))
                      (, ,)
                      (NP (NOU~PR Azem) (NOU~PR Hajdari)))
                   (VP (VMA~RA guido')
                       (PP (-NONE- *-233))
                       (NP
                           (NP (ART~DE la) (ADJ~OR prima) (ADJ~QU grande) (NOU~CS manifestazione))
                           (PP (PREP di)
                               (NP (NUMR 5.000) (NOU~CP giovani))))
                         (PP-TMP (PREP nel)
                             (NP (ART~DE nel) (NOU~CS dicembre)
                                 (NP (DATE '90)))))))
                  (. .)) )


************** FRASE NEWS-151 **************

 ( (S
    (PP-LOC (PREP Davanti)
        (PP (PREP alla)
            (NP
                (NP (ART~DE alla) (NOU~CA citta') (ADJ~QU universitaria))
                (PP (PREP in)
                    (NP (NOU~CS rivolta))))))
        (VP (VMA~IM stava)
            (PP (PREP per)
                (S
                    (VP (VMA~IN crollare))
                    (NP-SBJ (-NONE- *-1033))))
              (NP-EXTPSBJ-1033
                  (NP (ART~DE il) (NOU~CS regime))
                  (PP (PREP di)
                      (NP (NOU~PR Ramiz) (NOU~PR Alia)))))
             (NP-SBJ (-NONE- *-1033))
             (. .)) )


************** FRASE NEWS-152 **************

 ( (S
    (S
        (NP-SBJ-1733
            (NP
                (NP (NOU~CS Anticomunista))
                (, ,)
                (NP
                    (NP (NOU~CS fondatore))
                    (PP (PREP con)
                        (NP (ART~DE il) (NOU~CS presidente)
                            (NP (NOU~PR Sali) (NOU~PR Berisha))))
                      (PP (PREP del)
                          (NP (ART~DE del)
                              (NP (NOU~CS Partito) (ADJ~QU democratico))
                              (SBAR
                                  (S
                                      (PP-1233 (PREP di)
                                          (NP (PRO~RE cui)))
                                       (VP (VMA~RE e')
                                           (NP-PRD
                                               (NP (NOU~CS deputato))
                                               (PP (-NONE- *-1233))))
                                         (NP-SBJ (-NONE- *-1733))))))))
                       (, ,) (NOU~PR Hajdari))
                    (VP (VMA~RE e')
                        (ADJP-PRD (ADVB molto) (ADJ~QU popolare))
                        (PP-LOC (PREP in)
                            (NP (NOU~PR Albania)))))
                   (, ,)
                   (S
                       (ADVP-TMP (ADVB oggi))
                       (VP (VMA~RE e')
                           (NP-PRD
                               (NP (ART~DE il) (NOU~CA leader))
                               (PP (PREP dei)
                                   (NP (ART~DE dei)
                                       (NP (NOU~CP Sindacati))
                                       (VP (VMA~PA riuniti)
                                           (NP (-NONE- *)))))))
                            (NP-SBJ (-NONE- *-1733)))
                         (. .)) )


************** FRASE NEWS-153 **************

 ( (S
    (S
        (NP-SBJ-133
            (NP (ART~DE I) (NOU~CP capi))
            (PP (PREP del)
                (NP (ART~DE del) (NOU~CS partito))))
          (ADVP (ADVB non))
          (NP (PRO~PE lo))
          (VP (VMA~RE amano)))
       (, ,)
       (CONJ ma)
       (S
           (VP (VMO~RE devono)
               (S
                   (VP (VMA~IN fare)
                       (NP (ART~DE i) (NOU~CP conti))
                       (PP (PREP con)
                           (NP
                               (NP (PRO~PE lui))
                               (CONJ e)
                               (NP
                                   (NP (ART~DE i) (ADJ~PO suoi) (ADJ~QU durissimi) (NOU~CP attacchi))
                                   (PP (PREP contro)
                                       (NP
                                           (NP (ART~DE la) (NOU~CS corruzione))
                                           (PP (PREP dei)
                                               (NP (ART~DE dei) (NOU~CP politici)))))))))
                          (NP-SBJ (-NONE- *-133))))
                    (NP-SBJ (-NONE- *-133)))
                 (. .)) )


************** FRASE NEWS-154 **************

 ( (S
    (NP-SBJ (PRO~IN Chi))
    (VP (VMA~RE sono)
        (NP-PRD (ART~DE i) (NOU~CP politici) (ADJ~QU corrotti)))
     (. ?)) )


************** FRASE NEWS-155 **************

 ( (S
    (VP (VMA~RE Sono)
        (NP-PRD (PRO~ID molti)
            (, ,)
            (NP
                (PP (PREP tra)
                    (NP (PRO~DE questi)))
                 (NP (ART~DE il) (ADJ~OR primo) (NOU~CS ministro)
                     (NP (NOU~PR Aleksander) (NOU~PR Meksi)))
                  (, ,)
                  (VP (VMA~PA collegato)
                      (NP (-NONE- *))
                      (PP (PREP con)
                          (NP
                              (NP (ART~DE gli) (NOU~CP affari))
                              (PP (PREP delle)
                                  (NP (ART~DE delle) (NOU~CP piramidi) (ADJ~QU finanziarie)
                                      (, ,)))))))))
              (NP-SBJ (-NONE- *))
              (. .)) )


************** FRASE NEWS-156 **************

 ( (S
    (VP (VMA~RE È)
        (NP-PRD (ART~IN un')
            (NP (NOU~CS accusa))
            (ADJP (ADVB molto) (ADJ~QU grave))))
      (NP-SBJ (-NONE- *))
      (. .)) )


************** FRASE NEWS-157 **************

 ( (S
    (VP (VMA~RE Ha)
        (NP (ART~DE le) (NOU~CP prove)))
     (NP-SBJ (-NONE- *))
     (. ?)) )


************** FRASE NEWS-158 **************

 ( (S
    (VP (VAU~RE Ho)
        (VP (VMA~PA denunciato)
            (NP (ADJ~DE questo) (NOU~CS intreccio))
            (PP-LOC
                (PP (PREP in)
                    (NP (NOU~CS Parlamento)))
                 (CONJ e)
                 (PP (PREP sulla)
                     (NP (ART~DE sulla) (NOU~CS stampa))))))
         (NP-SBJ (-NONE- *))
         (. .)) )


************** FRASE NEWS-159 **************

 ( (S
    (ADJP-PRD (ADJ~QU Certo))
    (VP (-NONE- *)
        (CONJ che)
        (S
            (VP (VMA~RE possiedo)
                (NP (ART~IN delle) (NOU~CP prove)))
             (NP-SBJ (-NONE- *))))
       (. .)) )


************** FRASE NEWS-160 **************

 ( (S
    (S
        (VP (VAU~RE Ho)
            (VP (VMA~PA depositato)
                (NP (ART~IN un) (NOU~CA dossier))
                (PP-LOC (PREP alla)
                    (NP
                        (NP (ART~DE alla) (NOU~CS Procura))
                        (PP (PREP della)
                            (NP (ART~DE della) (NOU~CS Repubblica)))))))
             (NP-SBJ (-NONE- *)))
          (CONJ e)
          (S
              (ADVP-TMP (ADVB ora))
              (VP (VMA~RE aspetto)
                  (CONJ che)
                  (S
                      (VP (VAU~CG vengano)
                          (VP (VMA~PA avviate)
                              (NP-EXTPSBJ-1533 (ART~DE le) (NOU~CP indagini))))
                        (NP-SBJ (-NONE- *-1533))))
                  (NP-SBJ (-NONE- *)))
               (. .)) )


************** FRASE NEWS-161 **************

 ( (S
    (VP (VMA~FU Diro')
        (ADVP (ADVB DI_PIÙ))
        (CONJ quando)
        (S
            (NP (PRO~RI si))
            (VP (VMA~FU presentera')
                (NP-EXTPSBJ-733 (ART~DE il) (NOU~CS momento) (ADJ~QU opportuno)))
             (NP-SBJ (-NONE- *-733))))
       (NP-SBJ (-NONE- *))
       (. .)) )


************** FRASE NEWS-162 **************

 ( (S
    (NP-SBJ (PRO~PE Lei))
    (VP (VMA~RE sostiene)
        (CONJ che)
        (S
            (NP-LOC (PRO~LO c'))
            (VP (VMA~RE e')
                (NP-EXTPSBJ-633 (ART~IN un) (NOU~CS aspetto) (ADJ~QU inquietante))
                (PP
                    (PP (PREP nella)
                        (NP
                            (NP (ART~DE nella) (NOU~CS rivolta))
                            (PP (PREP di)
                                (NP (NOU~PR Valona)))))
                       (CONJ e)
                       (PP (PREP nel)
                           (NP
                               (NP (ART~DE nel) (NOU~CA crack))
                               (PP (PREP delle)
                                   (NP (ART~DE delle) (NOU~CP finanziarie)))))))
                    (NP-SBJ (-NONE- *-633))))
              (. .)) )


************** FRASE NEWS-163 **************

 ( (NP (PRO~IN Quale)
    (. ?)) )


************** FRASE NEWS-164 **************

 ( (S
    (PP-LOC (PREP A)
        (NP (NOU~PR Valona)))
     (NP-333 (PRO~RI si))
     (VP (VAU~RE e')
         (VP (VMA~PA rotto)
             (NP
                 (NP (ART~IN un) (NOU~CS patto))
                 (PP (PREP tra)
                     (NP
                         (NP (ART~DE la) (NOU~CA criminalita'))
                         (CONJ e)
                         (NP (ADJ~DE questo) (NOU~CS Governo))))
                   (SBAR
                       (NP-1333 (PRO~RE che))
                       (S
                           (NP-SBJ (-NONE- *-1333))
                           (VP (VAU~IM aveva)
                               (VP (VMA~PA consentito)
                                   (NP (PRDT tutti) (ART~DE i)
                                       (NP (NOU~CP traffici) (ADJ~QU illegali))
                                       (PRN
                                           (PUNCT -)
                                           (PP (PREP dalla)
                                               (NP (ART~DE dalla) (NOU~CS droga))
                                               (, ,)
                                               (PP
                                                   (PP (PREP alla)
                                                       (NP (ART~DE alla) (NOU~CS prostituzione)))
                                                    (, ,)
                                                    (PP
                                                        (PP (PREP alle)
                                                            (NP (ART~DE alle) (NOU~CP armi)))
                                                         (CONJ e)
                                                         (PP (PREP ai)
                                                             (NP (ART~DE ai) (NOU~CP clandestini))))))
                                                 (PUNCT -))
                                              (SBAR
                                                  (NP-3333 (PRO~RE che))
                                                  (S
                                                      (NP-SBJ (-NONE- *-3333))
                                                      (VP (VMA~IM arricchivano)
                                                          (NP (ART~DE le) (NOU~CP finanziarie)))))))))))))
                         (. .)) )


************** FRASE NEWS-165 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Il) (NOU~CS fallimento))
        (PP (PREP di)
            (NP
                (NP (PRO~ID alcune))
                (PP (PREP di)
                    (NP (ADJ~DE queste) (NOU~CA societa'))))))
        (VP (VAU~RE ha)
            (VP (VMA~PA segnato)
                (NP
                    (NP (ART~DE la) (NOU~CS rottura))
                    (PP (PREP del)
                        (NP (ART~DE del) (NOU~CS patto))))))
            (. .)) )


************** FRASE NEWS-166 **************

 ( (S
    (CONJ Eppure)
    (NP-SBJ-233 (ART~DE il) (NOU~CS governo) (NOU~PR Meksi))
    (VP (VAU~RE e')
        (VP (VAU~PA stato)
            (VP (VMA~PA messo))))
      (PP (PREP in)
          (NP (NOU~CA difficolta')))
       (PP-LOC (PREP a)
           (NP (NOU~PR Valona)))
        (ADVP (ADVB proprio))
        (CONJ perche')
        (S
            (VP (VAU~RE ha)
                (VP (VMA~PA tentato)
                    (PP (PREP di)
                        (S
                            (VP (VMA~IN controllare)
                                (NP (ART~DE la) (NOU~CS rete) (ADJ~QU clandestina)
                                    (, ,)))
                              (NP-SBJ (-NONE- *-15.1033))))))
                  (NP-SBJ-15.1033 (-NONE- *-233)))
               (. .)) )


************** FRASE NEWS-167 **************

 ( (S
    (NP-SBJ-133 (ART~DE Il) (NOU~CS Governo))
    (VP (VAU~RE e')
        (VP (VAU~PA stato)
            (VP (VMA~PA costretto))))
      (PP (PREP a)
          (S
              (VP (VMA~IN prendere)
                  (NP (ADJ~DE questi) (NOU~CP provvedimenti))
                  (PP (PREP per)
                      (S
                          (VP (VMA~IN frenare)
                              (NP (ART~DE le) (NOU~CA attivita') (ADJ~QU illecite)))
                           (NP-SBJ (-NONE- *-7.1033)))))
                  (NP-SBJ-7.1033 (-NONE- *-133))))
            (ADVP (ADVB soltanto))
            (CONJ dopo)
            (S
                (VP (VAU~IN aver)
                    (VP (VMA~PA ricevuto)
                        (NP (ADJ~QU forti) (NOU~CP pressioni) (ADJ~QU internazionali))))
                  (NP-SBJ (-NONE- *-7.1033)))
               (. .)) )


************** FRASE NEWS-168 **************

 ( (S
    (PP (PREP In)
        (NP (ADJ~IN molti) (NOU~CP casi)))
     (NP-SBJ
         (NP (ART~DE il) (NOU~CS rastrellamento))
         (PP (PREP dei)
             (NP
                 (NP (ART~DE dei) (NOU~CP soldi))
                 (PP (PREP dei)
                     (NP (ART~DE dei) (ADJ~QU piccoli) (NOU~CP risparmiatori))))))
         (VP (VMA~IM era)
             (ADVP (ADVB solo))
             (NP-PRD
                 (NP (ART~IN una) (NOU~CS copertura))
                 (PP (PREP per)
                     (S
                         (S
                             (VP (VMA~IN riciclare)
                                 (NP (NOU~CS denaro)))
                              (NP-SBJ-16.1033 (-NONE- *)))
                           (CONJ e)
                           (S
                               (VP (VMA~IN distribuire)
                                   (NP (NOU~CP tangenti)))
                                (NP-SBJ (-NONE- *-16.1033)))))))
                 (. .)) )


************** FRASE NEWS-169 **************

 ( (S
    (CONJ E)
    (NP-SBJ
        (NP (ART~DE i) (NOU~CP soldi))
        (PP (PREP delle)
            (NP (ART~DE delle) (NOU~CP piramidi))))
      (ADVP-LOC (ADVB dove))
      (VP (VAU~RE sono)
          (VP (VMA~PA finiti)))
       (. ?)) )


************** FRASE NEWS-170 **************

 ( (S
    (NP-SBJ (ART~DE I)
        (NP (NOU~CP servizi))
        (ADJP
            (ADJP (ADJ~QU italiani))
            (CONJ e)
            (ADJP (ADJ~QU americani))))
      (ADVP (ADVB forse))
      (NP (PRO~PE lo))
      (VP (VMA~RE sanno))
      (. .)) )


************** FRASE NEWS-171 **************

 ( (S
    (ADVP (ADVB PER_ESEMPIO))
    (NP-333 (PRO~RI si))
    (VP (VMO~CO potrebbe)
        (S
            (VP (VMA~IN indagare)
                (PP
                    (PP (PREP sulle)
                        (NP (ART~DE sulle)
                            (NP (NOU~CA societa') (ADJ~QU albanesi))
                            (SBAR
                                (NP-9333 (PRO~RE che))
                                (S
                                    (NP-SBJ (-NONE- *-9333))
                                    (VP (VMA~RE operano)
                                        (PP-LOC (PREP da)
                                            (NP (PRO~PE voi))))))))
                          (CONJ e)
                          (PP (PREP sui)
                              (NP
                                  (NP (ART~DE sui) (ADJ~PO loro) (NOU~CP rapporti))
                                  (PP (PREP con)
                                      (NP (PRO~DE quelle) (ADJ~QU italiane)))))))))
                 (NP-SBJ (-NONE- *-333))
                 (. .)) )


************** FRASE NEWS-172 **************

 ( (S
    (CONJ Se)
    (S
        (VP (VMA~RE e')
            (ADJP-PRD (ADJ~QU vero))
            (NP-EXTPSBJ-433
                (NP (PRO~RE quanto))
                (SBAR
                    (NP-5333 (PRO~PE lei))
                    (S
                        (NP-SBJ (-NONE- *-5333))
                        (VP (VMA~RE afferma)
                            (NP (-NONE- *-433)))))))
             (NP-SBJ (-NONE- *-433)))
          (, ,)
          (ADVP-LOC (ADVB qui))
          (NP (PRO~RI si))
          (VP (VMA~RE tratta)
              (PP
                  (PP
                      (ADVP (ADVB non) (ADVB soltanto)) (PREP-1333 di)
                      (S
                          (VP (VMA~IN-1433 cambiare)
                              (NP (NOU~CS Governo)))
                           (NP-SBJ (-NONE- *-14.1033))))
                     (CONJ ma)
                     (PP (-NONE- *-1333)
                         (S
                             (VP (-NONE- *-1433)
                                 (NP (ART~IN un) (ADJ~QU intero) (NOU~CS sistema)))
                              (NP-SBJ (-NONE- *-14.1033))))))
                  (. .)) )


************** FRASE NEWS-173 **************

 ( (S
    (NP-SBJ (ADVB Anche) (ART~DE il) (NOU~CS Presidente))
    (VP (VMA~RE e')
        (PP-LOC (PREP nel)
            (NP
                (NP (ART~DE nel) (NOU~CS mirino))
                (PP (PREP dei)
                    (NP (ART~DE dei) (ADJ~PO suoi) (NOU~CP attacchi))))))
        (. ?)) )


************** FRASE NEWS-174 **************

 ( (S
    (S
        (NP-SBJ-133 (NOU~PR Berisha))
        (VP
            (Vbar (VMA~RE e')
                (Sbar
                    (VP (-NONE- *-833)))
                 (ADJP-PRD (ADJ~QU onesto)))))
        (PUNCT -)
        (VP (VMA~RE conclude)
            (NP-EXTPSBJ-633 (NOU~PR Azem))
            (PUNCT -)
            (S
                (VP-833 (VMA~RE e')
                    (NP-PRD (ART~IN un)
                        (NP (NOU~CS uomo))
                        (ADJP (ADVB politicamente) (ADJ~QU cosciente))))
                  (NP-SBJ (-NONE- *-133))))
            (NP-SBJ (-NONE- *-633))
            (. .)) )


************** FRASE NEWS-175 **************

 ( (S
    (NP-SBJ (ART~DE Il) (ADJ~PO suo) (NOU~CS obiettivo) (ADJ~QU strategico))
    (VP (VMA~RE e')
        (NP-PRD
            (NP (PRO~DE quello))
            (PP (PREP di)
                (S
                    (VP (VMA~IN tenere)
                        (ADVP (ADVB insieme))
                        (NP (PRDT tutte) (ART~DE le)
                            (NP (NOU~CP forze))
                            (ADJP
                                (ADJP (ADJ~QU democratiche))
                                (CONJ e)
                                (ADJP (ADJ~QU anticomuniste)))))
                       (NP-SBJ (-NONE- *))))))
           (. .)) )


************** FRASE NEWS-176 **************

 ( (S
    (CONJ Pero')
    (VP (VMA~RE credo)
        (CONJ che)
        (S
            (NP-LOC (PRO~LO ci))
            (VP (VMA~CG siano)
                (NP-EXTPSBJ-633
                    (NP (ART~IN dei) (NOU~CP limiti))
                    (PP (PREP ai)
                        (NP (ART~DE ai) (NOU~CP compromessi))))
                  (PP (PREP per)
                      (S
                          (VP (VMA~IN mantenere)
                              (NP (ADJ~DE questo) (NOU~CS obiettivo)))
                           (NP-SBJ (-NONE- *)))))
                  (NP-SBJ (-NONE- *-633))))
            (NP-SBJ (-NONE- *))
            (. .)) )


************** FRASE NEWS-177 **************

 ( (S
    (PP (PREP In)
        (NP (NOU~CS attesa))
        (PP
            (PP (PREP delle)
                (NP
                    (NP (ART~DE delle) (NOU~CP indagini))
                    (PP (PREP della)
                        (NP (ART~DE della) (NOU~CS Magistratura)))))
               (CONJ e)
               (PP (PREP di)
                   (NP
                       (NP (NOU~CP prove) (ADJ~QU concrete))
                       (SBAR
                           (NP-1333 (PRO~RE che))
                           (S
                               (NP-SBJ (-NONE- *-1333))
                               (VP (VMA~CG sostengano)
                                   (NP
                                       (NP (ART~DE le) (NOU~CP affermazioni))
                                       (PP (PREP di)
                                           (NP (NOU~PR Azem)))))))))))
                (, ,)
                (PP-LOC (PREP a)
                    (NP (NOU~PR Tirana)))
                 (NP-LOC (PRO~LO c'))
                 (VP (VMA~RE e')
                     (NP-EXTPSBJ-2233 (ADJ~IN qualche)
                         (NP (NOU~CS politico))
                         (SBAR
                             (NP-2333 (PRO~RE che) (-NONE- *-))
                             (S
                                 (NP-SBJ-2433 (-NONE- *-2333))
                                 (VP (VAU~RE ha)
                                     (VP (VMA~PA deciso)
                                         (PP
                                             (PP (PREP di)
                                                 (S
                                                     (ADVP (ADVB non))
                                                     (VP (VMA~IN aspettare)
                                                         (NP-3033 (ART~DE i) (NOU~CP processi))
                                                         (PRN
                                                             (, ,)
                                                             (CONJ se)
                                                             (S
                                                                 (ADVP (ADVB mai))
                                                                 (NP-LOC (PRO~LO ci))
                                                                 (VP (VMA~FU saranno))
                                                                 (NP-SBJ (-NONE- *-3033)))
                                                              (, ,)))
                                                        (NP-SBJ-29.1033 (-NONE- *-2433))))
                                                  (CONJ e)
                                                  (PP (PREP di)
                                                      (S
                                                          (VP (VMA~IN confessare)
                                                              (PP (PREP in)
                                                                  (NP (NOU~CS pubblico)))
                                                               (NP
                                                                   (NP (ART~DE il) (ADJ~PO suo) (NOU~CS coinvolgimento))
                                                                   (PP (PREP con)
                                                                       (NP (ART~DE le) (NOU~CP finanziarie)))))
                                                              (NP-SBJ (-NONE- *-29.1033)))))))))))
                                   (NP-SBJ (-NONE- *-2233))
                                   (. .)) )


************** FRASE NEWS-178 **************

 ( (S
    (VP (VMA~RE È)
        (NP-PRD (NOU~PR Kurt) (NOU~PR Kola)
            (, ,)
            (NP
                (NP (NOU~CS presidente))
                (PP (PREP del)
                    (NP (ART~DE del) (NOU~CA Forum)
                        (, ,)
                        (NP (ART~DE l')
                            (NP (NOU~CS organizzazione))
                            (SBAR
                                (NP-1333 (PRO~RE che))
                                (S
                                    (NP-SBJ (-NONE- *-1333))
                                    (VP (VMA~RE riunisce)
                                        (NP
                                            (NP (ART~DE i) (NOU~CP partiti))
                                            (PP (PREP dell')
                                                (NP (ART~DE dell') (NOU~CS opposizione)))))))))))))
               (NP-SBJ (-NONE- *))
               (. .)) )


************** FRASE NEWS-179 **************

 ( (S
    (NP-SBJ (NOU~PR Kola)
        (PRN
            (, ,)
            (NP
                (NP (NOU~CS capo))
                (PP (PREP di)
                    (NP (NOU~PR Alleanza) (ADJ~QU democratica))))
              (, ,)))
        (VP (VAU~RE ha)
            (VP (VMA~PA convocato)
                (NP (ART~IN una)
                    (NP (NOU~CS CONFERENZA_STAMPA))
                    (SBAR
                        (S
                            (PP-LOC (PREP in)
                                (NP (PRO~RE cui)))
                             (VP (VAU~RE ha)
                                 (VP (VMA~PA ammesso)
                                     (PP (PREP di)
                                         (S
                                             (VP (VAU~IN avere)
                                                 (VP (VMA~PA ottenuto)
                                                     (PP (PREP da)
                                                         (NP
                                                             (NP (PRO~ID una))
                                                             (PP (PREP delle)
                                                                 (NP (ART~DE delle)
                                                                     (NP (NOU~CP compagnie))
                                                                     (VP (VMA~PA implicate)
                                                                         (NP (-NONE- *))
                                                                         (PP-LOC (PREP nel)
                                                                             (NP (ART~DE nel) (NOU~CS sistema) (ADJ~QU piramidale)))))))) (NUMR 15)))
                                                     (NP-SBJ (-NONE- *-133))))))
                                         (NP-SBJ (-NONE- *-133)))))))
                          (. .)) )


************** FRASE NEWS-180 **************

 ( (NP
    (NP (NOU~CS Confessione))
    (ADJP
        (ADJP (ADJ~QU-233 sorprendente))
        (, ,)
        (CONJ ma)
        (ADJP
            (ADJP
                (ADVP
                    (ADVbar (ADVB non))) (ADVB tanto) (-NONE- *-233))
              (PP (PREP quanto)
                  (NP
                      (NP (ART~DE la) (NOU~CS dichiarazione) (ADJ~QU conclusiva))
                      (PP (PREP di)
                          (NP (NOU~PR Kola)))))))
           (. .)) )


************** FRASE NEWS-181 **************

 ( (S
    (S
        (ADVP (ADVB Non))
        (VP (VMO~RE voglio)
            (S
                (VP (VMA~IN fare)
                    (NP
                        (NP (ART~DE il) (NOU~CS nome))
                        (PP (PREP della)
                            (NP (ART~DE della) (NOU~CA societa')))))
                   (NP-SBJ (-NONE- *-2.1033))))
             (NP-SBJ-2.1033 (-NONE- *)))
          (CONJ e)
          (S
              (ADVP (ADVB non))
              (VP (VMA~RE intendo)
                  (S
                      (VP (VMA~IN restituire)
                          (NP (ADJ~DE questo) (NOU~CS denaro)))
                       (NP-SBJ (-NONE- *-10.1033))))
                 (NP-SBJ-10.1033 (-NONE- *-2.1033)))
              (. .)) )


************** FRASE NEWS-182 **************

 ( (S
    (S
        (VP (VMO~IM Poteva)
            (S
                (VP (VMA~IN finire)
                    (ADVP (ADVB cosi'))
                    (PRN
                        (, ,)
                        (PP (PREP con)
                            (NP (ADJ~DE queste)
                                (NP (NOU~CP parole))
                                (VP (VMA~PE sconcertanti)
                                    (NP (-NONE- *)))))
                           (, ,)))
                     (NP-SBJ (-NONE- *-1.1033))))
               (NP-SBJ-1.1033 (-NONE- *)))
            (CONJ ma)
            (S
                (S
                    (NP-SBJ-1133 (NOU~PR Kola))
                    (ADVP (ADVB non))
                    (NP (PRO~RI si))
                    (VP (VAU~RE e')
                        (VP (VMA~PA accontentato))))
                  (CONJ e)
                  (S
                      (VP (VAU~RE ha)
                          (VP (VMA~PA rivolto)
                              (NP (ART~IN un) (NOU~CS appello) (ADJ~QU finale))))
                        (NP-SBJ (-NONE- *-1133))))
                  (. .)) )


************** FRASE NEWS-183 **************

 ( (S
    (S
        (NP
            (NP (NOU~CP Cittadini))
            (VP (VMA~PA truffati)
                (NP (-NONE- *))
                (PP-LGS (PREP dalle)
                    (NP (ART~DE dalle) (NOU~CP piramidi)))))
           (, ,)
           (VP (VMA~IP sosteneteci)
               (NP (PRO~PE sosteneteci))
               (ADVP-TMP (ADVB ancora)))
            (NP-SBJ (-NONE- *-133)))
         (CONJ e)
         (S
             (VP (VMA~IP andate)
                 (PP (PREP a)
                     (S
                         (VP (VMA~IN protestare)
                             (PP (PREP contro)
                                 (NP (ART~DE il) (NOU~CS Governo))))
                           (NP-SBJ (-NONE- *-133)))))
                  (NP-SBJ (-NONE- *-133)))
               (. .)) )


************** FRASE NEWS-184 **************

 ( (S
    (NP-LOC (PRO~LO C'))
    (VP (VMA~RE e')
        (NP-EXTPSBJ-333 (ART~DE il)
            (NP (NOU~CS sospetto))
            (CONJ che)
            (S
                (S
                    (PP (PREP per)
                        (S
                            (VP (VMA~IN aggiustare)
                                (NP
                                    (NP (ART~DE i) (NOU~CP guasti))
                                    (PP (PREP di)
                                        (NP
                                            (NP (ADJ~DE questa) (NOU~CS catena) (ADJ~QU balcanica))
                                            (PP (PREP di)
                                                (NP (ADJ~QU Sant') (NOU~PR Antonio)))
                                             (PRN
                                                 (, ,)
                                                 (NP (ART~IN una)
                                                     (NP (NOU~CS follia))
                                                     (SBAR
                                                         (NP-2333 (PRO~RE che))
                                                         (S
                                                             (NP-SBJ (-NONE- *-2333))
                                                             (VP (VAU~RE ha)
                                                                 (VP (VMA~PA coinvolto)
                                                                     (NP
                                                                         (NP (ART~IN un) (NOU~CS milione))
                                                                         (PP (PREP di)
                                                                             (NP (NOU~CP albanesi)))))))))
                                                        (, ,))))))
                                         (NP-SBJ (-NONE- *))))
                                   (ADVP (ADVB non))
                                   (VP (VMA~CG bastino)
                                       (NP-EXTPSBJ-3133
                                           (NP
                                               (CONJ ne') (ART~DE i)
                                               (NP (NOU~CP soldi)))
                                            (CONJ ne')
                                            (NP (ADJ~QU nuovi) (NOU~CP Governi))))
                                      (NP-SBJ (-NONE- *-3133)))
                                   (CONJ ma)
                                   (S
                                       (VP (VMA~CG serva)
                                           (ADVP (ADVB anche))
                                           (NP-EXTPSBJ-3933
                                               (NP (ART~IN una) (NOU~CS seduta))
                                               (PP (PREP di)
                                                   (NP (NOU~CA psicanalisi) (ADJ~QU collettiva)))))
                                          (NP-SBJ (-NONE- *-3933))))))
                              (NP-SBJ (-NONE- *-333))
                              (. .)) )


************** FRASE NEWS-185 **************

 ( (NP
    (NP (NOU~CS MANOVRINA))
    (PP (PREP DA) (NUMR 15))
    (. .)) )


************** FRASE NEWS-186 **************

 ( (PHRASP (PHRASP (PHRAS SI')
        (PP (PREP ALLA)
            (NP (ART~DE ALLA) (NOU~CS MANOVRINA) (ADJ~QU CORRETTIVA)
                (PRN
                    (, ,)
                    (PP (PREP di)
                        (NP
                            (NP (ADJ~QU modesta) (NOU~CA entita'))
                            (, ,)
                            (PRN
                                (-LRB- -LRB-)
                                (NP (NUMR 10)
                                    (PUNCT -) (NUMR 15))
                                 (-RRB- -RRB-))))
                        (, ,))))
               (PP-TMP (PREP dopo)
                   (CONJ che)
                   (S
                       (VP (VAU~FU saranno)
                           (VP (VMA~PA acquisiti)
                               (PRN
                                   (, ,)
                                   (PP (PREP con)
                                       (NP
                                           (NP (ART~DE la) (NOU~CS Trimestrale))
                                           (PP (PREP di)
                                               (NP (NOU~CS cassa)))))
                                      (, ,))
                                   (NP-EXTPSBJ-2933
                                       (NP (ART~DE i) (NOU~CP dati))
                                       (PP (PREP sull')
                                           (NP
                                               (NP (ART~DE sull') (NOU~CS andamento) (ADJ~QU tendenziale))
                                               (PP (PREP della)
                                                   (NP (ART~DE della) (NOU~CS finanza) (ADJ~QU pubblica)))))
                                          (PP-TMP (PREP per)
                                              (NP (ART~DE il) (DATE '97))))))
                                  (NP-SBJ (-NONE- *-2933)))))
                         (. .)) )


************** FRASE NEWS-187 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE L') (NOU~CS anticipo))
        (PP (PREP della)
            (NP (ART~DE della) (NOU~CS Finanziaria)
                (NP (DATE '98)))))
       (PRN
           (, ,)
           (PP (PREP per)
               (NP
                   (NP (ART~DE il) (NOU~CS presidente))
                   (PP (PREP del)
                       (NP (ART~DE del) (NOU~CS Consiglio)))))
              (, ,))
           (VP (VMA~RE e')
               (ADVP (ADVB invece))
               (ADJP-PRD
                   (ADJP (ADJ~QU utile))
                   (CONJ ma)
                   (ADJP (ADVB non) (ADJ~QU indispensabile))))
             (. .)) )


************** FRASE NEWS-188 **************

 ( (S
    (VP (VAU~RE È)
        (VP (VMA~PA INIZIATO)
            (ADVP-TMP (ADVB IERI))
            (PP-LOC (PREP AL)
                (NP
                    (NP (ART~DE AL) (NOU~PR PALAVOBIS))
                    (PP (PREP di)
                        (NP (NOU~PR Milano)))))
               (NP-EXTPSBJ-833
                   (NP (ART~DE il) (ADJ~OR terzo) (NOU~CS Congresso))
                   (PP (PREP della)
                       (NP (ART~DE della) (NOU~PR LEGA_NORD))))))
           (NP-SBJ (-NONE- *-833))
           (. .)) )


************** FRASE NEWS-189 **************

 ( (S
    (NP-SBJ (NOU~PR Giancarlo) (NOU~PR Pagliarini))
    (VP (VAU~RE ha)
        (VP (VMA~PA difeso)
            (NP
                (NP (ART~DE le) (NOU~CP ragioni) (ADJ~QU economiche))
                (PP (PREP della)
                    (NP (ART~DE della) (NOU~CS secessione))))))
        (. .)) )


************** FRASE NEWS-190 **************

 ( (S
    (ADVP-TMP (ADVB Oggi))
    (VP (-NONE- *)
        (NP-EXTPSBJ-233
            (NP (ART~DE il) (ADJ~OR primo) (NOU~CS intervento))
            (PP (PREP di)
                (NP (NOU~PR Umberto) (NOU~PR Bossi)))))
       (NP-SBJ (-NONE- *-233))
       (. .)) )


************** FRASE NEWS-191 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE IL) (NOU~CS SINDACO))
        (PP (PREP DI)
            (NP (NOU~PR TRIESTE)))
         (NP (NOU~PR RICCARDO) (NOU~PR ILLY)))
      (NP (PRO~RI si))
      (VP (VAU~RE e')
          (VP (VMA~PA dimesso)
              (PP-TMP (PREP dopo)
                  (NP
                      (NP (ART~IN una) (NOU~CS seduta) (ADJ~QU burrascosa))
                      (PP (PREP del)
                          (NP (ART~DE del) (NOU~CS Consiglio) (ADJ~QU comunale)))))
                 (NP-TMP
                     (NP (NOU~CA giovedi'))
                     (NP (NOU~CS notte)))))
            (. .)) )


************** FRASE NEWS-192 **************

 ( (NP
    (NP (ADJ~QU FORTE) (NOU~CS RICHIAMO))
    (PP (PREP DI)
        (NP (NOU~PR GIOVANNI)
            (NP (NOU~PR PAOLO) (ADJ~OR II))))
      (PP (PREP alla)
          (NP
              (NP (ART~DE alla) (NOU~CA dignita') (ADJ~QU umana))
              (PP (PREP dell')
                  (NP (ART~DE dell') (NOU~CS embrione)))))
         (. .)) )


************** FRASE NEWS-193 **************

 ( (S
    (NP-SBJ (ART~DE Il) (NOU~CS Papa))
    (VP (VAU~RE ha)
        (VP (VMA~PA detto)
            (CONJ che)
            (S
                (VP (VAU~RE e')
                    (VP (VMA~PA giunta)
                        (NP-EXTPSBJ-833
                            (NP (ART~DE l') (NOU~CS ora))
                            (ADJP
                                (ADJP (ADJ~QU storica))
                                (CONJ e)
                                (ADJP (ADJ~QU pressante)))
                             (PP (PREP di)
                                 (S
                                     (VP (VMA~IN riconquistare)
                                         (NP
                                             (NP (ADJ~QU specifici) (NOU~CP spazi))
                                             (PP (PREP di)
                                                 (NP (NOU~CA umanita')))
                                              (PRN
                                                  (, ,)
                                                  (NP
                                                      (NP
                                                          (NP (PRO~OR primo))
                                                          (PP (PREP fra)
                                                              (NP (PRO~ID tutti))))
                                                        (NP (PRO~DE quello))
                                                        (PP (PREP della)
                                                            (NP (ART~DE della) (NOU~CS vita) (ADJ~QU prenatale))))
                                                      (, ,)))
                                                (PP (PREP alla)
                                                    (NP
                                                        (NP (ART~DE alla) (NOU~CS sfera))
                                                        (PP (PREP della)
                                                            (NP
                                                                (NP (ART~DE della) (NOU~CS tutela))
                                                                (PP (PREP del)
                                                                    (NP (ART~DE del) (NOU~CS diritto))))))))
                                                  (NP-SBJ (-NONE- *)))))))
                                   (NP-SBJ (-NONE- *-833)))))
                          (. .)) )


************** FRASE NEWS-194 **************

 ( (NP
    (NP (NOU~CA VIA_LIBERA))
    (PP (PREP DALLA)
        (NP
            (NP (ART~DE DALLA) (NOU~CS CORTE))
            (PP (PREP DEI)
                (NP (ART~DE DEI) (NOU~CP CONTI)))))
       (PP (PREP al)
           (NP
               (NP (ART~DE al) (NOU~PR Dpcm))
               (PP (PREP di)
                   (NP (NOU~CS adozione))
                   (PP (PREP del)
                       (NP
                           (NP (ART~DE del) (NOU~CS piano))
                           (PP (PREP di)
                               (NP (NOU~CP interventi))))))))
             (. .)) )


************** FRASE NEWS-195 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE La) (NOU~CS ratifica))
        (PP (PREP del)
            (NP (ART~DE del) (NOU~CS decreto))))
      (VP (VMA~RE consente)
          (PP (PREP di)
              (S
                  (VP (VMA~IN trasferire)
                      (NP (NUMR 3.500) (NOU~CP miliardi))
                      (PP (PREP per)
                          (S
                              (VP (VMA~IN realizzare)
                                  (NP (ART~DE le) (NOU~CP opere))
                                  (PP-LOC
                                      (PP (PREP a)
                                          (NP (NOU~PR Roma)))
                                       (CONJ e)
                                       (PP (PREP nel)
                                           (NP (ART~DE nel) (NOU~PR Lazio)))))
                                  (NP-SBJ (-NONE- *)))))
                         (NP-SBJ (-NONE- *)))))
                (. .)) )


************** FRASE NEWS-196 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE LA) (NOU~CS GUERRA))
        (PP (PREP DEL)
            (NP (ART~DE DEL) (NOU~CS LATTE))))
      (VP (VMO~CO potrebbe)
          (ADVP-TMP (ADVB presto))
          (S
              (VP (VMA~IN aprire)
                  (NP (ART~IN un) (ADJ~DI altro) (NOU~CS fronte)))
               (NP-SBJ (-NONE- *-133))))
         (. .)) )


************** FRASE NEWS-197 **************

 ( (S
    (PP-LOC (PREP Alla)
        (NP
            (NP (ART~DE Alla) (NOU~PR Fieragricola))
            (PP-LOC (PREP di)
                (NP (NOU~PR Verona)))))
       (NP-SBJ
           (NP (ART~DE i) (NOU~CP Comitati) (ADJ~QU spontanei))
           (PP (PREP degli)
               (NP (ART~DE degli) (NOU~CP allevatori))))
         (VP (VAU~RE hanno)
             (VP (VMA~PA minacciato)
                 (NP
                     (NP (ART~DE il) (NOU~CS blocco))
                     (PP
                         (PP (PREP delle)
                             (NP
                                 (NP (ART~DE delle) (NOU~CP industrie))
                                 (PP (PREP di)
                                     (NP (NOU~CS lavorazione)))))
                            (CONJ e)
                            (PP (ADVB quindi) (PREP dei)
                                (NP
                                    (NP (ART~DE dei) (NOU~CP rifornimenti))
                                    (PP (PREP di)
                                        (NP (NOU~CP latte)))
                                     (PP (PREP ai)
                                         (NP (ART~DE ai) (NOU~CP punti)
                                             (NP (NOU~CS vendita))))))))
                           (, ,)
                           (PP-TMP (ADVB gia') (PREP dalla)
                               (NP (ART~DE dalla) (ADJ~DI prossima) (NOU~CS settimana)))))
                      (. .)) )


************** FRASE NEWS-198 **************

 ( (PRN
    (-LRB- -LRB-)
    (NP
        (NP
            (NP (NOU~CP Servizi))
            (PP (PREP a)
                (NP
                    (NP (NOU~CA pag.))
                    (NP (NUMR 14)))))
           (PRN
               (-RRB- -RRB-)
               (. .)))) )


************** FRASE NEWS-199 **************

 ( (S
    (PP-TMP (PREP IN)
        (NP (NOU~CS FEBBRAIO)))
     (NP-SBJ (ART~DE LA) (NOU~CS PRODUZIONE) (ADJ~QU INDUSTRIALE))
     (VP (VMA~RE frena)
         (NP (ART~DE il) (NOU~CS passo)))
      (. .)) )


************** FRASE NEWS-200 **************

 ( (S (PHRASP (PHRAS Si')
        (S
            (VP (VMA~RE e')
                (ADJP-PRD (ADJ~QU vero)))
             (NP-SBJ (-NONE- *))))
       (PUNCT -)
       (VP (VMA~RE ammette)
           (NP-EXTPSBJ-633 (ART~DE il) (NOU~CS ministro) (ADJ~QU albanese)))
        (NP-SBJ (-NONE- *-633))
        (PUNCT -)
        (. .)) )


************** FRASE NEWS-201 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~PR Irs))
    (VP (VAU~RE ha)
        (VP (VMA~PA stimato)
            (NP
                (NP (ART~IN un) (NOU~CS aumento) (ADJ~QU tendenziale))
                (PP (PREP dello)
                    (NP (ART~DE dello) (NUMR 0,2) (SPECIAL %)))
                 (PP (PREP della)
                     (NP (ART~DE della) (NOU~CS produzione) (ADJ~QU media) (ADJ~QU giornaliera))))))
         (: ;)) )


************** FRASE NEWS-202 **************

 ( (S
    (PP (PREP rispetto)
        (PP (PREP a)
            (NP (NOU~CS gennaio))))
      (VP (VAU~RE e')
          (VP (VMA~PA attesa)
              (NP-EXTPSBJ-633
                  (NP (ART~IN una) (NOU~CS flessione))
                  (PP (PREP dello)))))
         (NP-SBJ (-NONE- *-633))
         (. .)) )


************** FRASE NEWS-203 **************

 ( (S
    (NP (PRO~RI Si))
    (VP (VMA~RE ferma)
        (ADVP-TMP (ADVB intanto))
        (NP-EXTPSBJ-433
            (NP (ART~DE la) (NOU~CS ripresina))
            (PP-TMP (PREP d')
                (NP (NOU~CS autunno)))
             (PP (PREP della)
                 (NP (ART~DE della) (NOU~CS chimica)))))
        (NP-SBJ (-NONE- *-433))
        (. .)) )


************** FRASE NEWS-204 **************

 ( (NP
    (NP (NOU~CS OTTIMISMO))
    (PP-LOC (PREP ALLA)
        (NP (ART~DE ALLA) (NOU~PR WTO)
            (, ,)
            (SBAR
                (S
                    (NP-LOC (PRO~LO dove))
                    (NP-SBJ-633
                        (NP (ART~DE l') (ADJ~QU importante) (NOU~CS intesa))
                        (PP (PREP sulla)
                            (NP
                                (NP (ART~DE sulla) (NOU~CS liberalizzazione))
                                (PP (PREP del)
                                    (NP
                                        (NP (ART~DE del) (NOU~CS mercato) (ADJ~QU mondiale))
                                        (PP (PREP delle)
                                            (NP (ART~DE delle) (NOU~CP telecomunicazioni)))))))
                             (PRN
                                 (, ,)
                                 (NP
                                     (NP (ART~IN un) (NOU~CS affare))
                                     (PP (PREP da)
                                         (NP
                                             (NP (NUMR 600) (NOU~CP miliardi))
                                             (PP (PREP di)
                                                 (NP (NOU~CP dollari))))))
                                     (, ,)))
                               (VP (VMA~RE sembra)
                                   (ADVP-TMP (ADVB ormai))
                                   (S-PRD
                                       (VP (VMA~PA raggiunta))
                                       (NP-SBJ (-NONE- *-633))))))))
                     (. .)) )


************** FRASE NEWS-205 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~CS annuncio))
    (VP (VAU~RE e')
        (VP (VMA~PA atteso)
            (PP-TMP (PREP per) (ADVB oggi))))
      (. .)) )


************** FRASE NEWS-206 **************

 ( (S
    (NP-SBJ-133 (ART~IN UNA)
        (NP (NOU~CS BRIGATA) (ADJ~QU congiunta))
        (ADJP
            (ADJP (ADJ~QU italo))
            (PUNCT -)
            (ADJP
                (ADJP (ADJ~QU sloveno))
                (PUNCT -)
                (ADJP (ADJ~QU ungherese)))))
       (VP (VAU~FU sara')
           (VP (VMA~PA costituita)
               (PP (PREP per)
                   (S
                       (VP (VMA~IN favorire)
                           (NP
                               (NP (ART~DE l') (NOU~CS armonizzazione))
                               (PP (PREP degli)
                                   (NP
                                       (NP (ART~DE degli) (NOU~CA standard) (ADJ~QU operativi))
                                       (PP (PREP di)
                                           (NP (NOU~CS difesa)))))))
                            (NP-SBJ (-NONE- *-133))))))
                (. .)) )


************** FRASE NEWS-207 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~CS idea))
    (VP (VAU~RE e')
        (VP (VMA~PA emersa)
            (PP-LOC (PREP nella)
                (NP
                    (NP (ART~DE nella) (NOU~CS riunione))
                    (PP-LOC (PREP alla)
                        (NP (ART~DE alla) (NOU~PR Farnesina)))
                     (PP (PREP dei)
                         (NP
                             (NP (ART~DE dei) (NOU~CP sottosegretari))
                             (PP (PREP degli)
                                 (NP (ART~DE degli) (NOU~CP Esteri)))
                              (PP (PREP della)
                                  (NP (ART~DE della) (NOU~PR Trilaterale)))))))))
             (. .)) )


************** FRASE NEWS-208 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE IL) (NOU~CS PRESIDENTE))
        (PP (PREP DELLA)
            (NP (ART~DE DELLA) (NOU~CS CONSULTA)))
         (NP (NOU~PR Renato) (NOU~PR Granata)))
      (VP (VAU~RE ha)
          (VP (VMA~PA difeso)
              (ADVP-TMP (ADVB ieri))
              (PRN
                  (, ,)
                  (PP-LOC (PREP nell')
                      (NP
                          (NP (ART~DE nell') (ADJ~QU annuale) (NOU~CS CONFERENZA_STAMPA))
                          (PP (PREP della)
                              (NP (ART~DE della) (NOU~CS Corte)))))
                     (, ,))
                  (NP
                      (NP (ART~DE le) (NOU~CP sentenze))
                      (PP (PREP sui)
                          (NP (ART~DE sui) (NOU~CA referendum)))
                       (, ,)
                       (SBAR
                           (NP-2333 (PRO~RE che))
                           (S
                               (NP-SBJ (-NONE- *-2333))
                               (ADVP (ADVB non))
                               (VP (VAU~RE sono)
                                   (VP (VMA~PA state)
                                       (NP-PRD
                                           (NP (NOU~CS frutto))
                                           (PP
                                               (PP (PREP di)
                                                   (NP (NOU~CP scelte) (ADJ~QU politiche)))
                                                (CONJ ne')
                                                (PP (PREP di)
                                                    (NP (NOU~CP pressioni))))))))))))
                      (. .)) )


************** FRASE NEWS-209 **************

 ( (S
    (VP (VMA~PA CHIESTE)
        (PP-LOC (PREP IN)
            (NP (NOU~PR ALBANIA)))
         (NP-EXTPSBJ-433
             (NP (ART~DE LE) (NOU~CP DIMISSIONI))
             (PP (PREP del)
                 (NP-733 (ART~DE del)
                     (NP (NOU~CS Governo)) (NOU~PR Meksi)
                     (ADJP (ADJ~QU incapace)
                         (PP (PREP di)
                             (S
                                 (VP (VMA~IN fronteggiare)
                                     (NP
                                         (NP (ART~DE la) (NOU~CS protesta))
                                         (PP (PREP per)
                                             (NP
                                                 (NP (ART~DE lo) (NOU~CS scandalo))
                                                 (PP (PREP delle)
                                                     (NP (ART~DE delle) (NOU~CP finanziarie)
                                                         (NP (NOU~CS pirata))))))))
                                       (NP-SBJ (-NONE- *-733)))))))))
                  (NP-SBJ (-NONE- *-433))
                  (. .)) )


************** FRASE NEWS-210 **************

 ( (S
    (NP-SBJ (ART~DE La) (NOU~CS richiesta))
    (VP (VAU~RE e')
        (VP (VAU~PA stata)
            (VP (VMA~PA fatta))))
      (PP-LGS (PREP da)
          (NP (NOU~PR Gezim) (NOU~PR Zilja)
              (, ,)
              (NP
                  (NP (NOU~CA leader))
                  (PP-LOC (PREP a)
                      (NP (NOU~PR Valona)))
                   (PP (PREP del)
                       (NP
                           (NP (ART~DE del) (NOU~CS Partito) (ADJ~QU democratico))
                           (PP (PREP del)
                               (NP
                                   (NP (ART~DE del) (NOU~CS presidente))
                                   (PP (PREP della)
                                       (NP (ART~DE della) (NOU~CS Repubblica)))
                                    (, ,)
                                    (NP (NOU~PR Sali) (NOU~PR Berisha)))))))))
               (. .)) )


************** FRASE NEWS-211 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~IN Un) (NOU~CS piano))
        (PP (PREP di)
            (NP (NOU~CS assistenza)))
         (PRN
             (-LRB- -LRB-)
             (NP (NUMR 50)
                 (PUNCT -)
                 (NP
                     (NP (NUMR 100) (NOU~CP milioni))
                     (PP (PREP di)
                         (NP (NOU~CP dollari)))))
                (-RRB- -RRB-)))
          (VP (VMA~FU cerchera')
              (PP (PREP di)
                  (S
                      (VP (VMA~IN attutire)
                          (NP
                              (NP (ART~DE il) (NOU~CA crack))
                              (PP (PREP delle)
                                  (NP (ART~DE delle) (NOU~CP piramidi)))))
                         (NP-SBJ (-NONE- *-133)))))
                (. .)) )


************** FRASE NEWS-212 **************

 ( (NP (ART~DE La)
    (NP
        (NP (NOU~CS Banca) (ADJ~QU mondiale))
        (PP (PREP in)
            (NP (NOU~CS aiuto))
            (PP (PREP dell')
                (NP (ART~DE dell') (NOU~PR Albania)))))
       (. .)) )


************** FRASE NEWS-213 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE I) (NOU~CP finanzieri))
        (PP (PREP d')
            (NP (NOU~CS assalto)))
         (ADJP (ADVB piu') (ADJ~QU fantasiosi))
         (PP (PREP dei)
             (NP (ART~DE dei) (NOU~PR Balcani))))
       (ADVP (ADVB forse))
       (VP (VMO~FU dovranno)
           (S
               (VP (VMA~IN cambiare)
                   (NP (NOU~CS mestiere)))
                (NP-SBJ (-NONE- *-133))))
          (. .)) )


************** FRASE NEWS-214 **************

 ( (S
    (NP-SBJ
        (NP-SBJ
            (NP (ART~DE Le) (NOU~CP pressioni))
            (PP (PREP della)
                (NP (ART~DE della) (NOU~CS piazza))))
          (, ,)
          (NP
              (NP
                  (NP (ART~DE la) (NOU~CS rivolta))
                  (PP-LOC (PREP nella)
                      (NP
                          (NP (ART~DE nella)
                              (" ") (NOU~CS Repubblica) (ADJ~QU indipendente)
                              (" "))
                           (PP (PREP di)
                               (NP (NOU~PR Valona))))))
                   (, ,)
                   (NP
                       (NP
                           (NP (ART~DE i) (NOU~CP contrasti))
                           (PP (PREP dentro)
                               (PP (PREP a)
                                   (NP (ART~IN un)
                                       (NP (NOU~CS Governo))
                                       (SBAR
                                           (NP-2333 (PRO~RE che))
                                           (S
                                               (NP-SBJ (-NONE- *-2333))
                                               (VP (VMA~RE annaspa)
                                                   (PP-LOC (PREP nelle)
                                                       (NP (ART~DE nelle)
                                                           (NP (NOU~CP lotte))
                                                           (ADJP (ADJ~QU interne)
                                                               (PP (PREP al)
                                                                   (NP (ART~DE al) (NOU~CS Partito) (ADJ~QU democratico)))))))))))))
                                  (, ,)
                                  (NP
                                      (NP (NOU~CP accuse))
                                      (CONJ e)
                                      (NP
                                          (NP (NOU~CP sospetti))
                                          (PP (PREP di)
                                              (NP (ADJ~IN ogni) (NOU~CS genere)))
                                           (PP (PREP sulle)
                                               (NP
                                                   (NP (ART~DE sulle) (NOU~CP collusioni))
                                                   (PP (PREP tra)
                                                       (NP
                                                           (NP (NOU~CP politici))
                                                           (CONJ e)
                                                           (NP (NOU~CP traffici) (ADJ~QU illegali)))))))))))
                                (, ,)
                                (VP (VMA~RE costringono)
                                    (NP-4633 (NOU~PR Tirana))
                                    (PP (PREP a)
                                        (S
                                            (VP (VMA~IN venire)
                                                (PP (PREP a)
                                                    (NP (NOU~CP patti)))
                                                 (PP (PREP con)
                                                     (NP
                                                         (NP
                                                             (NP (ART~DE la) (NOU~CA contabilita'))
                                                             (PP (PREP dei)
                                                                 (NP (ART~DE dei) (NOU~CP bilanci))))
                                                           (CONJ e)
                                                           (NP (ART~DE le) (NOU~CP istituzioni) (ADJ~QU internazionali)))))
                                                  (NP-SBJ (-NONE- *-4633)))))
                                         (. .)) )


************** FRASE NEWS-215 **************

 ( (S
    (PP-LOC (PREP Nella)
        (NP (ART~DE Nella) (NOU~CS capitale) (ADJ~QU albanese)))
     (VP (VAU~RE sta)
         (VP (VMA~GE arrivando)
             (NP-EXTPSBJ-633
                 (NP (ART~IN una) (NOU~CS missione))
                 (PP (PREP della)
                     (NP (ART~DE della) (NOU~CS Banca) (ADJ~QU mondiale))))
               (PP (PREP con)
                   (NP
                       (NP (ART~DE l') (NOU~CS obiettivo))
                       (PP (PREP di)
                           (S
                               (VP (VMA~IN mettere)
                                   (PP (PREP a)
                                       (NP (NOU~CS punto)))
                                    (NP
                                        (NP (ART~IN un) (NOU~CS piano))
                                        (PP (PREP di)
                                            (NP
                                                (NP (NOU~CS assistenza))
                                                (ADJP
                                                    (ADJP (ADJ~QU tecnica))
                                                    (CONJ e)
                                                    (ADJP (ADJ~QU finanziaria)))))
                                           (VP (VMA~PA destinato)
                                               (NP (-NONE- *))
                                               (PP (PREP ad)
                                                   (S
                                                       (VP (VMA~IN attutire)
                                                           (NP
                                                               (NP (ART~DE il) (NOU~CA crack))
                                                               (PP (PREP delle)
                                                                   (NP (ART~DE delle)
                                                                       (' ') (NOU~CP piramidi)
                                                                       (' ')))))
                                                           (NP-SBJ (-NONE- *-25.1033)))))))
                                            (NP-SBJ (-NONE- *-633))))))))
                          (NP-SBJ (-NONE- *-633))
                          (. .)) )


************** FRASE NEWS-216 **************

 ( (S
    (NP-SBJ (ART~DE La) (NOU~CS decisione))
    (VP (VAU~RE e')
        (VP (VAU~PA stata)
            (VP (VMA~PA presa))))
      (PP-TMP (PREP dopo)
          (NP
              (NP (ART~IN una) (NOU~CS riunione))
              (PP-LOC (PREP a)
                  (NP (NOU~PR Washington)))
               (PP (PREP tra)
                   (NP
                       (NP (ART~DE le) (NOU~CP organizzazioni) (ADJ~QU internazionali))
                       (CONJ e)
                       (NP (ART~DE i) (ADJ~QU principali) (NOU~CP Paesi)
                           (NP (NOU~CP donatori)))))))
            (. .)) )


************** FRASE NEWS-217 **************

 ( (S
    (NP-SBJ (ART~DE L')
        (NP (NOU~CS iniziativa))
        (, ,)
        (VP (VMA~PA appoggiata)
            (NP (-NONE- *))
            (PP-LGS (ADVB anche) (PREP dagli)
                (NP (ART~DE dagli) (NOU~PR Usa)))))
       (, ,)
       (VP (VAU~RE e')
           (VP (VMA~PA promossa)
               (PP-LGS (PREP dall')
                   (NP (ART~DE dall') (NOU~PR UNIONE_EUROPEA)
                       (SBAR
                           (NP-1333 (PRO~RE che))
                           (S
                               (NP-SBJ (-NONE- *-1333))
                               (NP (ART~DE il) (NUMR 24) (NOU~CS febbraio))
                               (PP (PREP in)
                                   (NP
                                       (NP (ART~IN una) (NOU~CS riunione))
                                       (PP (PREP dei)
                                           (NP
                                               (NP (ART~DE dei) (NOU~CP ministri))
                                               (PP (PREP degli)
                                                   (NP (ART~DE degli) (NOU~CP Esteri)))))))
                                    (VP (VMA~FU avra')
                                        (PP-LOC (PREP IN_CIMA_A)
                                            (NP (ART~DE all') (NOU~CS agenda)))
                                         (NP
                                             (NP (ART~DE la) (NOU~CS discussione))
                                             (PP (PREP della)
                                                 (NP (ART~DE della) (NOU~CA crisi) (ADJ~QU albanese)))))))))))
                      (. .)) )


************** FRASE NEWS-218 **************

 ( (S
    (NP-SBJ-133 (ART~DE L') (NOU~CS intervento)
        (PRN
            (PUNCT -)
            (S
                (PP (PREP tra)
                    (NP (ART~DE i) (ADJ~PO suoi) (NOU~CP sostenitori)))
                 (VP (-NONE- *)
                     (NP-EXTPSBJ-833 (ART~DE il) (NOU~CS ministro)
                         (NP (NOU~PR Lamberto) (NOU~PR Dini))))
                   (NP-SBJ (-NONE- *-833)))
                (PUNCT -)))
          (VP (VAU~FU sara')
              (VP (VMA~PA mirato)
                  (PP (ADVB soprattutto) (PREP ad)
                      (S
                          (VP (VMA~IN attenuare)
                              (NP
                                  (NP (ART~DE gli) (NOU~CP effetti))
                                  (PP (PREP dei)
                                      (NP (ART~DE dei) (NOU~CP fallimenti)))
                                   (PP (PREP sulla)
                                       (NP
                                           (NP (ART~DE sulla) (NOU~CS massa))
                                           (ADJP (ADVB piu') (ADJ~QU povera))
                                           (PP (PREP della)
                                               (NP (ART~DE della) (NOU~CS popolazione)))))))
                                (NP-SBJ (-NONE- *-133))))))
                    (. .)) )


************** FRASE NEWS-219 **************

 ( (S
    (VP
        (ADVP (ADVB Non))
        (NP-LOC (PRO~LO c'))
        (VP (VMA~RE e')
            (ADVP-TMP (ADVB ancora))
            (NP-EXTPSBJ-533
                (NP (ART~IN una) (NOU~CS valutazione) (ADJ~QU precisa))
                (PP (PREP sull')
                    (NP
                        (NP (ART~DE sull') (NOU~CA entita'))
                        (PP (PREP del)
                            (NP (ART~DE del) (NOU~CS piano)))))))
             (CONJ ma)
             (S
                 (PP-LOC (PREP nei)
                     (NP
                         (NP (ART~DE nei) (NOU~CP corridoi))
                         (PP (PREP della)
                             (NP (ART~DE della) (NOU~CS diplomazia) (ADJ~QU internazionale)))))
                    (NP (PRO~RI si))
                    (VP (VMA~RE pensa)
                        (PP (PREP a)
                            (NP-2133
                                (NP (ART~IN un) (NOU~CS programma))
                                (PP (PREP da)
                                    (NP
                                        (PUNCT -)
                                        (NP (NUMR 50) (NUMR 100) (NOU~CP milioni))
                                        (PP (PREP di)
                                            (NP (NOU~CP dollari)))))
                                   (, ,)
                                   (VP (VMA~PA rivolto)
                                       (NP (-NONE- *))
                                       (PP (ADVB soprattutto) (PREP a)
                                           (S
                                               (VP (VMA~IN ossigenare)
                                                   (NP
                                                       (NP (ART~DE le) (NOU~CP riserve))
                                                       (PP (PREP della)
                                                           (NP (ART~DE della)
                                                               (NP (NOU~CS Banca) (ADJ~QU centrale))
                                                               (VP (VMA~PA impegnata)
                                                                   (NP (-NONE- *))
                                                                   (PP (PREP nella)
                                                                       (NP
                                                                           (NP (ART~DE nella) (NOU~CS difesa))
                                                                           (PP (PREP del)
                                                                               (NP (ART~DE del) (NOU~CA lek))))))))))
                                                       (NP-SBJ (-NONE- *-2133))))))))))
                               (NP-SBJ (-NONE- *-533))
                               (. .)) )


************** FRASE NEWS-220 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE Il) (NOU~CS crollo))
        (PP (PREP della)
            (NP-3.133 (ART~DE della) (NOU~CS moneta)))
         (PRN
             (PUNCT -)
             (S
                 (PP-TMP (PREP nelle)
                     (NP (ART~DE nelle) (ADJ~OR ultime) (NOU~CP settimane)))
                  (VP (VAU~RE ha)
                      (VP (VMA~PA perso)
                          (NP
                              (NP (ART~DE il) (NUMR 30) (SPECIAL %))
                              (PP (PREP sul)
                                  (NP (ART~DE sul) (NOU~CS dollaro))))))
                      (NP-SBJ (-NONE- *-3.133)))
                   (PUNCT -)))
             (VP (VMA~CO sarebbe)
                 (NP-PRD (ART~DE il) (NOU~CS tocco) (ADJ~QU finale))
                 (PP (PREP per)
                     (S
                         (VP (VMA~IN aprire)
                             (NP
                                 (NP (ART~IN un') (ADJ~DI altra) (NOU~CS voragine))
                                 (PP-LOC (PREP nei)
                                     (NP
                                         (NP (ART~DE nei) (NOU~CP conti))
                                         (PP (PREP dell')
                                             (NP (ART~DE dell') (NOU~PR Albania)))))))
                              (NP-SBJ (-NONE- *-133)))))
                     (. .)) )


************** FRASE NEWS-221 **************

 ( (S
    (CONJ E)
    (PP (PREP per)
        (NP
            (NP (NOU~CP motivi))
            (PP (PREP di)
                (NP (NOU~CS ordine) (ADJ~QU pubblico)))))
       (ADVP (ADVB forse))
       (VP (VAU~FU saranno)
           (VP (VMA~PA salvate)
               (NP-EXTPSBJ-1033
                   (NP (ART~DE le) (ADJ~DI altre) (NOU~CP finanziarie))
                   (PP (PREP in)
                       (NP (NOU~CA difficolta'))))))
           (NP-SBJ (-NONE- *-1033))
           (. .)) )


************** FRASE NEWS-222 **************

 ( (S
    (PP (PREP Per)
        (NP (PRO~PE loro)))
     (VP (VMO~CO potrebbe)
         (S
             (VP (VMA~IN esserci)
                 (NP-LOC (PRO~LO esserci)))
              (NP-SBJ (-NONE- *-533)))
           (NP-EXTPSBJ-533
               (NP (ART~IN una) (NOU~CS sorta))
               (PP (PREP di)
                   (' ')
                   (NP (NOU~CS amministrazione) (ADJ~QU controllata))
                   (' '))))
          (NP-SBJ (-NONE- *-533))
          (. .)) )


************** FRASE NEWS-223 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (NOU~CP Migliaia))
        (PP (PREP di)
            (NP
                (NP (ADJ~QU piccoli) (NOU~CP risparmiatori))
                (VP (VMA~PA truffati)
                    (NP (-NONE- *)))
                 (PP (PREP con)
                     (NP (ART~DE le) (NOU~CP tasche) (ADJ~QU vuote))))))
         (VP (VAU~RE sono)
             (VP (VMA~PA diventati)
                 (NP-PRD
                     (NP (ART~DE la) (NOU~CS massa))
                     (PP (PREP di)
                         (NP (NOU~CS manovra)))
                      (PP (PREP della)
                          (NP (ART~DE della) (NOU~CS protesta))))))
              (. .)) )


************** FRASE NEWS-224 **************

 ( (NP (ART~IN Un)
    (NP
        (NP (NOU~CS malcontento))
        (VP (VMA~PA sfruttato)
            (NP (-NONE- *))
            (PP-LGS
                (PP
                    (ADVP (ADVB non) (ADVB solo)) (PREP dall')
                    (NP (ART~DE dall') (NOU~CS opposizione)))
                 (, ,)
                 (CONJ ma)
                 (PP (PREP da)
                     (NP (ADVB anche)
                         (NP (NOU~CP organizzazioni))
                         (ADJP
                             (ADJP (ADJ~QU criminali))
                             (CONJ e)
                             (ADJP (ADJ~QU malavitose)))
                          (PP (PREP con)
                              (NP
                                  (NP (NOU~CP investimenti))
                                  (PP-LOC (PREP nelle)
                                      (NP (ART~DE nelle)
                                          (' ') (NOU~CP piramidi)
                                          (' ')))
                                    (PP (PREP da)
                                        (NP
                                            (NP (NOU~CP milioni))
                                            (PP (PREP di)
                                                (NP (NOU~CP dollari)))
                                             (, ,)
                                             (NP
                                                 (NP (NOU~CP proventi))
                                                 (PP (PREP del)
                                                     (NP
                                                         (NP (ART~DE del) (NOU~CS traffico))
                                                         (PP
                                                             (PP (PREP di)
                                                                 (NP (NOU~CS droga)))
                                                              (, ,)
                                                              (PP
                                                                  (PP (PREP dei)
                                                                      (NP (ART~DE dei) (NOU~CP clandestini)))
                                                                   (, ,)
                                                                   (PP
                                                                       (PP (PREP della)
                                                                           (NP (ART~DE della) (NOU~CS prostituzione)))
                                                                        (, ,)
                                                                        (PP
                                                                            (PP (PREP delle)
                                                                                (NP (ART~DE delle) (NOU~CP armi)))
                                                                             (, ,)
                                                                             (PP (PREP del)
                                                                                 (NP
                                                                                     (NP (ART~DE del) (NOU~CS riciclaggio))
                                                                                     (PP (PREP di)
                                                                                         (NP (NOU~CS denaro) (ADJ~QU sporco)))))))))))))))))))))
                                (. .)) )


************** FRASE NEWS-225 **************

 ( (S
    (S
        (S
            (VP-SBJ (VMA~IN Svuotare)
                (NP (ART~DE la) (NOU~CS piazza)))
             (NP-SBJ (-NONE- *)))
          (, ,)
          (S
              (VP (VMA~IN far)
                  (S
                      (VP (VMA~IN sbollire)
                          (NP-733 (ART~DE la) (NOU~CS rabbia)))
                       (NP-SBJ (-NONE- *-733))))
                 (NP-SBJ (-NONE- *))))
           (, ,)
           (VP (VMA~RE e')
               (NP-PRD
                   (NP (ART~DE l') (NOU~CS obiettivo))
                   (PP (PREP del)
                       (NP (ART~DE del) (NOU~CS Governo)))))
              (. .)) )


************** FRASE NEWS-226 **************

 ( (S
    (VP
        (VP (VAU~FU Saranno)
            (ADVP (ADVB quindi))) (VMA~PA rimborsati)
         (ADVP-TMP (ADVB subito))
         (NP-EXTPSBJ-533
             (NP (PRO~DE coloro))
             (SBAR
                 (NP-6333 (PRO~RE che))
                 (S
                     (NP-SBJ (-NONE- *-6333))
                     (VP (VAU~RE hanno)
                         (VP (VMA~PA perduto)
                             (NP
                                 (NP (NOU~CP capitali))
                                 (PP (PREP da)
                                     (NP (NUMR 1.000)
                                         (PUNCT -) (NUMR 2.000) (NOU~CP dollari))))))))))
              (NP-SBJ (-NONE- *-533))
              (. .)) )


************** FRASE NEWS-227 **************

 ( (S
    (NP-133 (NOU~PR Tirana))
    (PUNCT -)
    (VP (VMA~RE dichiara)
        (NP-EXTPSBJ-433
            (NP (ART~DE il) (NOU~CS ministro))
            (PP (PREP degli)
                (NP (ART~DE degli) (NOU~CP Esteri)))
             (NP (NOU~PR Tritan) (NOU~PR Shehu)))
          (PUNCT -)
          (S
              (VP (VMA~FU chiedera')
                  (NP (NOU~CS aiuto))
                  (PP (PREP all')
                      (NP (ART~DE all') (NOU~PR UNIONE_EUROPEA)))
                   (PP (PREP per)
                       (NP
                           (NP (ART~IN un) (NOU~CS pacchetto))
                           (PP (PREP di)
                               (NP
                                   (NP (NOU~CP misure))
                                   (VP (VMA~PA destinate)
                                       (NP (-NONE- *))
                                       (PP (PREP a)
                                           (S
                                               (VP (VMA~IN sostenere)
                                                   (NP
                                                       (NP (ART~DE le) (NOU~CP fasce))
                                                       (PP (PREP di)
                                                           (NP (NOU~CS popolazione)))
                                                        (ADJP (ADVB piu') (ADJ~QU vulnerabili))))
                                                  (NP-SBJ (-NONE- *-21.1033))))))))))
                          (NP-SBJ (-NONE- *-133))))
                    (NP-SBJ (-NONE- *-433))
                    (. .)) )


************** FRASE NEWS-228 **************

 ( (NP
    (NP
        (NP (NOU~CP Linee))
        (PP (PREP di)
            (NP (NOU~CS credito)))
         (PP (PREP per)
             (S
                 (VP (VMA~IN assorbire)
                     (NP (NOU~CS disoccupazione)))
                  (NP-SBJ (-NONE- *)))))
         (CONJ e)
         (NP
             (NP (NOU~CP finanziamenti))
             (PP (PREP sulle)
                 (NP (ART~DE sulle) (NOU~CP infrastrutture))))
           (. .)) )


************** FRASE NEWS-229 **************

 ( (S
    (NP-SBJ (NOU~PR Shehu)
        (PRN
            (, ,)
            (VP (VMA~PA sfuggito)
                (NP (-NONE- *))
                (NP-TMP (NUMR tre) (NOU~CP settimane) (ADJ~DI fa))
                (PP (PREP a)
                    (NP (ART~IN un) (NOU~CS linciaggio)))
                 (PP (PREP nella)
                     (NP
                         (NP (ART~DE nella) (NOU~CS rivolta))
                         (PP (PREP di)
                             (NP (NOU~PR Lushnja))))))
                 (, ,)))
           (VP (VMA~RE promette)
               (ADVP-TMP (ADVB intanto))
               (NP (NOU~CP querele))
               (PP (PREP alla)
                   (NP (ART~DE alla)
                       (NP (NOU~CS stampa) (ADJ~QU internazionale))
                       (SBAR
                           (NP-2333 (PRO~RE che))
                           (S
                               (NP-SBJ (-NONE- *-2333))
                               (NP-2233 (PRO~PE lo))
                               (VP (VAU~RE ha)
                                   (VP (VMA~PA accusato)
                                       (PP (PREP di)
                                           (S
                                               (VP (VAU~IN essere)
                                                   (VP (VMA~PA coinvolto)
                                                       (PP (PREP nel)
                                                           (NP
                                                               (NP (ART~DE nel) (NOU~CS contrabbando))
                                                               (PP (PREP di)
                                                                   (NP
                                                                       (NP (NOU~CS petrolio))
                                                                       (, ,)
                                                                       (ADJP (ADJ~QU fiorentissimo)
                                                                           (PP-TMP (PREP durante)
                                                                               (NP
                                                                                   (NP (ART~DE la) (NOU~CS guerra) (ADJ~QU bosniaca))
                                                                                   (PP (PREP tra)
                                                                                       (NP (NOU~PR Albania)
                                                                                           (CONJ ed)
                                                                                           (NP (ADJ~QU ex) (NOU~PR Jugoslavia)))))))))))))
                                                          (NP-SBJ (-NONE- *-2233)))))))))))
                               (. .)) )


************** FRASE NEWS-230 **************

 ( (S
    (S
        (S
            (NP-SBJ-133 (ART~DE Il) (NOU~CS ministro))
            (VP (VMA~RE vive)
                (PP-LOC (PREP in)
                    (NP (ART~IN un) (ADJ~QU modesto) (NOU~CS appartamento)))))
           (, ,)
           (S
               (S
                   (ADVP (ADVB non))
                   (VP (VMA~RE possiede)
                       (NP (ADVB neppure) (ART~DE l') (NOU~CS automobile)))
                    (NP-SBJ-10.1033 (-NONE- *-133)))
                 (CONJ ed)
                 (S
                     (VP (VMA~RE e')
                         (ADJP-PRD (ADJ~QU estraneo)
                             (PP (PREP a)
                                 (NP (ADJ~IN ogni) (NOU~CA attivita') (ADJ~QU illecita)))))
                        (NP-SBJ (-NONE- *-10.1033)))))
               (, ,)
               (VP (VMA~RE dicono)
                   (PP-LOC (PREP a)
                       (NP (NOU~PR Tirana)))
                    (NP-EXTPSBJ-2533
                        (NP (PRO~DE quelli))
                        (SBAR
                            (NP-2333 (PRO~RE che))
                            (S
                                (NP-SBJ (-NONE- *-2333))
                                (NP (PRO~PE lo))
                                (VP (VMA~RE conoscono)
                                    (ADVP (ADVB bene)))))))
                     (NP-SBJ (-NONE- *-2533))
                     (. .)) )


************** FRASE NEWS-231 **************

 ( (S
    (NP-SBJ (PRO~ID Nessuno))
    (ADVP-TMP (ADVB finora))
    (VP (VAU~RE ha)
        (VP (VMA~PA mostrato)
            (NP
                (NP (NOU~CP prove) (ADJ~QU concrete))
                (PP
                    (PP (PREP contro)
                        (PP (PREP di)
                            (NP (PRO~PE lui))))
                      (CONJ o)
                      (PP (PREP contro)
                          (NP
                              (NP (ART~DE il) (NOU~CS presidente)
                                  (NP (NOU~PR Sali) (NOU~PR Berisha)))
                               (CONJ e)
                               (NP
                                   (NP (ADJ~DI altri) (NOU~CP membri))
                                   (PP
                                       (PP (PREP del)
                                           (NP (ART~DE del) (NOU~CS Governo)))
                                        (CONJ o)
                                        (PP (PREP del)
                                            (NP (ART~DE del) (NOU~CS Partito) (ADJ~QU democratico)))))))))))
                 (. .)) )


************** FRASE NEWS-232 **************

 ( (S
    (PP-LOC (PREP Nella)
        (NP (ART~DE Nella) (NOU~CS capitale) (ADJ~QU albanese)))
     (VP (VMA~RE abbondano)
         (NP-EXTPSBJ-3133
             (NP-533 (NOU~CP spie))
             (, ,)
             (NP
                 (NP (NOU~CP informatori))
                 (, ,)
                 (NP
                     (NP (NOU~CA dossier))
                     (CONJ e)
                     (NP (ADJ~IN molte) (NOU~CP voci) (ADJ~QU incontrollate))))))
         (NP-SBJ (-NONE- *-533))
         (. .)) )


************** FRASE NEWS-233 **************

 ( (S
    (NP-SBJ (ART~IN Una) (NOU~CS cosa))
    (VP (VMA~RE e')
        (ADJP-PRD
            (ADJP (ADJ~QU sicura))
            (, ,)
            (ADJP (ADJ~QU tangibile)
                (PP (ADVB anche) (PREP al)
                    (NP (ART~DE al))))))
        (. .)) )


************** FRASE NEWS-234 **************

 ( (S
    (ADVP-LOC (ADVB Qui))
    (VP (VAU~RE e')
        (VP (VMA~PA circolata)
            (NP-EXTPSBJ-433
                (NP (ART~IN una) (NOU~CA quantita'))
                (PP (PREP di)
                    (NP
                        (NP (NOU~CS denaro))
                        (ADJP (ADVB decisamente) (ADJ~QU sproporzionata)
                            (PP (PREP alla)
                                (NP
                                    (NP (ART~DE alla) (NOU~CS ricchezza))
                                    (PRN
                                        (, ,)
                                        (S
                                            (VP (VMA~CO sarebbe)
                                                (ADVP (ADVB meglio))
                                                (S-EXTPSBJ-3133
                                                    (VP-1533 (VMA~IN dire)
                                                        (PP (PREP alla)
                                                            (NP
                                                                (NP (ART~DE alla) (NOU~CA poverta'))
                                                                (PP (-NONE- *-1933)))))
                                                       (NP-SBJ (-NONE- *))))
                                                 (VP-SBJ (-NONE- *-1533)))
                                              (, ,))
                                           (PP-1933 (PREP del)
                                               (NP (ART~DE del)
                                                   (NP (NOU~CS Paese))
                                                   (, ,)
                                                   (SBAR
                                                       (NP-2333 (PRO~RE che))
                                                       (S
                                                           (NP-SBJ (-NONE- *-2333))
                                                           (VP (VMA~RE ha)
                                                               (NP
                                                                   (NP (ART~IN un) (NOU~CS Prodotto) (ADJ~QU interno) (ADJ~QU lordo))
                                                                   (PP (PREP di)
                                                                       (NP
                                                                           (NP (NUMR 1,5) (NOU~CP miliardi))
                                                                           (PP (PREP di)
                                                                               (NP (NOU~CP dollari)))))))))))))))))))
                            (NP-SBJ (-NONE- *-433))
                            (. .)) )


************** FRASE NEWS-235 **************

 ( (S
    (PP-LOC (PREP Nel)
        (NP (ART~DE Nel)
            (NP (NOU~CS sistema))
            (PUNCT -) (NOU~PR Albania)
            (VP
                (VP (VMA~PA drogato)
                    (PP-LGS (PREP dalle)
                        (NP
                            (NP (ART~DE dalle) (NOU~CP violazioni))
                            (PP (PREP dell')
                                (NP
                                    (NP (ART~DE dell') (NOU~CS embargo))
                                    (PP (PREP contro)
                                        (NP (ART~DE la) (ADJ~QU ex) (NOU~PR Jugoslavia))))))))
                      (NP (-NONE- *))
                      (, ,)
                      (S
                          (VP (VMA~PA innaffiato)
                              (PP-LGS
                                  (PP (PREP dal)
                                      (NP (ART~DE dal) (NOU~CS narcotraffico)))
                                   (CONJ e)
                                   (PP (PREP da)
                                       (NP
                                           (NP (NOU~CA attivita') (ADJ~QU illecite))
                                           (PP (PREP di)
                                               (NP (ADJ~IN ogni) (NOU~CS genere)))))))
                                (NP-SBJ (-NONE- *-5.1033))))))
                    (, ,)
                    (VP (VAU~RE e')
                        (VP (VMA~PA passata)
                            (NP-EXTPSBJ-2833
                                (NP (ADJ~IN qualche) (NOU~CS decina))
                                (PP (PREP di)
                                    (NP
                                        (NP (NOU~CP miliardi))
                                        (PP (PREP di)
                                            (NP (NOU~CP dollari))))))
                                (PP-TMP (PREP negli)
                                    (NP (ART~DE negli) (ADJ~OR ultimi)
                                        (NP (NUMR tre)
                                            (PUNCT -)
                                            (NP (NUMR quattro))) (NOU~CP anni)))))
                             (NP-SBJ (-NONE- *-2833))
                             (. .)) )


************** FRASE NEWS-236 **************

 ( (S
    (ADVP (ADVB Certo))
    (NP-SBJ (ART~DE l') (NOU~PR Albania))
    (ADVP (ADVB non))
    (VP (VMA~RE e')
        (NP-PRD
            (NP
                (ADVP (ADVB soltanto)) (PRO~DE questo))
             (CONJ ma)
             (NP
                 (NP
                     (NP (ADVB anche) (NOU~CP rimesse))
                     (PP (PREP degli)
                         (NP (ART~DE degli) (NOU~CP immigrati))))
                   (, ,)
                   (NP
                       (NP (NOU~CP investimenti) (ADJ~QU stranieri))
                       (PP (PREP in)
                           (NP
                               (NP (NOU~CA attivita') (ADJ~QU produttive))
                               (SBAR
                                   (NP-1333 (PRO~RE che))
                                   (S
                                       (NP-SBJ (-NONE- *-1333))
                                       (VP (VAU~RE hanno)
                                           (VP (VMA~PA generato)
                                               (NP
                                                   (NP (NOU~CS occupazione))
                                                   (CONJ ed)
                                                   (NP (NOU~CS entusiasmo)))
                                                (PP-LOC (PREP in)
                                                    (NP (ART~IN un)
                                                        (NP (NOU~CS Paese))
                                                        (VP (VMA~PA uscito)
                                                            (NP (-NONE- *))
                                                            (PP (PREP da)
                                                                (NP
                                                                    (NP (NUMR cinquant') (NOU~CP anni))
                                                                    (PP (PREP di)
                                                                        (NP
                                                                            (NP (NOU~CS stalinismo))
                                                                            (VP (VMA~PA pietrificato)
                                                                                (NP (-NONE- *))))))))))))))))))))
                          (. .)) )


************** FRASE NEWS-237 **************

 ( (S
    (CONJ Eppure)
    (NP-SBJ-233 (PRO~ID qualcuno))
    (VP (VMO~IM doveva)
        (ADVP (ADVB pure))
        (S
            (VP (VMA~IN accorgersi)
                (NP (PRO~RI accorgersi))
                (PP (PREP della)
                    (NP
                        (NP (ART~DE della) (NOU~CS faccia))
                        (ADJP (ADVB piu') (ADJ~QU inquietante))
                        (PP (PREP di)
                            (NP (ADJ~DE questo) (ADJ~QU tumultuoso) (NOU~CS sviluppo))))))
                (NP-SBJ (-NONE- *-233)))
             (, ,)
             (CONJ perche')
             (S
                 (S
                     (NP-SBJ-1633 (ART~DE il) (ADJ~PO suo) (NOU~CS volto) (ADJ~QU ingombrante))
                     (ADVP (ADVB non))
                     (VP (VAU~IM era)
                         (VP (VMA~PA nascosto)
                             (PP-LGS (PREP da)
                                 (NP (ART~IN una) (NOU~CS maschera))))))
                     (CONJ ma)
                     (S
                         (NP (PRO~RI si))
                         (VP (VMA~IM presentava)
                             (PP (PREP in)
                                 (NP (PRDT tutta) (ART~DE la) (ADJ~PO sua) (NOU~CS evidenza))))
                           (NP-SBJ (-NONE- *-1633)))))
                  (. .)) )


************** FRASE NEWS-238 **************

 ( (S
    (ADVP-TMP (ADVB Adesso))
    (NP (PRO~RI si))
    (VP (VMA~RE fanno)
        (NP (ART~DE i)
            (NP (NOU~CP conti))
            (, ,)
            (ADJP
                (' ') (ADJ~QU ballerini)
                (' ')
                (CONJ perche')
                (S
                    (ADVP-LOC (ADVB qui))
                    (VP (VMA~RE saltano)
                        (NP-EXTPSBJ-1433
                            (NP (PRDT tutti) (ART~DE i) (NOU~CP criteri))
                            (PP (PREP di)
                                (NP (NOU~CS calcolo)))))
                       (NP-SBJ (-NONE- *-1433))))))
           (. .)) )


************** FRASE NEWS-239 **************

 ( (S
    (NP-SBJ (ART~DE Le)
        (' ') (NOU~CP piramidi)
        (' '))
     (VP (VAU~RE hanno)
         (VP (VMA~PA lasciato)
             (NP
                 (NP (ART~IN un) (NOU~CS buco))
                 (PP (PREP da)
                     (NP
                         (NP (NUMR due) (NOU~CP miliardi))
                         (PP (PREP di)
                             (NP (NOU~CP dollari))))))))
           (. .)) )


************** FRASE NEWS-240 **************

 ( (S
    (ADVP-LOC (ADVB Dove))
    (VP (VAU~RE sono)
        (VP (VMA~PA finiti)))
     (NP-SBJ (-NONE- *))
     (. ?)) )


************** FRASE NEWS-241 **************

 ( (S
    (NP-SBJ
        (ADVP (ADVB Ben)) (PRO~ID poco))
     (VP (VMA~RE e')
         (PP-LOC (PREP in)
             (NP (NOU~PR Albania)
                 (, ,)
                 (SBAR
                     (S
                         (NP-LOC (PRO~LO dove))
                         (PP (PREP con)
                             (NP (ART~DE le)
                                 (' ') (NOU~CP piramidi)
                                 (' ')))
                           (VP (VAU~RE sono)
                               (VP (VAU~PA stati)
                                   (VP (VMA~PA ripuliti))))
                             (NP-SBJ (-NONE- *-1633))
                             (NP-EXTPSBJ-1633 (ADJ~IN molti) (NOU~CP soldi) (ADJ~QU sporchi)))))))
              (. .)) )


************** FRASE NEWS-242 **************

 ( (S
    (CONJ Ma) ( lontano
        (PP (PREP da)
            (NP (NOU~PR Tirana))))
      (NP-LOC (PRO~LO c'))
      (VP (VMA~RE e')
          (ADVP (ADVB probabilmente))
          (NP-EXTPSBJ-833
              (NP (PRO~ID qualcuno))
              (PRN
                  (PUNCT -)
                  (CONJ come)
                  (S
                      (VP (VMA~IM diceva)
                          (NP-EXTPSBJ-1233 (ART~DE il) (NOU~CS pamphlettista) (ADJ~QU svizzero)
                              (NP (NOU~PR Jean) (NOU~PR Ziegler))))
                        (NP-SBJ (-NONE- *-1233)))
                     (PUNCT -))
                  (SBAR
                      (NP-1333 (PRO~RE che))
                      (S
                          (NP-SBJ (-NONE- *-1333))
                          (VP (VMA~RE lava)
                              (ADVP-TMP (ADVB sempre))
                              (ADJP (ADVB piu') (ADJ~QU bianco)))))))
               (NP-SBJ (-NONE- *-833))
               (. .)) )


************** FRASE NEWS-243 **************

 ( (S
    (NP-SBJ-133 (ART~DE La) (NOU~PR Vefa)
        (PRN
            (, ,)
            (NP
                (NP (PRO~ID una))
                (PP (PREP delle)
                    (NP (ART~DE delle)
                        (NP (ADJ~OR ultime) (NOU~CA societa') (ADJ~QU finanziarie))
                        (VP (VMA~PA rimaste)
                            (NP (-NONE- *))
                            (ADVP-TMP (ADVB ancora))
                            (ADJP-PRD (ADJ~QU operative))
                            (PP-LOC (PREP in)
                                (NP (NOU~PR Albania)))))))
                 (, ,)))
           (VP (VAU~RE ha)
               (VP (VMA~PA deciso)
                   (ADVP-TMP (ADVB ieri))
                   (PP
                       (PP (PREP di)
                           (S
                               (VP (VMA~IN bloccare)
                                   (NP
                                       (NP (ART~DE il) (NOU~CS pagamento))
                                       (PP (PREP degli)
                                           (NP (ART~DE degli) (NOU~CP interessi)))
                                        (PP (PREP ai)
                                            (NP (ART~DE ai)
                                                (NP (NOU~CP risparmiatori))
                                                (SBAR
                                                    (NP-2333 (PRO~RE che))
                                                    (S
                                                        (NP-SBJ (-NONE- *-2333))
                                                        (NP (PRO~PE le))
                                                        (VP (VAU~IM avevano)
                                                            (VP (VMA~PA affidato)
                                                                (NP (ART~DE i) (ADJ~PO propri) (NOU~CP capitali))))))))))
                                        (NP-SBJ-19.1033 (-NONE- *-133))))
                                  (CONJ e)
                                  (PP (PREP di)
                                      (S
                                          (VP (VMA~IN cominciare)
                                              (NP
                                                  (NP (ART~DE la) (NOU~CS restituzione))
                                                  (PP (PREP dei)
                                                      (NP (ART~DE dei) (NOU~CP depositi)))
                                                   (PP (PREP a)
                                                       (NP
                                                           (NP (PRO~RE-4133 chi))
                                                           (SBAR
                                                               (S
                                                                   (VP (VAU~RE ha)
                                                                       (VP (VMA~PA investito)
                                                                           (PP (PREP fino)
                                                                               (PP (PREP a) (NUMR 20)))))
                                                                      (NP-SBJ (-NONE- *-4333)))
                                                                   (NP-4333 (-NONE- *-4133)))))))
                                                    (NP-SBJ (-NONE- *-19.1033)))))))
                                     (. .)) )


************** FRASE NEWS-244 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE I) (PRO~OR primi))
        (PP (PREP a)
            (S
                (VP (VAU~IN venire)
                    (VP (VMA~PA rimborsati)))
                 (NP-SBJ (-NONE- *-133)))))
        (PRN
            (PUNCT -)
            (S
                (NP-SBJ (ART~DE l') (NOU~CS operazione))
                (VP (VMA~FU iniziera')
                    (ADVP-TMP (ADVB oggi))))
              (PUNCT -))
           (VP (VMA~FU saranno)
               (NP-PRD
                   (NP (PRO~DE coloro))
                   (SBAR
                       (NP-1333 (PRO~RE che))
                       (S
                           (NP-SBJ (-NONE- *-1333))
                           (VP (VAU~RE hanno)
                               (VP (VMA~PA investito)
                                   (PP (PREP fino)
                                       (PP (PREP a)
                                           (NP (NUMR cinquemila) (NOU~CP dollari))))))))))
                   (. .)) )


************** FRASE NEWS-245 **************

 ( (S
    (ADVP-TMP (ADVB Successivamente))
    (VP (VMA~FU verra')
        (NP-EXTPSBJ-333
            (NP (ART~DE il) (NOU~CS turno))
            (PP (PREP di)
                (NP
                    (NP (PRO~RE-633 chi))
                    (SBAR
                        (S
                            (VP (VMA~RE ha)
                                (NP
                                    (NP (ART~IN un) (NOU~CS capitale))
                                    (VP (VMA~PA investito)
                                        (NP (-NONE- *)))
                                     (PP (PREP di)
                                         (NP
                                             (NP
                                                 (NP (ART~IN un) (NOU~CS massimo))
                                                 (PP (PREP di) (NUMR 10)))
                                              (CONJ e)
                                              (PRN
                                                  (, ,)
                                                  (ADVP-TMP (ADVB infine))
                                                  (, ,))
                                               (PP (PREP tra)
                                                   (NP
                                                       (NP (ART~DE i) (-NONE- *-2933)
                                                           (NP (NUMR 10) (-NONE- *-2833)))
                                                        (CONJ e)
                                                        (NP (ART~DE i)
                                                            (NP (NUMR 20) (NUMR-2833 mila)) (NOU~CP2 dollari))))))))
                                       (NP-SBJ (-NONE- *-7333)))
                                    (NP-7333 (-NONE- *-633)))))))
                     (NP-SBJ (-NONE- *-333))
                     (. .)) )


************** FRASE NEWS-246 **************

 ( (S
    (NP-SBJ-133 (ART~DE L') (NOU~CS annuncio)
        (PRN
            (, ,)
            (VP (VMA~PA dato)
                (NP (-NONE- *))
                (PP-LOC (PREP a)
                    (NP (NOU~PR Tirana)))
                 (PP-LGS (PREP dal)
                     (NP
                         (NP (ART~DE dal) (NOU~CS presidente))
                         (PP (PREP del)
                             (NP (ART~DE del) (NOU~CS gruppo)))
                          (, ,)
                          (NP (NOU~PR Wehbi) (NOU~PR Alimucaj)))))
                 (, ,)))
           (VP (VAU~RE e')
               (VP (VMA~PA sembrato)
                   (S-PRD
                       (VP (VMA~IN segnare)
                           (NP
                               (NP (ART~DE la) (NOU~CS fine))
                               (PP (PREP delle)
                                   (NP
                                       (NP (ART~DE delle) (NOU~CA attivita'))
                                       (PP (PREP della)
                                           (NP (ART~DE della) (NOU~PR Vefa)))
                                        (PP (PREP nel)
                                            (NP (ART~DE nel) (NOU~CS ramo)
                                                (NP (NOU~CP investimenti))))))))
                              (NP-SBJ (-NONE- *-133)))))
                     (. .)) )


************** FRASE NEWS-247 **************

 ( (S
    (NP-SBJ-133 (ART~DE La) (NOU~CA societa'))
    (VP (VMA~RE opera)
        (PP (PREP in)
            (NP (ADJ~IN numerosi)
                (NP (ADJ~DI altri) (NOU~CP settori))
                (ADJP
                    (ADJP (ADJ~QU commerciali))
                    (CONJ e)
                    (ADJP (ADJ~QU industriali)))))
           (, ,)
           (S
               (VP (VMA~GE annoverando)
                   (PP (PREP tra)
                       (NP (ART~DE le) (ADJ~PO sue) (NOU~CA proprieta')))
                    (NP
                        (NP
                            (NP (ART~IN una) (NOU~CS catena))
                            (PP (PREP di)
                                (NP (NUMR 20) (NOU~CP supermercati))))
                          (, ,)
                          (NP
                              (NP (NOU~CP centri) (ADJ~QU turistici))
                              (CONJ e)
                              (NP (ART~IN una) (NOU~CS miniera)))))
                     (NP-SBJ (-NONE- *-133))))
               (. .)) )


************** FRASE NEWS-248 **************

 ( (S
    (PP (PREP Per)
        (NP (PRO~DE questo)))
     (NP-SBJ
         (NP (ART~DE il) (NOU~CS fondo))
         (NP (NOU~CP investimenti))
         (PP (PREP della)
             (NP (ART~DE della) (NOU~CA societa'))))
       (VP (VAU~IM era)
           (VP (VMA~PA rimasto)
               (ADJP-PRD (ADJ~QU solvibile))
               (, ,)
               (CONJ mentre)
               (S
                   (VP (VAU~IM erano)
                       (VP (VMA~PA fallite)
                           (NP-EXTPSBJ-1533 (ART~DE le)
                               (NP (ADJ~DI altre) (NOU~CP finanziarie))
                               (, ,)
                               (ADJP (ADJ~QU fondate)
                                   (PP (PREP su)
                                       (NP (NOU~CP schemi) (ADJ~QU piramidali) (ADJ~QU truffaldini)))))))
                        (NP-SBJ (-NONE- *-1533)))))
               (. .)) )


************** FRASE NEWS-249 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE La) (NOU~CS decisione))
        (VP (VAU~RE e')
            (VP (VMA~PA giunta)
                (ADJP-PRD (ADJ~QU inaspettata)))))
       (CONJ e)
       (S
           (VP (VAU~RE ha)
               (VP (VMA~PA rappresentato)
                   (NP-PRD
                       (NP (ART~DE l') (ADJ~OR ennesimo) (NOU~CS segnale))
                       (PP (PREP di)
                           (NP (NOU~CA crisi))
                           (PP (PREP della)
                               (NP (ART~DE della)
                                   (NP (ADJ~QU potente) (NOU~CA holding))
                                   (SBAR
                                       (NP-1333 (ART~DE il)
                                           (NP (PRO~RE cui)) (NOU~CS fallimento) (-NONE- *-))
                                        (S
                                            (NP-SBJ-1733 (-NONE- *-1333))
                                            (VP (VMA~CO rischierebbe)
                                                (PP (PREP di)
                                                    (S
                                                        (VP (VMA~IN far)
                                                            (S
                                                                (VP (VMA~IN riesplodere)
                                                                    (NP-2433 (ART~DE le) (NOU~CP tensioni) (ADJ~QU latenti))
                                                                    (PP-LOC (PREP in)
                                                                        (NP (NOU~PR Albania))))
                                                                  (NP-SBJ (-NONE- *-2433))))
                                                            (NP-SBJ (-NONE- *-1733)))))))))))))
                           (NP-SBJ (-NONE- *-133)))
                        (. .)) )


************** FRASE NEWS-250 **************

 ( (S
    (PP-TMP (PREP Nelle)
        (NP (ART~DE Nelle) (ADJ~DI scorse) (NOU~CP settimane)))
     (NP-SBJ-433 (ART~DE la) (NOU~PR Vefa))
     (VP (VAU~IM aveva)
         (VP (VMA~PA imboccato)
             (NP (ART~DE la) (NOU~CS strada) (ADJ~QU opposta))
             (PP (PREP per)
                 (S
                     (VP (VMA~IN provare)
                         (PP (PREP a)
                             (S
                                 (VP (VMA~IN superare)
                                     (NP
                                         (NP (ART~DE la) (NOU~CA crisi))
                                         (PP (PREP di)
                                             (NP (NOU~CA liquidita')))))
                                    (NP-SBJ (-NONE- *-12.1033)))))
                           (NP-SBJ-12.1033 (-NONE- *-433))))
                     (, ,)
                     (S
                         (S
                             (VP (VMA~GE bloccando)
                                 (ADVP (ADVB cioe'))
                                 (NP
                                     (NP (ART~DE la) (NOU~CS restituzione))
                                     (PP (PREP di)
                                         (NP (NOU~CP capitali)))))
                                (NP-SBJ-20.1033 (-NONE- *-433)))
                             (CONJ e)
                             (S
                                 (VP (VMA~GE garantendo)
                                     (PP (PREP ai)
                                         (NP (ART~DE ai) (NOU~CP risparmiatori)))
                                      (NP (ADVB soltanto) (ART~DE gli)
                                          (NP (NOU~CP interessi))
                                          (, ,)
                                          (VP (VMA~PA ridotti)
                                              (NP (-NONE- *))
                                              (ADVP (ADVB pero'))
                                              (ADVP-TMP (ADVB NEL_FRATTEMPO))
                                              (PP (PREP dal)
                                                  (NP (ART~DE dal) (NUMR 60))
                                                  (PP (PREP al)
                                                      (NP (ART~DE al) (NUMR 36) (SPECIAL %)
                                                          (NP (ART~DE l') (NOU~CS anno))))))))
                                        (NP-SBJ (-NONE- *-20.1033))))))
                            (. .)) )


************** FRASE NEWS-251 **************

 ( (S
    (VP
        (PP-TMP (PREP Nella)
            (NP
                (NP (ART~DE Nella) (NOU~CS serata))
                (PP (PREP di)
                    (NP (NOU~CA martedi')))))
           (VP (VAU~IM erano)
               (VP (VMA~PA giunti)
                   (PP-LOC (PREP a)
                       (NP (NOU~PR Tirana)))
                    (NP-EXTPSBJ-933 (ART~DE i)
                        (NP (NOU~CP legali) (ADJ~QU italiani))
                        (SBAR
                            (NP-1333 (PRO~RE che) (-NONE- *-))
                            (S
                                (NP-SBJ-1233 (-NONE- *-1333))
                                (VP (VAU~RE hanno)
                                    (VP (VMA~PA avuto)
                                        (NP
                                            (NP (ART~DE l') (NOU~CS incarico))
                                            (PP (PREP di)
                                                (S
                                                    (VP (VMA~IN assistere)
                                                        (NP (NOU~PR Vefa))
                                                        (PP (PREP nel)
                                                            (NP
                                                                (NP (ART~DE nel) (NOU~CS risanamento))
                                                                (PP (PREP del)
                                                                    (NP (ART~DE del) (NOU~CS gruppo))))))
                                                        (NP-SBJ (-NONE- *-1233))))))))))))
                          (, ,)
                          (CONJ ma)
                          (S
                              (ADVP (ADVB non))
                              (VP (VMA~RE e')
                                  (ADJP-PRD (ADJ~QU chiaro))
                                  (CONJ se)
                                  (S
                                      (NP-SBJ (ART~DE la)
                                          (NP (NOU~CS decisione))
                                          (VP (VMA~PA adottata)
                                              (NP (-NONE- *))
                                              (ADVP-TMP (ADVB ieri))
                                              (PP-LGS (PREP dal)
                                                  (NP (ART~DE dal) (NOU~CS presidente) (NOU~PR Alimucay)))))
                                         (VP (VAU~CG sia)
                                             (VP (VMA~PA stato)
                                                 (NP-PRD
                                                     (NP (ART~DE il) (ADJ~OR primo) (NOU~CS risultato))
                                                     (PP (PREP di)
                                                         (NP (ADJ~DE questa) (NOU~CS consulenza))))))))))
                                 (NP-SBJ (-NONE- *-933))
                                 (. .)) )


************** FRASE NEWS-252 **************

 ( (S
    (ADVP-TMP (ADVB NEL_FRATTEMPO))
    (PP-LOC (PREP nella)
        (NP (ART~DE nella) (NOU~CS capitale)))
     (NP-SBJ (ART~DE la) (NOU~CS Banca) (ADJ~QU mondiale))
     (VP (VAU~RE ha)
         (VP (VMA~PA smentito)
             (NP
                 (NP (ART~DE la) (NOU~CS notizia))
                 (PP (PREP dell')
                     (NP
                         (NP (ART~DE dell') (NOU~CS esistenza))
                         (PP (PREP di)
                             (NP
                                 (NP (ART~IN un) (NOU~CS piano))
                                 (PP (PREP di)
                                     (NP (NOU~CS salvataggio)))
                                  (VP (VMA~PA proposto)
                                      (NP (-NONE- *))
                                      (PP (PREP al)
                                          (NP
                                              (NP (ART~DE al) (NOU~CS Governo))
                                              (PP (PREP di)
                                                  (NP (NOU~PR Tirana)))))
                                         (PP (PREP per)
                                             (S
                                                 (VP (VMA~IN fronteggiare)
                                                     (NP
                                                         (NP (ART~DE il) (NOU~CA crack))
                                                         (PP (PREP delle)
                                                             (NP (ART~DE delle) (NOU~CP finanziarie)))))
                                                    (NP-SBJ (-NONE- *))))))))))))
                      (. .)) )


************** FRASE NEWS-253 **************

 ( (S
    (VP (VMA~RE Riesplode)
        (NP-EXTPSBJ-233 (ART~DE la) (NOU~CS questione) (ADJ~QU albanese)))
     (NP-SBJ (-NONE- *-233))
     (. .)) )


************** FRASE NEWS-254 **************

 ( (S
    (PP-TMP (PREP Da)
        (NP-233
            (NP (PRO~RE quando))
            (SBAR
                (S
                    (VP (VAU~RE e')
                        (VP (VMA~PA finita)
                            (NP-TMP (-NONE- *-233))
                            (NP-EXTPSBJ-533 (ART~DE la) (NOU~CS guerra) (ADJ~QU bosniaca))))
                      (NP-SBJ (-NONE- *-533))))))
          (PP-LOC (PREP nei)
              (NP
                  (NP (ART~DE nei) (NOU~CP corridoi))
                  (PP (PREP della)
                      (NP (ART~DE della) (NOU~CS diplomazia) (ADJ~QU balcanica)))))
             (NP (PRO~RI si))
             (VP (VMA~RE sente)
                 (NP
                     (ADVP (ADVB soltanto))
                     (NP (ART~IN una) (NOU~CS frase))
                     (, ,)
                     (VP (VMA~PA ripetuta)
                         (NP (-NONE- *))
                         (PP (PREP senza)
                             (NP
                                 (NP (NOU~CS tregua))
                                 (, ,)
                                 (ADVP
                                     (ADVP (ADVB incessantemente))
                                     (, ,)
                                     (PP (PREP come)
                                         (NP (ART~IN un) (ADJ~QU inquietante) (NOU~CA mantra) (ADJ~QU politico)))))))))
                    (. .)) )


************** FRASE NEWS-255 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE Il) (NOU~CS conflitto) (ADJ~QU jugoslavo))
        (VP (VAU~RE e')
            (VP (VMA~PA iniziato)
                (PP-LOC (PREP in)
                    (NP (NOU~PR Kosovo))))))
        (CONJ ed)
        (S
            (VP (VMA~RE e')
                (ADVP-PRD-CLEFT (ADVB la'))
                (CONJ che)
                (S
                    (VP (VMO~RE deve)
                        (S
                            (VP (VMA~IN finire))
                            (NP-SBJ (-NONE- *-12.1033))))
                      (NP-SBJ-12.1033 (-NONE- *-133)))))
             (. .)) )


************** FRASE NEWS-256 **************

 ( (S
    (S
        (CONJ Mentre)
        (S
            (NP-SBJ-233 (NOU~PR Tirana))
            (NP (PRO~RI si))
            (VP (VMA~RE risveglia)
                (S
                    (VP (VMA~GE recriminando)
                        (PP (PREP con)
                            (NP (NOU~CS rabbia))))
                      (NP-SBJ (-NONE- *-233)))
                   (PP (PREP dal)
                       (NP
                           (NP (ART~DE dal) (NOU~CS sogno))
                           (VP (VMA~PA drogato)
                               (NP (-NONE- *)))
                            (PP (PREP delle)
                                (NP (ART~DE delle)
                                    (' ') (NOU~CP piramidi) (ADJ~QU finanziarie)
                                    (' ')))))))
                  (, ,)
                  (PP-LOC (PREP in)
                      (NP
                          (NP (PRO~ID uno))
                          (PP (PREP dei)
                              (NP
                                  (NP (NUMR cento))
                                  (NP (ART~DE dei) (NOU~CA caffe'))
                                  (PP (PREP del)
                                      (NP
                                          (NP (ART~DE del) (NOU~CA boulevard) (ADJ~QU principale))
                                          (PP (PREP della)
                                              (NP (ART~DE della) (NOU~CS capitale) (ADJ~QU albanese)))))))))
                         (NP-SBJ-2833 (NOU~PR Mehemet)
                             (PRN
                                 (, ,)
                                 (NP
                                     (NP (NOU~CS nome))
                                     (PP (PREP di)
                                         (NP (NOU~CS battaglia)))
                                      (PP (PREP di)
                                          (NP
                                              (NP (ART~IN un) (NOU~CS rappresentante))
                                              (PP (PREP dell')
                                                  (NP
                                                      (NP (ART~DE dell') (NOU~CS Esercito))
                                                      (PP (PREP di)
                                                          (NP (NOU~CS liberazione))
                                                          (PP (PREP del)
                                                              (NP (ART~DE del) (NOU~PR Kosovo))))
                                                        (PRN
                                                            (-LRB- -LRB-)
                                                            (NP (NOU~PR Uck))
                                                            (-RRB- -RRB-)))))))
                                          (, ,)))
                                    (VP (VMA~RE ripete)
                                        (NP (ART~DE le) (ADJ~DI stesse) (NOU~CP parole) (ADJ~QU minacciose))))
                                  (CONJ e)
                                  (S
                                      (NP (PRO~PE le))
                                      (VP (VMA~RE accompagna)
                                          (S
                                              (VP (VMA~GE mostrando)
                                                  (NP
                                                      (NP (ART~DE il) (NOU~CS giornale) (ADJ~QU clandestino)
                                                          (NP (NOU~PR Clirimi)
                                                              (PRN
                                                                  (-LRB- -LRB-)
                                                                  (NP (NOU~PR Liberazione))
                                                                  (-RRB- -RRB-))))
                                                         (CONJ e)
                                                         (NP
                                                             (NP (ART~DE i) (NOU~CP bollettini))
                                                             (PP (PREP di)
                                                                 (NP (NOU~CS rivendicazione))
                                                                 (PP (PREP di)
                                                                     (NP (ADJ~IN alcune) (ADJ~QU recenti) (ADJ~QU sanguinose) (NOU~CP azioni) (ADJ~QU terroristiche)))))))
                                                      (NP-SBJ (-NONE- *-53.1033))))
                                                (NP-SBJ-53.1033 (-NONE- *-2833)))
                                             (. .)) )


************** FRASE NEWS-257 **************

 ( (S
    (PP (PREP Tra)
        (NP (PRO~DE queste)))
     (VP (-NONE- *)
         (NP-LOC (-NONE- *))
         (NP-EXTPSBJ-333 (ART~DE l')
             (NP (NOU~CS attentato) (ADJ~QU dinamitardo))
             (SBAR
                 (S
                     (PP (PREP in)
                         (NP (PRO~RE cui)))
                      (VP (VAU~RE e')
                          (VP (VMA~PA rimasto)
                              (S-PRD
                                  (ADVP (ADVB gravemente))
                                  (VP (VMA~PA ferito))
                                  (NP-SBJ (-NONE- *-1233)))
                               (NP-EXTPSBJ-1233 (NOU~PR Radivoje) (NOU~PR Papovic)
                                   (, ,)
                                   (NP (ART~DE il)
                                       (NP
                                           (NP (NOU~CS rettore) (ADJ~QU serbo))
                                           (PP (PREP dell')
                                               (NP
                                                   (NP (ART~DE dell') (NOU~CA Universita'))
                                                   (PP-LOC (PREP di)
                                                       (NP (NOU~PR Pristina))))))
                                           (, ,)
                                           (NP
                                               (NP (NOU~CS sostenitore))
                                               (PP (PREP della)
                                                   (NP
                                                       (NP (ART~DE della) (NOU~CS linea) (ADJ~QU dura))
                                                       (PP (PREP contro)
                                                           (NP (ART~DE gli) (NOU~CP albanesi)
                                                               (, ,)
                                                               (NP (ADVB oltre) (ART~DE il) (NUMR 90) (SPECIAL %)
                                                                   (PP (PREP della)
                                                                       (NP (ART~DE della) (NOU~CS popolazione) (ADJ~QU kosovara)
                                                                           (PRN
                                                                               (-LRB- -LRB-)
                                                                               (NP (NUMR 1,8) (NOU~CP milioni))
                                                                               (-RRB- -RRB-))))))))))))))
                                        (NP-SBJ (-NONE- *-1233))))))
                            (NP-SBJ (-NONE- *-333))
                            (. .)) )


************** FRASE NEWS-258 **************

 ( (S
    (NP-PRD (PRO~IN Chi))
    (VP (VMA~RE sono)
        (NP-EXTPSBJ-333
            (NP (ART~DE gli) (NOU~CP uomini))
            (PP (PREP di)
                (NP (ADJ~DE questa) (ADJ~QU misteriosa)
                    (' ') (NOU~CS armata)
                    (' ')))))
        (NP-SBJ (-NONE- *-333))
        (. ?)) )


************** FRASE NEWS-259 **************

 ( (S
    (S
        (ADVP (ADVB Non))
        (VP (VMA~RE ho)
            (NP (ADJ~IN alcuna) (NOU~CS informazione))
            (PP (PREP su)
                (PP (PREP di)
                    (NP (PRO~PE loro)))))
           (NP-SBJ (-NONE- *)))
        (, ,)
        (VP (VMA~IM dichiarava)
            (PP-TMP (PREP in)
                (NP (ADJ~DE questi) (NOU~CP giorni)))
             (PP (PREP a)
                 (NP (NOU~PR Le) (NOU~PR Monde)))
              (NP-EXTPSBJ-1633 (ART~DE lo) (NOU~CS scrittore)
                  (NP (NOU~PR Ibrahim) (NOU~PR Rugova))
                  (, ,)
                  (NP
                      (NP
                          (NP (NOU~CS presidente))
                          (PP (PREP dell')
                              (NP
                                  (NP (ART~DE dell') (ADJ~QU autoproclamata) (NOU~CS Repubblica))
                                  (PP (PREP del)
                                      (NP (ART~DE del) (NOU~PR Kosovo))))))
                          (, ,)
                          (CONJ e)
                          (NP
                              (NP (NOU~CA leader))
                              (PP (PREP del)
                                  (NP (ART~DE del) (ADJ~QU maggiore) (NOU~CS partito)
                                      (, ,)
                                      (NP (ART~DE la)
                                          (NP (NOU~CS Lega) (ADJ~QU democratica))
                                          (PRN
                                              (-LRB- -LRB-)
                                              (NP (NOU~PR Ldk))
                                              (-RRB- -RRB-))
                                           (, ,)
                                           (SBAR
                                               (NP-4333 (PRO~RE che))
                                               (S
                                                   (NP-SBJ (-NONE- *-4333))
                                                   (VP (VAU~RE ha)
                                                       (VP (VMA~PA scelto)
                                                           (NP
                                                               (NP (ART~DE la) (NOU~CS via))
                                                               (PP (PREP della)
                                                                   (NP
                                                                       (NP (ART~DE della) (NOU~CS resistenza) (ADJ~QU pacifica))
                                                                       (PP (PREP al)
                                                                           (NP (ART~DE al) (NOU~CS potere) (ADJ~QU serbo)))))))))))))))))
                              (NP-SBJ (-NONE- *-1633))
                              (. .)) )


************** FRASE NEWS-260 **************

 ( (S
    (S
        (S
            (NP-SBJ-133
                (NP (ART~DE La) (NOU~CS rabbia))
                (PP (PREP dei)
                    (NP (ART~DE dei) (NOU~CP kosovari)))) (ADVB non)
              (VP-SBJ (VMO~RE puo')
                  (S
                      (VP (VAU~IN essere)
                          (VP (VMA~PA incanalata)
                              (PP-LOC (PREP in)
                                  (NP (ART~IN un) (NOU~CS ambito) (ADJ~QU istituzionale)))))
                         (NP-SBJ (-NONE- *-133)))))
                (, ,)
                (S
                    (ADVP (ADVB allora))
                    (VP (VMA~RE cercano)
                        (PP (PREP di)
                            (S
                                (VP (VMA~IN esprimersi)
                                    (NP (PRO~RI esprimersi))
                                    (PP (PREP in)
                                        (NP (NOU~CS modo) (ADJ~QU diverso))))
                                  (NP-SBJ (-NONE- *-15.1033)))))
                         (NP-SBJ-15.1033 (-NONE- *))))
                   (, ,)
                   (VP (VMA~RE e')
                       (NP-PRD
                           (NP (ART~DE l') (NOU~CS opinione) (ADJ~QU prudente))
                           (PP (PREP del)
                               (NP
                                   (NP (ART~DE del) (NOU~CS rivale))
                                   (PP (PREP di)
                                       (NP (NOU~PR Rugova)))
                                    (PRN
                                        (, ,)
                                        (NP (NOU~PR Adem) (NOU~PR Demaci))
                                        (, ,))
                                     (NP
                                         (NP (NOU~CS capo))
                                         (PP (PREP del)
                                             (NP (ART~DE del) (NOU~CS partito) (ADJ~QU parlamentare)
                                                 (PRN
                                                     (-LRB- -LRB-)
                                                     (NP (NOU~PR Ppk))
                                                     (-RRB- -RRB-)))))
                                         (, ,)
                                         (ADJP (ADJ~QU contrario)
                                             (PP
                                                 (PP (PREP a)
                                                     (NP
                                                         (NP (ART~IN una) (NOU~CS guerra) (ADJ~QU aperta))
                                                         (PP (PREP contro)
                                                             (NP (NOU~PR Belgrado)))))
                                                    (, ,)
                                                    (CONJ ma)
                                                    (PP (ADVB anche) (PREP a)
                                                        (NP (ART~IN una)
                                                            (NP (NOU~CS politica) (ADJ~QU passiva))
                                                            (SBAR
                                                                (NP-5333 (PRO~RE che))
                                                                (S
                                                                    (NP-SBJ (-NONE- *-5333))
                                                                    (VP (VMA~RE porta)
                                                                        (ADVP (ADVB diritto))
                                                                        (PP-LOC (PREP alla)
                                                                            (NP (ART~DE alla) (NOU~CS capitolazione))))))))))))))
                                        (. .)) )


************** FRASE NEWS-261 **************

 ( (S
    (PP (PREP Sui)
        (NP (ART~DE Sui) (NOU~CP combattenti) (ADJ~QU kosovari)))
     (NP-SBJ-433
         (NP (ART~DE gli) (NOU~CP uomini))
         (PP (PREP di)
             (NP (NOU~PR Slobodan) (NOU~PR Milosevic)
                 (PRN
                     (PUNCT -)
                     (ADVP-TMP (ADVB sempre))
                     (VP (VMA~PA sospettato)
                         (NP (-NONE- *))
                         (PP (PREP di)
                             (S
                                 (VP (VMO~IN voler)
                                     (S
                                         (VP (VMA~IN alimentare)
                                             (NP (ART~DE la) (NOU~CS tensione))
                                             (PP-LOC (PREP a)
                                                 (NP (NOU~PR Pristina)))
                                              (PP (PREP per)
                                                  (S
                                                      (VP (VMA~IN distogliere)
                                                          (NP (ART~DE l') (NOU~CS attenzione))
                                                          (PP (PREP dai)
                                                              (NP
                                                                  (NP (ART~DE dai) (NOU~CP problemi) (ADJ~QU interni))
                                                                  (PP (PREP di)
                                                                      (NP (NOU~PR Belgrado))))))
                                                          (NP-SBJ (-NONE- *-14.1033)))))
                                                 (NP-SBJ-14.1033 (-NONE- *-13.1033))))
                                           (NP-SBJ-13.1033 (-NONE- *-11.1033)))))
                                  (PUNCT -)))))
                      (VP (VMA~RE sembrano)
                          (S
                              (VP (VMA~IN avere)
                                  (NP
                                      (NP (NOU~CP informazioni))
                                      (ADJP (ADVB piu') (ADJ~QU dettagliate))))))
                          (NP-SBJ (-NONE- *-433))
                          (. .)) )


************** FRASE NEWS-262 **************

 ( (S
    (VP
        (PRN
            (S
                (NP-SBJ (ART~DE I) (NOU~CP simpatizzanti))
                (VP (VMA~RE sono) (NUMR 40)
                    (VP-PRD (-NONE- *-933))))
              (, ,) (VMA~RE dicono)
              (, ,)
              (S
                  (VP-933 (VMA~PA addestrati)
                      (PP-LOC
                          (PP (PREP in)
                              (NP (NOU~CS territorio) (ADJ~QU albanese)))
                           (, ,)
                           (PP
                               (PP (PREP in)
                                   (NP (NOU~PR Iran)))
                                (CONJ e)
                                (PP (PREP in)
                                    (NP (NOU~PR Pakistan))))))
                        (NP-SBJ (-NONE- *-233)))))
               (NP-SBJ (-NONE- *))
               (. .)) )


************** FRASE NEWS-263 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE I) (NOU~CP fondi))
        (PP (PREP della)
            (NP (ART~DE della) (NOU~CS guerriglia))))
      (VP (VMA~RE arrivano)
          (PP
              (PP (PREP dai)
                  (NP
                      (NP (ART~DE dai) (NOU~CP gruppi) (ADJ~QU islamici) (ADJ~QU radicali))
                      (PP (PREP del)
                          (NP (ART~DE del) (NOU~PR MEDIO_ORIENTE)))))
                 (CONJ e)
                 (PP (PREP dalla)
                     (NP
                         (NP (ART~DE dalla) (NOU~CS diaspora) (ADJ~QU albanese))
                         (PP-LOC (PREP in)
                             (NP (NOU~PR Europa)))))))
              (. .)) )


************** FRASE NEWS-264 **************

 ( (S
    (NP-SBJ (ART~IN Una) (NOU~CS cosa))
    (VP (VMA~RE e')
        (ADJP-PRD (ADJ~QU certa)))
     (. .)) )


************** FRASE NEWS-265 **************

 ( (S
    (S
        (NP-SBJ
            (NP (ART~DE I) (NOU~CP comunicati))
            (PP (PREP via)
                (NP (NOU~CA fax))))
          (VP (VAU~RE sono)
              (VP (VMA~PA diffusi)
                  (PP-LGS (PREP da)
                      (NP
                          (NP (ART~IN un) (NOU~CS terminale))
                          (PP-LOC (PREP nella)
                              (NP (ART~DE nella) (NOU~CS Confederazione) (ADJ~QU svizzera))))))))
            (CONJ e)
            (S
                (NP-SBJ (PRO~DE questa))
                (ADVP (ADVB forse))
                (VP (VMA~RE e')
                    (ADVP (ADVB anche))
                    (NP-PRD (ART~DE la)
                        (NP (ADJ~OR prima) (NOU~CS volta))
                        (CONJ che)
                        (S
                            (VP (VMA~RE accettano)
                                (NP
                                    (NP (ART~IN un') (NOU~CS intervista))
                                    (PP (PREP con)
                                        (NP (ART~IN un) (NOU~CS giornale) (ADJ~QU occidentale)))))
                               (NP-SBJ (-NONE- *))))))
                   (. .)) )


************** FRASE NEWS-266 **************

 ( (S
    (NP-PRD (PRO~IN Qual))
    (VP (VMA~RE e')
        (NP-EXTPSBJ-333
            (NP (ART~DE l') (NOU~CS obiettivo))
            (PP (PREP dell')
                (NP (ART~DE dell') (NOU~PR Uck)))))
       (NP-SBJ (-NONE- *-333))
       (. ?)) )


************** FRASE NEWS-267 **************

 ( (NP
    (NP (ART~DE La) (NOU~CS liberazione))
    (PP (PREP del)
        (NP (ART~DE del) (NOU~PR Kosovo)))
     (PP (PREP con)
         (NP (ART~DE la) (NOU~CS lotta) (ADJ~QU armata)))
      (, ,)
      (. .)) )


************** FRASE NEWS-268 **************

 ( (S
    (S
        (NP-SBJ (PRO~PE Noi))
        (ADVP (ADVB non))
        (VP (VMA~RE siamo)
            (PP-PRD (PREP contro)
                (NP (NOU~PR Rugova)))))
       (CONJ ma)
       (S
           (CONJ se)
           (S
               (VP
                   (VP (VMA~RE continua)
                       (PP (PREP a)
                           (S
                               (VP (VMA~IN ignorarci)
                                   (NP (PRO~PE ignorarci)))
                                (NP-SBJ (-NONE- *-8.1033)))))
                       (CONJ e)
                       (S
                           (ADVP (ADVB non))
                           (NP (PRO~PE ci))
                           (VP (VMA~RE appoggia))
                           (NP-SBJ (-NONE- *-8.1033))))
                     (NP-SBJ-8.1033 (-NONE- *-1733)))
                  (VP (VMA~FU diventera')
                      (NP-EXTPSBJ-1733
                          (ADVP (ADVB anche)) (PRO~PE lui))
                       (NP-PRD (ART~IN un) (NOU~CS bersaglio)))
                    (NP-SBJ (-NONE- *-1733)))
                 (. .)) )


************** FRASE NEWS-269 **************

 ( (S
    (VP (VMO~RE Vogliamo)
        (S
            (VP (VMA~IN sostituire)
                (NP (ART~DE il) (ADJ~PO suo) (NOU~CS movimento) (ADJ~QU pacifico))
                (PP (PREP con)
                    (NP
                        (NP (ART~IN un') (NOU~CS ondata))
                        (PP (PREP di)
                            (NP (NOU~CS sollevazione) (ADJ~QU popolare) (ADJ~QU antiserba))))))
                (NP-SBJ (-NONE- *-1.1033))))
          (NP-SBJ-1.1033 (-NONE- *))
          (. .)) )


************** FRASE NEWS-270 **************

 ( (S
    (NP-SBJ (NOU~PR Dayton))
    (ADVP (ADVB non))
    (NP (PRO~PE ci))
    (VP (VAU~RE ha)
        (VP (VMA~PA reso)
            (NP (NOU~CS giustizia))))
      (. .)) )


************** FRASE NEWS-271 **************

 ( (S
    (ADVP (ADVB Perche'))
    (VP (VAU~RE avete)
        (VP (VMA~PA ucciso)
            (NP (ADJ~DI altri) (NOU~CP albanesi))))
      (NP-SBJ (-NONE- *))
      (. ?)) )


************** FRASE NEWS-272 **************

 ( (S
    (VP (VMA~IM Erano)
        (NP-PRD
            (NP (ART~IN dei) (NOU~CA maliq))
            (, ,)
            (CONJ cioe')
            (NP (ART~IN dei) (NOU~CP traditori))))
      (NP-SBJ (-NONE- *))
      (. .)) )


************** FRASE NEWS-273 **************

 ( (S
    (VP (VAU~FU Verranno)
        (VP (VMA~PA uccisi)
            (NP-EXTPSBJ-433 (PRDT tutti) (ART~DE i) (NOU~CP collaborazionisti) (ADJ~QU albanesi)
                (, ,)
                (NP
                    (NP
                        (NP (PRO~DE quelli))
                        (SBAR
                            (NP-9333 (PRO~RE che))
                            (S
                                (NP-SBJ (-NONE- *-9333))
                                (VP (VMA~RE lavorano)
                                    (PP-LOC (PREP nei)
                                        (NP (ART~DE nei) (NOU~CP servizi) (ADJ~QU civili)))
                                     (PP (PREP con)
                                         (NP (ART~DE i) (NOU~CP serbi)))))))
                          (CONJ ma)
                          (NP
                              (NP (ADVB anche) (PRO~DE coloro))
                              (SBAR
                                  (NP-2333 (PRO~RE che))
                                  (S
                                      (NP-SBJ (-NONE- *-2333))
                                      (VP (VMA~RE intrattengono)
                                          (ADVP (ADVB semplicemente))
                                          (NP (NOU~CP rapporti))
                                          (PP (PREP con)
                                              (NP
                                                  (NP (ART~DE l') (NOU~CA autorita'))
                                                  (PP (PREP di)
                                                      (NP (NOU~PR Belgrado)))))))))))))
                     (NP-SBJ (-NONE- *-433))
                     (. .)) )


************** FRASE NEWS-274 **************

 ( (S
    (S
        (NP-SBJ (ART~DE Il) (ADJ~PO vostro) (NOU~CS gruppo))
        (VP (VAU~RE ha)
            (VP (VMA~PA rivendicato)
                (NP
                    (NP (ART~IN una) (NOU~CS decina))
                    (PP (PREP di)
                        (NP (NOU~CP attentati) (ADJ~QU mortali)))))))
         (CONJ ma)
         (S
             (NP-SBJ (ART~DE la) (NOU~CS struttura))
             (VP (VMA~RE e')
                 (ADVP (ADVB DEL_TUTTO))
                 (ADJP-PRD (ADJ~QU sconosciuta))))
           (. .)) )


************** FRASE NEWS-275 **************

 ( (S
    (ADVP (ADVB Come))
    (VP (VMA~RE siete)
        (ADJP-PRD (ADJ~QU organizzati)))
     (NP-SBJ (-NONE- *))
     (. ?)) )


************** FRASE NEWS-276 **************

 ( (S
    (NP-LOC (PRO~LO C'))
    (VP (VMA~RE e')
        (NP-EXTPSBJ-333 (-NONE- *-)
            (NP-333 (ART~IN una)
                (NP (NOU~CS struttura)) (-NONE- *-)
                (VP (VMA~PA costituita)
                    (NP (-NONE- *))
                    (PP-LGS (PREP da)
                        (NP
                            (NP (NOU~CP militanti))
                            (' ')
                            (VP (VMA~PA coperti)
                                (NP (-NONE- *))
                                (' ')
                                (PP-LGS (PREP da)
                                    (NP (NOU~CA attivita') (ADJ~QU legali))))))))
                  (CONJ e)
                  (NP (ART~IN un') (PRO~ID altra) (ADJ~QU illegale)
                      (, ,)
                      (NP
                          (NP
                              (NP (NOU~CP cellule))
                              (PP (PREP di)
                                  (NP (NOU~CP guerriglieri))))
                            (CONJ e)
                            (NP (NOU~CS appoggio) (ADJ~QU logistico))))))
                (NP-SBJ (-NONE- *-333))
                (. .)) )


************** FRASE NEWS-277 **************

 ( (S
    (NP-SBJ (ART~DE I) (NOU~CP combattenti))
    (VP (VMA~RE sono)
        (NP-PRD
            (NP (NOU~CP uomini))
            (VP (VMA~PA addestrati)
                (NP (-NONE- *))
                (PP-LGS (PREP dalle)
                    (NP (ART~DE dalle) (NOU~CP milizie) (ADJ~QU islamiche))))))
        (. ?)) )


************** FRASE NEWS-278 **************

 ( (S
    (VP (VMA~RE Sono)
        (NP-EXTPSBJ-233 (PRO~ID tutti))
        (NP-PRD (NOU~CP professionisti)))
     (NP-SBJ (-NONE- *-233))
     (. .)) )


************** FRASE NEWS-279 **************

 ( (S
    (NP-SBJ (PRO~PE Io))
    (PRN
        (, ,)
        (ADVP (ADVB PER_ESEMPIO))
        (, ,))
     (VP (VAU~RE ho)
         (VP (VMA~PA combattuto)
             (PP-LOC (PREP nell')
                 (NP (ART~DE nell')
                     (NP (NOU~CS esercito) (ADJ~QU federale))
                     (VP (VMA~PA impegnato)
                         (NP (-NONE- *))
                         (PP-LOC (PREP nella)
                             (NP (ART~DE nella) (NOU~PR Krajina)))
                          (PP (PREP contro)
                              (NP (ART~DE i) (NOU~CP croati))))))))
            (. .)) )


************** FRASE NEWS-280 **************

 ( (S
    (S
        (VP (VAU~RE Ho))
        (NP-SBJ-1.1033 (-NONE- *)))
     (VP (VMO~PA dovuto)
         (S
             (VP (VMA~IN farlo)
                 (NP (PRO~PE farlo)))
              (NP-SBJ (-NONE- *-1.1033)))
           (CONJ perche')
           (S
               (NP (PRO~PE mi))
               (VP (VAU~RE hanno)
                   (VP (VMA~PA arruolato)
                       (PP (PREP con)
                           (NP (ART~DE la) (NOU~CS forza)))))
                  (NP-SBJ (-NONE- *))))
            (. .)) )


************** FRASE NEWS-281 **************

 ( (S
    (S
        (ADVP-TMP (ADVB Poi))
        (VP (VAU~RE ho)
            (VP (VMA~PA disertato)
                (PP-TMP (PREP nel)
                    (NP (ART~DE nel) (DATE '93)))))
           (NP-SBJ-3.1033 (-NONE- *)))
        (, ,)
        (S
            (VP
                (VP (VAU~RE sono)
                    (VP (VAU~PA stato)
                        (VP (VMA~PA catturato))))
                  (CONJ e)
                  (S
                      (ADVP (ADVB quindi))
                      (VP (VMA~PA condannato)
                          (PP (PREP a)
                              (NP
                                  (NP (NUMR sei) (NOU~CP mesi))
                                  (PP (PREP di)
                                      (NP (NOU~CS carcere)))))
                             (PP-LGS (PREP da)
                                 (NP (NOU~PR Belgrado))))
                           (NP-SBJ (-NONE- *-9.1033))))
                     (NP-SBJ-9.1033 (-NONE- *-3.1033)))
                  (. .)) )


************** FRASE NEWS-282 **************

 ( (S
    (CONJ Ma)
    (VP (VMA~RE ripeto)
        (, ,)
        (S
            (NP-SBJ (ART~DE l') (NOU~CS Esercito))
            (VP (VAU~RE e')
                (VP (VMA~PA costituito)
                    (PP-LGS (PREP da)
                        (NP
                            (NP (NOU~CS gente))
                            (SBAR
                                (NP-1333 (PRO~RE che))
                                (S
                                    (NP-SBJ (-NONE- *-1333))
                                    (VP (VMA~RE sa)
                                        (NP (ART~DE il) (NOU~CS fatto) (ADJ~PO suo)))))))))))
             (NP-SBJ (-NONE- *))
             (. .)) )


************** FRASE NEWS-283 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE L') (NOU~CS attentato))
        (PP (PREP al)
            (NP
                (NP (ART~DE al) (NOU~CS rettore))
                (PP (PREP dell')
                    (NP
                        (NP (ART~DE dell') (NOU~CA Universita'))
                        (PP (PREP di)
                            (NP (NOU~PR Pristina))))))))
          (VP (VAU~RE e')
              (VP (VAU~PA stato)
                  (VP (VMA~PA eseguito))))
            (PP (PREP con)
                (NP (ART~IN una)
                    (NP (NOU~CS bomba))
                    (VP (VMA~PA telecomandata)
                        (NP (-NONE- *)))))
               (. .)) )


************** FRASE NEWS-284 **************

 ( (S
    (NP-SBJ (ART~DE Le) (NOU~CP armi))
    (VP (VMA~RE vengono)
        (PP-LOC (PREP dall')
            (NP (ART~DE dall') (NOU~PR Albania))))
      (. ?)) )


************** FRASE NEWS-285 **************

 ( (PP
    (PP (ADVB Anche) (PREP dal)
        (NP (ART~DE dal) (NOU~CS Nord)))
     (. .)) )


************** FRASE NEWS-286 **************

 ( (S
    (S
        (VP (VMA~RE È)
            (ADJP-PRD (ADVB piu') (ADJ~QU facile))
            (S-EXTPSBJ-333
                (VP (VMA~IN-433 far)
                    (S
                        (VP (VMA~IN-533 passare)
                            (NP-633 (ART~IN un) (NOU~CS carico))
                            (PP-LOC (PREP dalla)
                                (NP (ART~DE dalla) (NOU~PR Germania))))
                          (NP-SBJ (-NONE- *-633)))) (-NONE- *-)
                    (NP-SBJ (-NONE- *))))
              (VP-SBJ (-NONE- *-433)))
           (CONJ che)
           (S
               (ADVP (ADVB non))
               (VP (-NONE- *-433)
                   (S
                       (VP (-NONE- *-533)
                           (PP-LOC (PREP dai)
                               (NP (ART~DE dai) (NOU~CP confini) (ADJ~QU albanesi))))
                         (NP-SBJ (-NONE- *-633))))
                   (NP-SBJ (-NONE- *)))
                (. .)) )


************** FRASE NEWS-287 **************

 ( (S
    (NP-SBJ (PRO~RI Si))
    (VP (VMA~RE dice)
        (CONJ che)
        (S
            (VP (VAU~RE siete)
                (VP (VMA~PA finanziati)
                    (PP-LGS (PREP da)
                        (NP (NOU~CP gruppi) (ADJ~QU mediorientali)))))
               (NP-SBJ (-NONE- *))))
         (. .)) )


************** FRASE NEWS-288 **************

 ( (S
    (NP-SBJ (ART~DE I) (NOU~CP soldi))
    (VP (VMA~RE arrivano)
        (PP (ADVB soprattutto) (PREP dalla)
            (NP
                (NP (ART~DE dalla) (NOU~CS diaspora))
                (PP-LOC (PREP all')
                    (NP (ART~DE all') (NOU~CS estero))))))
        (. .)) )


************** FRASE NEWS-289 **************

 ( (S
    (NP-SBJ (ART~DE Gli) (NOU~CP emigrati))
    (VP (VMA~RE versano)
        (NP (ART~DE il) (NUMR 3) (SPECIAL %)
            (PP (PREP dello)
                (NP (ART~DE dello) (NOU~CS stipendio))))
          (PP-LOC (PREP in)
              (NP (ART~IN un)
                  (NP (NOU~CS fondo) (ADJ~QU speciale))
                  (SBAR
                      (NP-1333 (PRO~RE che))
                      (S
                          (NP-SBJ (-NONE- *-1333))
                          (VP (VMA~RE va)
                              (PP
                                  (PP (PREP al)
                                      (NP
                                          (NP (ART~DE al) (NOU~CS Governo) (ADJ~QU autoproclamato))
                                          (PP (PREP del)
                                              (NP (ART~DE del) (NOU~PR Kosovo)))))
                                     (CONJ e)
                                     (PP (PREP a)
                                         (NP (ADVB anche) (PRO~PE noi))))))))))
                 (. .)) )


************** FRASE NEWS-290 **************

 ( (S
    (S
        (NP-SBJ-133 (PRO~PE Noi))
        (ADVP (ADVB non))
        (VP (VMO~RE vogliamo)
            (S
                (VP (VMA~IN uccidere)
                    (NP (NOU~CP civili)))
                 (NP-SBJ (-NONE- *-133)))))
        (PUNCT -)
        (VP (VMA~RE conclude)
            (NP-EXTPSBJ-833 (NOU~PR Mehemet)))
         (NP-SBJ (-NONE- *-833))
         (PUNCT -)
         (. .)) )


************** FRASE NEWS-291 **************

 ( (S
    (NP-PRD (ART~DE Il) (ADJ~PO nostro) (NOU~CS bersaglio))
    (VP (VMA~RE sono)
        (NP-EXTPSBJ-333 (-NONE- *-)
            (NP-533 (ART~DE la) (NOU~CS polizia) (-NONE- *-))
            (, ,)
            (NP
                (NP (ART~DE l') (NOU~CS esercito) (ADJ~QU serbo))
                (, ,)
                (NP
                    (NP
                        (NP (ART~DE gli) (NOU~CP agenti))
                        (PP (PREP dell')
                            (NP (ART~DE dell') (NOU~PR Udb))))
                      (, ,)
                      (NP
                          (NP (ART~DE il) (NOU~CS servizio) (ADJ~QU segreto) (ADJ~QU jugoslavo))
                          (, ,)
                          (NP
                              (NP (ART~DE le)
                                  (' ') (NOU~CP tigri)
                                  (' '))
                               (PP (PREP di)
                                   (NP (NOU~PR Arkan)
                                       (, ,)
                                       (SBAR
                                           (NP-3333 (ART~DE le)
                                               (NP (PRO~RE cui)) (NOU~CP milizie))
                                            (S
                                                (NP-SBJ (-NONE- *-3333))
                                                (VP (VMA~RE sono)
                                                    (ADJP-PRD (ADJ~QU acquartierate)
                                                        (PP-LOC (PREP all')
                                                            (NP
                                                                (NP (ART~DE all') (NOU~PR Hotel) (NOU~PR Grand))
                                                                (PP (PREP di)
                                                                    (NP (NOU~PR Pristina)))))))))))))))))
                       (NP-SBJ (-NONE- *-533))
                       (. .)) )


************** FRASE NEWS-292 **************

 ( (S
    (CONJ Se)
    (S
        (NP-SBJ (NOU~PR Belgrado))
        (NP (PRO~PE ci))
        (VP (VMA~RE da')
            (NP (ART~DE l') (NOU~CS indipendenza))))
      (NP-SBJ (ADJ~DE questa) (NOU~CS storia))
      (VP (VMA~FU finira'))
      (. .)) )


************** FRASE NEWS-293 **************

 ( (S
    (S
        (NP-SBJ (NOU~PR Liri) (NOU~PR Avdekie)
            (PRN
                (, ,)
                (NP
                    (NP (NOU~CA Liberta'))
                    (CONJ o)
                    (NP (NOU~CS Morte)))
                 (, ,)))
           (VP (VMA~RE e')
               (NP-PRD
                   (NP (ART~DE il) (NOU~CS motto))
                   (PP (PREP in)
                       (NP (NOU~CS albanese)))
                    (PP (PREP dell')
                        (NP (ART~DE dell') (NOU~CS esercito) (ADJ~QU kosovaro))))))
            (CONJ ma)
            (S
                (PP-LOC (PREP in)
                    (NP (NOU~PR Serbia)))
                 (NP-SBJ
                     (NP-1933
                         (NP (ART~DE i) (NOU~CP nazionalisti)) (-NONE- *-)
                         (PP (PREP di)
                             (NP (NOU~PR Milosevic))))
                       (CONJ e)
                       (NP (ADVB anche) (ART~DE l')
                           (NP (NOU~CS opinione) (ADJ~QU pubblica))))
                     (VP (VMA~RE sono)
                         (ADJP-PRD (ADJ~QU concordi)))
                      (NP-SBJ (-NONE- *-1933)))
                   (. .)) )


************** FRASE NEWS-294 **************

 ( (S
    (NP-SBJ-133 (ART~DE Il) (NOU~PR Kosovo)
        (, ,)
        (NP
            (NP (NOU~CS testimone))
            (PP (PREP della)
                (NP
                    (NP (ART~DE della) (NOU~CS battaglia))
                    (PP (PREP del)
                        (NP
                            (NP (ART~DE del) (NOU~CS Campo))
                            (PP (PREP dei)
                                (NP (ART~DE dei) (NOU~CP Merli)))))
                       (PP-TMP (PREP del)
                           (NP (ART~DE del) (NOU~CS giugno)
                               (NP (NUMR 1389))))
                         (PP (PREP contro)
                             (NP (ART~DE i) (NOU~PR Turchi)))))))
              (, ,)
              (VP (VMO~RE deve)
                  (S
                      (VP (VMA~IN restare)
                          (PP-LOC (PREP a)
                              (NP (NOU~PR Belgrado))))
                        (NP-SBJ (-NONE- *-133))))
                  (. .)) )


************** FRASE NEWS-295 **************

 ( (S
    (NP-SBJ
        (NP-SBJ
            (NP (ART~DE Il) (NOU~CS crollo))
            (PP (PREP del)
                (NP (ART~DE del) (NOU~CS comunismo))))
          (CONJ e)
          (NP
              (NP (ART~DE l') (NOU~CS esplosione))
              (PP (PREP della)
                  (NP (ART~DE della) (NOU~PR Jugoslavia)))))
         (VP (VAU~RE hanno)
             (VP (VMA~PA fatto)
                 (S
                     (VP (VMA~IN rinascere)
                         (NP-1333
                             (NP (ART~IN un) (PRO~ID altro))
                             (PP (PREP degli)
                                 (NP (ART~DE degli) (ADJ~QU antichi) (NOU~CP demoni) (ADJ~QU balcanici)))
                              (, ,)
                              (NP-2133 (ART~DE la)
                                  (NP (NOU~CS questione) (ADJ~QU albanese))
                                  (, ,) (S+REDUC
                                      (S
                                          (S
                                              (VP (VMA~PA trattata)
                                                  (NP-TMP (ART~IN un) (NOU~CS secolo) (ADJ~DI fa))
                                                  (PP (PREP con)
                                                      (NP (NOU~CS mano) (ADJ~QU pesante)))
                                                   (PP-LGS (PREP dalle)
                                                       (NP (ART~DE dalle) (ADJ~QU grandi) (NOU~CP potenze))))
                                                 (NP-SBJ-24.1033 (-NONE- *-2133))))
                                           (, ,)
                                           (S
                                               (S
                                                   (VP (VMA~PA risorta)
                                                       (PP (PREP in)
                                                           (NP (NOU~CS modo) (ADJ~QU effimero)))
                                                        (PP (PREP con)
                                                            (NP
                                                                (NP (ART~DE la) (NOU~CS vittoria))
                                                                (PP (PREP dell')
                                                                    (NP (ART~DE dell') (NOU~CS Asse)))
                                                                 (PP-LOC (PREP nei)
                                                                     (NP (ART~DE nei) (NOU~PR Balcani))))))
                                                         (NP-SBJ-35.1033 (-NONE- *-24.1033)))
                                                      (CONJ e)
                                                      (S
                                                          (ADVP-TMP (ADVB poi))
                                                          (ADVP (ADVB nuovamente))
                                                          (VP (VMA~PA oscurata)
                                                              (PP-TMP (PREP nel)
                                                                  (NP (ART~DE nel) (NOU~CA dopoguerra))))
                                                            (NP-SBJ (-NONE- *-35.1033))))))))
                                          (NP-SBJ (-NONE- *-1333)))))
                                 (. .)) )


************** FRASE NEWS-296 **************

 ( (S
    (ADVP-TMP (ADVB Oggi))
    (NP-SBJ
        (NP (ART~IN un) (NOU~CS albanese))
        (PP (PREP su)
            (NP (NUMR due))))
      (VP (VMA~RE vive)
          (PP-LOC (PREP fuori)
              (PP (PREP dai)
                  (NP
                      (NP (ART~DE dai) (NOU~CP confini))
                      (PP (PREP della)
                          (NP
                              (NP (ART~DE della) (NOU~CS Repubblica))
                              (PP (PREP di)
                                  (NP (NOU~PR Tirana)))))))))
             (. .)) )


************** FRASE NEWS-297 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (NOU~CS Merito) (ADJ~QU innegabile))
        (PP (PREP del)
            (NP-3.133 (ART~DE del) (NOU~CS presidente)
                (NP (NOU~PR Sali) (NOU~PR Berisha))
                (PRN
                    (, ,)
                    (SBAR
                        (NP-8333 (PRO~RE che))
                        (S
                            (NP-SBJ (-NONE- *-8333))
                            (PP (PREP per)
                                (NP (ADVB proprio) (PRO~DE questo)))
                             (VP (VAU~RE ha)
                                 (VP (VMA~PA ottenuto)
                                     (PP-TMP (PREP fino)
                                         (PP (PREP a) (ADVB oggi)))
                                      (NP (ART~DE l') (NOU~CS appoggio) (ADJ~QU occidentale))))))
                          (, ,)))))
              (VP (VAU~RE e')
                  (VP (VMA~PA stato)
                      (NP-PRD
                          (NP (PRO~DE quello))
                          (PP (PREP di)
                              (S
                                  (VP (VMA~IN moderare)
                                      (PP-TMP (PREP durante)
                                          (NP (ART~DE la) (NOU~CS guerra) (ADJ~QU bosniaca)))
                                       (NP
                                           (NP (ART~DE le) (NOU~CP aspirazioni) (ADJ~QU irredentiste))
                                           (PP (PREP degli)
                                               (NP
                                                   (NP (ART~DE degli) (NOU~CP albanesi))
                                                   (PP-LOC
                                                       (PP (PREP del)
                                                           (NP (ART~DE del) (NOU~PR Kosovo)))
                                                        (CONJ e)
                                                        (PP (PREP della)
                                                            (NP (ART~DE della) (NOU~CS Macedonia)))))))
                                             (, ,)
                                             (S
                                                 (VP (VMA~GE accordandosi)
                                                     (NP (PRO~RI accordandosi))
                                                     (ADVP-TMP (ADVB poi))
                                                     (PP (ADVB anche) (PREP con)
                                                         (NP (ART~DE la) (NOU~PR Grecia)))
                                                      (PP (PREP sulla)
                                                          (NP
                                                              (NP (ART~DE sulla) (NOU~CS questione))
                                                              (PP (PREP dell')
                                                                  (NP (ART~DE dell') (NOU~PR Epiro))))))
                                                      (NP-SBJ (-NONE- *-25.1033))))
                                                (NP-SBJ-25.1033 (-NONE- *-3.133)))))))
                                 (. .)) )


************** FRASE NEWS-298 **************

 ( (S
    (CONJ Ma)
    (NP-SBJ (PRO~IN cosa))
    (VP (VMA~FU accadra')
        (ADVP-TMP (ADVB domani))
        (CONJ mentre)
        (S
            (PP-LOC
                (PP (PREP a)
                    (NP (NOU~PR Belgrado)))
                 (CONJ e)
                 (PP (PREP a)
                     (NP (NOU~PR Tirana))))
               (NP-SBJ (NOU~PR Milosevic)
                   (CONJ e) (NOU~PR Berisha))
                (VP (VMA~RE appaiono)
                    (ADJP-PRD
                        (ADVP (ADVB sempre) (ADVB piu')) (ADJ~QU deboli)))
                  (NP-SBJ (-NONE- *-1133))))
            (. ?)) )


************** FRASE NEWS-299 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE Il) (NOU~CA mantra))
        (PP (PREP dei)
            (NP (ART~DE dei) (NOU~PR Balcani))))
      (VP (VMA~RE rischia)
          (PP (PREP di)
              (S
                  (VP (VMA~IN diventare)
                      (NP-PRD (ART~IN una) (ADJ~QU tragica) (NOU~CA realta')))
                   (NP-SBJ (-NONE- *-133)))))
          (. .)) )


************** FRASE NEWS-300 **************

 ( (S
    (VP (VMA~RE SALE)
        (PP (PREP DI)
            (NP (NUMR 200) (NOU~CP LIRE)))
         (NP-EXTPSBJ-533
             (NP (ART~DE IL) (NOU~CS PREZZO))
             (PP (PREP di)
                 (NP
                     (NP (ART~IN un) (NOU~CS pacchetto))
                     (PP (PREP di)
                         (NP (NOU~CP sigarette)))))))
          (NP-SBJ (-NONE- *-533))
          (. .)) )


************** FRASE NEWS-301 **************

 ( (S
    (NP (PRO~PE Lo))
    (VP (VAU~RE ha)
        (VP (VMA~PA deciso)
            (NP-EXTPSBJ-433
                (NP (ART~DE il) (NOU~CS ministro))
                (PP (PREP delle)
                    (NP (ART~DE delle) (NOU~CP Finanze))))
              (, ,)
              (S
                  (VP (VMA~GE firmando)
                      (NP (ART~DE i)
                          (NP (NOU~CP decreti))
                          (SBAR
                              (NP-1333 (PRO~RE che))
                              (S
                                  (NP-SBJ (-NONE- *-1333))
                                  (VP (VMA~RE aumentano)
                                      (PP (PREP di)
                                          (NP (ART~IN un) (NOU~CS punto) (ADJ~QU percentuale)))
                                       (PRN
                                           (-LRB- -LRB-)
                                           (PP (PREP dal)
                                               (NP (ART~DE dal) (NUMR 57))
                                               (PP (PREP al)
                                                   (NP (ART~DE al) (NUMR 58) (SPECIAL %)))
                                                (, ,)
                                                (PP (PREP IN_LINEA_CON)
                                                    (NP (ART~DE la) (NOU~CS media) (ADJ~QU europea))))
                                              (-RRB- -RRB-))
                                           (NP
                                               (NP (ART~DE l') (NOU~CS accisa))
                                               (PP (PREP sui)
                                                   (NP (ART~DE sui) (NOU~CP tabacchi)))))))))
                              (NP-SBJ (-NONE- *-433)))))
                     (NP-SBJ (-NONE- *-433))
                     (. .)) )


************** FRASE NEWS-302 **************

 ( (S
    (S
        (PP-LOC (PREP A)
            (NP (NOU~PR VALONA)))
         (NP-SBJ (NUMR TRE) (NOU~CP MANIFESTANTI))
         (VP (VAU~RE SONO)
             (VP (VMA~PA MORTI))))
       (CONJ e)
       (S
           (NP-SBJ (ART~IN una) (NOU~CS ventina))
           (VP (VAU~RE sono)
               (VP (VMA~PA rimasti)
                   (ADJP-PRD (ADJ~QU feriti))
                   (PP (PREP per)
                       (NP (NOU~CP colpi))
                       (PP (PREP d')
                           (NP (NOU~CS ARMA_DA_FUOCO))))
                     (PP-LOC (PREP nei)
                         (NP
                             (NP (ART~DE nei) (ADJ~QU violenti) (NOU~CP scontri))
                             (PP (PREP con)
                                 (NP (ART~DE la) (NOU~CS polizia)))
                              (VP (VMA~PA scoppiati)
                                  (NP (-NONE- *))
                                  (ADVP-TMP (ADVB ieri)
                                      (NP-TMP (NOU~CS sera)))))))))
                 (. .)) )


************** FRASE NEWS-303 **************

 ( (S
    (ADJP-PRD (ADJ~QU Altissima))
    (VP (-NONE- *)
        (NP-EXTPSBJ-233
            (NP (ART~DE la) (NOU~CS tensione))
            (PP-LOC (PREP in)
                (NP (PRDT tutta) (ART~DE l') (NOU~PR Albania)))))
       (NP-SBJ (-NONE- *-233))
       (. .)) )


************** FRASE NEWS-304 **************

 ( (S
    (NP-SBJ
        (ADJP (ADVB PIU') (ADJ~QU INGENTE))
        (NP (ART~DE IL) (NOU~CS SCHIERAMENTO))
        (PP (PREP DI)
            (NP (NOU~CS POLIZIA)))
         (PP (PREP del)
             (NP (ART~DE del) (NOU~CA dopoguerra)))
          (PP-LOC (PREP in)
              (NP (NOU~PR Germania))))
        (VP (VAU~RE ha)
            (VP (VMA~PA accompagnato)
                (ADVP-TMP (ADVB ieri))
                (NP
                    (NP (ART~DE la) (ADJ~OR prima) (NOU~CS tappa))
                    (PP (PREP del)
                        (NP
                            (NP (ART~DE del) (ADJ~QU controverso) (NOU~CS trasporto))
                            (PP (PREP di)
                                (NP (NOU~CP scorie) (ADJ~QU nucleari)))
                             (PP-LOC (PREP verso)
                                 (NP
                                     (NP (ART~DE il) (NOU~CS deposito))
                                     (PP (PREP di)
                                         (NP (NOU~PR Gorleben)
                                             (PP-LOC (PREP in)
                                                 (NP (NOU~PR Sassonia))))))))))))
                   (. .)) )


************** FRASE NEWS-305 **************

 ( (S
    (NP
        (NP (NOU~CP Proteste))
        (CONJ e)
        (NP (NOU~CP fermi)))
     (NP (PRO~RI si))
     (VP (VAU~RE sono)
         (VP (VMA~PA segnalati)
             (PP-LOC (PREP lungo)
                 (NP (ART~DE la)
                     (NP (NOU~CS strada))
                     (VP (VMA~PA percorsa)
                         (NP (-NONE- *))
                         (PP-LGS (PREP dal)
                             (NP (ART~DE dal) (NOU~CS convoglio))))))))
           (. .)) )


************** FRASE NEWS-306 **************

 ( (S
    (NP-SBJ (ART~DE LA) (NOU~PR RUSSIA))
    (VP (VAU~RE HA)
        (VP (VMA~PA ABOLITO)
            (NP
                (NP (ART~DE LA) (NOU~CS PENA))
                (PP (PREP DI)
                    (NP (NOU~CS MORTE))))))
        (. .)) )


************** FRASE NEWS-307 **************

 ( (S
    (ADVP-TMP (ADVB Ieri))
    (NP-SBJ (ART~DE il) (NOU~CS presidente)
        (NP (NOU~PR Boris) (NOU~PR Eltsin)))
     (VP (VAU~RE ha)
         (VP (VMA~PA ordinato)
             (PP (PREP al)
                 (NP-8.133
                     (NP (ART~DE al) (NOU~CS ministro))
                     (PP (PREP degli)
                         (NP (ART~DE degli) (NOU~CP esteri)))))
                (PP (PREP di)
                    (S
                        (VP (VMA~IN sottoscrivere)
                            (NP
                                (NP (ART~DE il) (NOU~CS Protocollo) (NOU~PR IV))
                                (PP (PREP sull')
                                    (NP
                                        (NP (ART~DE sull') (NOU~CS abolizione))
                                        (PP (PREP della)
                                            (NP (ART~DE della) (NOU~CS pena) (ADJ~QU capitale)))))
                                   (, ,)
                                   (VP (VMA~PA allegato)
                                       (NP (-NONE- *))
                                       (PP (PREP alla)
                                           (NP
                                               (NP (ART~DE alla) (NOU~CS Convenzione)) (NOU~PR Onu)
                                               (PP (PREP dei)
                                                   (NP
                                                       (NP (ART~DE dei) (NOU~CP diritti) (ADJ~QU umani))
                                                       (CONJ e)
                                                       (NP (ART~DE le) (NOU~CA liberta') (ADJ~QU fondamentali)))))))))
                                  (NP-SBJ (-NONE- *-8.133))))))
                      (. .)) )


************** FRASE NEWS-308 **************

 ( (S
    (NP-SBJ (NOU~PR BELGIO)
        (CONJ E) (NOU~PR FRANCIA))
     (VP (-NONE- *)
         (ADJP-PRD (ADJ~QU AI_FERRI_CORTI))
         (PP-TMP (PREP dopo)
             (NP
                 (NP (ART~DE l') (ADJ~QU improvvisa) (NOU~CS decisione))
                 (PP (PREP della)
                     (NP-11.133 (ART~DE della) (NOU~PR Renault)))
                  (PP (PREP di)
                      (S
                          (VP (VMA~IN chiudere)
                              (NP
                                  (NP (ART~IN una) (NOU~CS fabbrica))
                                  (PP (PREP di)
                                      (NP (NOU~CA auto)))
                                   (PP-LOC (PREP alle)
                                       (NP
                                           (NP (ART~DE alle) (NOU~CP porte))
                                           (PP (PREP di)
                                               (NP (NOU~PR Bruxelles))))))
                                   (PP (PREP con)
                                       (NP
                                           (NP (ART~DE la) (NOU~CS perdita))
                                           (PRN
                                               (, ,)
                                               (PP (PREP per)
                                                   (NP (ART~DE il) (NOU~PR Belgio)))
                                                (, ,))
                                             (PP (PREP di)
                                                 (NP
                                                     (NP (ADVB circa) (NUMR 3100) (NOU~CP posti))
                                                     (PP (PREP di)
                                                         (NP (NOU~CS lavoro))))))))
                                       (NP-SBJ (-NONE- *-11.133)))))))
                        (. .)) )


************** FRASE NEWS-309 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE LA) (NOU~CS CRESCITA))
        (PP (PREP DEL)
            (NP (ART~DE DEL) (NOU~PR PIL) (NOU~PR USA)))
         (PP (PREP del)
             (NP (ART~DE del) (ADJ~OR quarto) (NOU~CS trimestre)
                 (NP (DATE '96)))))
        (VP (VAU~RE e')
            (VP (VAU~PA stata)
                (VP (VMA~PA rivista))))
          (PP (PREP al)
              (NP (ART~DE al) (NOU~CS ribasso)))
           (PP (PREP dal)
               (NP (ART~DE dal) (NUMR 4,7))
               (PP (PREP al)
                   (NP (ART~DE al) (NUMR 3,9) (SPECIAL %))))
             (PRN
                 (, ,)
                 (PP (PREP A_CAUSA_DI)
                     (NP
                         (NP (ART~DE del) (NOU~CS dimezzamento))
                         (PP (PREP delle)
                             (NP
                                 (NP (ART~DE delle) (NOU~CP scorte))
                                 (PP (PREP di)
                                     (NP (NOU~CS magazzino)))))))
                      (, ,))
                   (S
                       (VP (VMA~GE portando)
                           (PP (PREP al)
                               (NP (ART~DE al) (NUMR 2,4) (SPECIAL %)))
                            (NP
                                (NP (ART~DE l') (NOU~CS aumento))
                                (PP (PREP dell')
                                    (NP (ART~DE dell') (ADJ~QU intero) (NOU~CS anno)))))
                           (NP-SBJ (-NONE- *-133)))
                        (. .)) )


************** FRASE NEWS-310 **************

 ( (S
    (VP (VMA~RE SCATTA)
        (NP-EXTPSBJ-233
            (NP (ART~DE L') (NOU~CS AUMENTO))
            (PP (PREP DEL)
                (NP (ART~DE DEL)
                    (NP (NOU~CS CANONE)) (NOU~PR TELECOM)
                    (, ,)
                    (ADJP
                        (PP-TMP (PREP da) (ADVB oggi)) (ADJ~QU pari)
                        (PP (PREP a)
                            (NP
                                (NP (NUMR 2.500) (NOU~CP lire))
                                (PP (PREP a)
                                    (NP (NOU~CS bimestre)))))))))
               (CONJ mentre)
               (S
                   (NP-SBJ (ART~DE gli) (NOU~CP sconti))
                   (VP (VMA~FU partiranno)
                       (PP-TMP (PREP entro)
                           (NP (ADJ~IN pochissimi) (NOU~CP giorni)))
                        (, ,)
                        (CONJ come)
                        (S
                            (VP (VMA~RE assicurano)
                                (PP (PREP al)
                                    (NP
                                        (NP (ART~DE al) (NOU~CS ministero))
                                        (PP (PREP delle)
                                            (NP (ART~DE delle) (NOU~CP Poste))))))
                                (NP-SBJ (-NONE- *))))))
                    (NP-SBJ (-NONE- *-233))
                    (. .)) )


************** FRASE NEWS-311 **************

 ( (NP
    (PP-TMP (PREP DA) (ADVB OGGI))
    (NP (NOU~CP BIGLIETTI))
    (PP (PREP DELLE)
        (NP (ART~DE DELLE) (NOU~PR FS)))
     (ADJP (ADVB PIU') (ADJ~QU CARI))
     (PP (PREP con)
         (NP
             (NP (NOU~CP aumenti) (ADJ~QU medi))
             (PP (PREP del)
                 (NP (ART~DE del) (NUMR 2,5) (SPECIAL %)
                     (PP
                         (PP (PREP della)
                             (NP (ART~DE della) (NOU~CS tariffa)
                                 (NP (NOU~CS base))))
                           (CONJ e)
                           (PP (PREP del)
                               (NP (ART~DE del) (NOU~CS supplemento)
                                   (NP (NOU~PR Intercity)
                                       (CONJ e) (NOU~PR Pendolino)))))))))
               (. .)) )


************** FRASE NEWS-312 **************

 ( (S
    (NP-SBJ (ART~DE I) (NOU~CP rincari))
    (VP (VAU~RE sono)
        (VP (VMA~PA distribuiti)
            (PP (PREP per)
                (NP (ART~DE le) (NOU~CP tratte)))
             (PP (PREP secondo)
                 (NP
                     (NP (ART~DE la) (NOU~CS lunghezza) (ADJ~QU chilometrica))
                     (CONJ e)
                     (NP
                         (NP (ART~DE la) (NOU~CS frequenza))
                         (PP (PREP dei)
                             (NP (ART~DE dei) (NOU~CP passeggeri))))))))
           (. .)) )


************** FRASE NEWS-313 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE IL) (NOU~CS PRESIDENTE))
        (PP (PREP DELL')
            (NP (ART~DE DELL') (NOU~PR INTER)))
         (PRN
             (, ,)
             (NP (NOU~PR Massimo) (NOU~PR Moratti))
             (, ,)))
       (VP (VAU~RE ha)
           (VP (VMA~PA acquistato)
               (NP (ART~DE il) (NUMR 4,9) (SPECIAL %)
                   (PP (PREP della)
                       (NP (ART~DE della) (NOU~PR Camfin)
                           (, ,)
                           (NP (ART~DE la) (NOU~CA holding)
                               (NP
                                   (NP
                                       (NP (NOU~CS azionista))
                                       (PP (PREP di)
                                           (NP (NOU~CS riferimento)))
                                        (PP (PREP del)
                                            (NP (ART~DE del) (NOU~CS gruppo) (NOU~PR Pirelli))))
                                      (CONJ e)
                                      (S
                                          (NP-SBJ (PRO~RE che))
                                          (VP (VMA~RE fa)
                                              (NP (NOU~CS capo))
                                              (PP (PREP alla)
                                                  (NP (ART~DE alla) (NOU~CS famiglia)
                                                      (NP (NOU~PR Tronchetti) (NOU~PR Provera)))))))))))))
                     (. .)) )


************** FRASE NEWS-314 **************

 ( (NP
    (NP (NOU~CA VIA_LIBERA))
    (PP (PREP DALLA)
        (NP (ART~DE DALLA) (NOU~CS CAMERA)))
     (PP (PREP al)
         (NP
             (NP (ART~DE al) (NOU~CS maxiemendamento))
             (PP (PREP con)
                 (NP
                     (NP (NUMR 208))
                     (NP (ART~DE i) (NOU~CP miliardi))
                     (PP (PREP di)
                         (NP
                             (NP (NOU~CP agevolazioni))
                             (PP (PREP per)
                                 (NP (ART~DE il) (NOU~CS settore)))))))
                  (SBAR
                      (S
                          (PP-LOC (PREP su)
                              (NP (PRO~RE cui)))
                           (NP-SBJ (ART~DE il) (NOU~CS Governo))
                           (VP (VAU~RE ha)
                               (VP (VMA~PA posto)
                                   (NP (ART~DE la) (NOU~CS fiducia))))))))
                 (. .)) )


************** FRASE NEWS-315 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (NOU~CS PAPA))
        (NP (NOU~PR GIOVANNI)
            (NP (NOU~PR PAOLO) (ADJ~OR II))))
      (VP (VMA~FU visitera')
          (NP (NOU~PR Cuba))
          (PP-TMP (PREP dal)
              (NP (ART~DE dal) (NUMR 21))
              (PP (PREP al)
                  (NP
                      (NP (ART~DE al) (NUMR 25))
                      (PP (PREP del)
                          (NP (ART~DE del) (ADJ~DI prossimo) (NOU~CS anno)))))))
           (. .)) )


************** FRASE NEWS-316 **************

 ( (NP
    (NP (NOU~CP Lampi))
    (PP (PREP di)
        (NP (NOU~CS guerra) (ADJ~QU civile)))
     (PP-LOC (PREP dai)
         (NP (ART~DE dai) (NOU~PR Balcani)))
      (. .)) )


************** FRASE NEWS-317 **************

 ( (S
    (PP-TMP (PREP Dopo)
        (NP
            (NP (NUMR 40) (NOU~CP giorni))
            (PP (PREP di)
                (NP
                    (NP (NOU~CS protesta))
                    (PP (PREP per)
                        (NP
                            (NP (ART~DE il) (NOU~CS crollo))
                            (PP (PREP delle)
                                (NP (ART~DE delle)
                                    (' ') (NOU~CP piramidi)
                                    (' ') (ADJ~QU finanziarie)))))))))
            (, ,)
            (NP-SBJ (ART~DE l') (NOU~PR Albania))
            (VP (VAU~RE e')
                (VP (VMA~PA passata)
                    (PP-LOC (PREP dal)
                        (NP
                            (NP (ART~DE dal) (NOU~CS lancio))
                            (PP (PREP dei)
                                (NP (ART~DE dei) (NOU~CP sassi)))))
                       (PP-LOC (PREP alle)
                           (NP (ART~DE alle) (NOU~CP mitragliatrici)))))
                  (. .)) )


************** FRASE NEWS-318 **************

 ( (NP
    (NP
        (NP (ART~IN Una) (NOU~CS decina))
        (PP (PREP di)
            (NP (NOU~CP morti))))
      (, ,)
      (NP
          (NP (NUMR 30) (NOU~CP feriti))
          (, ,)
          (NP
              (NP (ART~DE il) (NOU~CS Sud))
              (PP-LOC (PREP nell')
                  (NP (ART~DE nell') (NOU~CS anarchia)))
               (VP (VMA~PA isolato)
                   (NP (-NONE- *))
                   (PP (PREP dal)
                       (NP
                           (NP (ART~DE dal) (NOU~CS resto))
                           (PP (PREP del)
                               (NP (ART~DE del) (NOU~CS Paese))))))))
             (. .)) )


************** FRASE NEWS-319 **************

 ( (S
    (PP-LOC (PREP A)
        (NP (NOU~PR Valona)))
     (NP-SBJ (ART~DE la) (NOU~CS violenza))
     (VP (VAU~RE e')
         (VP (VMA~PA esplosa)
             (PP (PREP con)
                 (NP
                     (NP
                         (NP (NOU~CP assalti))
                         (PP (PREP alle)
                             (NP (ART~DE alle) (NOU~CP caserme))))
                       (CONJ e)
                       (NP
                           (NP (NOU~CP scontri))
                           (PP (PREP a)
                               (NP (NOU~CS fuoco)))
                            (PP (PREP con)
                                (NP
                                    (NP (ART~DE i) (NOU~CP servizi))
                                    (PP (PREP di)
                                        (NP (NOU~CS sicurezza))))))))))
                (. .)) )


************** FRASE NEWS-320 **************

 ( (S
    (S
        (NP-SBJ (NUMR Sei) (NOU~CP-233 agenti))
        (VP (VAU~RE-333 sono)
            (VP (VAU~PA-433 stati)
                (VP (VMA~PA uccisi)))))
       (, ,)
       (S
           (S
               (NP-SBJ (NUMR due) (-NONE- *-233))
               (VP (-NONE- *-333)
                   (VP
                       (VP (VMA~PA bruciati)) (-NONE- *-433)))
                 (PP-LOC (PREP tra)
                     (NP
                         (NP (ART~DE le) (NOU~CP fiamme))
                         (PP (PREP del)
                             (NP (ART~DE del)
                                 (NP (ADJ~PO loro) (NOU~CS ufficio))
                                 (VP (VMA~PA incendiato)
                                     (NP (-NONE- *))
                                     (PP-LGS (PREP dai)
                                         (NP (ART~DE dai) (NOU~CP rivoltosi)))))))))
                    (, ,)
                    (S
                        (S
                            (NP-SBJ (ART~DE gli) (PRO~ID altri))
                            (VP
                                (VP
                                    (VP (VMA~PA linciati))))
                              (PP-LGS (PREP dalla)
                                  (NP (ART~DE dalla) (NOU~CS folla) (ADJ~QU inferocita))))
                            (, ,)
                            (S
                                (NP-SBJ (NUMR due) (NOU~CP manifestanti))
                                (VP (-NONE- *-21.1033)
                                    (VP
                                        (VP (VMA~PA freddati)) (-NONE- *-21.1133)))
                                  (PP (PREP a)
                                      (NP (NOU~CP colpi))
                                      (PP (PREP di)
                                          (NP (NOU~CS ARMA_DA_FUOCO)))))))
                           (. .)) )


************** FRASE NEWS-321 **************

 ( (S
    (S
        (NP-SBJ
            (NP-SBJ (NOU~CP Migliaia))
            (PP (PREP di)
                (NP (NOU~CP persone))))
          (VP (VAU~RE sono)
              (VP (VMA~PA scese)
                  (PP-LOC (PREP in)
                      (NP (NOU~CS piazza)))
                   (PP-LOC (PREP nelle)
                       (NP
                           (NP (ART~DE nelle) (ADJ~DI altre) (NOU~CA citta'))
                           (PP (PREP del)
                               (NP (ART~DE del) (NOU~CS Sud))))))))
             (, ,)
             (S
                 (PP-LOC (PREP a)
                     (NP (NOU~PR Tirana)))
                  (NP-SBJ
                      (NP (NOU~CP studenti))
                      (CONJ e)
                      (NP (NOU~CS polizia)))
                   (NP (PRO~RI si))
                   (VP (VAU~RE sono)
                       (VP (VMA~PA scontrati)
                           (PP-LOC (PREP vicino)
                               (PP (PREP all')
                                   (NP (ART~DE all')
                                       (NP (NOU~CA universita'))
                                       (SBAR
                                           (S
                                               (NP-LOC (PRO~LO dove))
                                               (PP-TMP (PREP nel)
                                                   (NP (ART~DE nel) (DATE '90)))
                                                (VP (VMA~RA scoppio')
                                                    (NP-EXTPSBJ-2933
                                                        (NP (ART~DE la) (NOU~CS rivolta))
                                                        (PP (PREP contro)
                                                            (NP (ART~DE il) (NOU~CS regime) (ADJ~QU comunista)))))
                                                   (NP-SBJ (-NONE- *-2933))))))))))
                           (. .)) )


************** FRASE NEWS-322 **************

 ( (S
    (ADVP-TMP (ADVB Intanto))
    (NP-SBJ (ART~DE il) (ADJ~OR primo) (NOU~CS ministro)
        (NP (NOU~PR Aleksander) (NOU~PR Meksi)))
     (VP (VAU~RE ha)
         (VP (VMA~PA presentato)
             (NP
                 (NP (ART~DE le) (NOU~CP dimissioni))
                 (PP (PREP del)
                     (NP (ART~DE del) (NOU~CS Governo))))
               (PP (PREP al)
                   (NP (ART~DE al) (NOU~CS presidente)
                       (NP (NOU~PR Sali) (NOU~PR Berisha))))))
           (. .)) )


************** FRASE NEWS-323 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (NOU~CP Manifestanti))
        (CONJ e)
        (NP
            (NP (NOU~CS opposizione))
            (PRN
                (, ,)
                (SBAR
                    (NP-5333 (PRO~RE che))
                    (S
                        (NP-SBJ (-NONE- *-5333))
                        (PP-TMP
                            (PP (PREP da)
                                (NP (NOU~CP mesi)))
                             (, ,)
                             (CONJ cioe')
                             (PP (PREP dalle)
                                 (NP
                                     (NP (ART~DE dalle) (NOU~CP elezioni) (ADJ~QU legislative))
                                     (PP-TMP (PREP del)
                                         (NP (ART~DE del) (NOU~CS maggio) (ADJ~DI scorso))))))
                             (VP (VMA~RE boicotta)
                                 (NP (ART~DE i) (NOU~CP lavori) (ADJ~QU parlamentari)))))
                        (, ,))))
               (VP (VMA~RE chiedono)
                   (NP
                       (NP (ART~DE le) (NOU~CP dimissioni))
                       (PP (PREP del)
                           (NP
                               (NP (ART~DE del) (NOU~CS Governo))
                               (PP (PREP del)
                                   (NP (ART~DE del)
                                       (NP (NOU~CS Partito) (ADJ~QU democratico))
                                       (VP (VMA~PA ritenuto)
                                           (NP (-NONE- *))
                                           (ADJP-PRD (ADJ~QU responsabile)
                                               (PP (PREP del)
                                                   (NP
                                                       (NP (ART~DE del) (NOU~CS fallimento))
                                                       (PP (PREP delle)
                                                           (NP (ART~DE delle)
                                                               (NP (NOU~CP piramidi) (ADJ~QU finanziarie))
                                                               (SBAR
                                                                   (S
                                                                       (NP-LOC (PRO~LO dove))
                                                                       (VP (VAU~RE sono)
                                                                           (VP (VAU~PA stati)
                                                                               (VP (VMA~PA bruciati))))
                                                                         (NP-SBJ (-NONE- *-4033))
                                                                         (NP-EXTPSBJ-4033
                                                                             (NP (NUMR due) (NOU~CP miliardi))
                                                                             (PP (PREP di)
                                                                                 (NP
                                                                                     (NP (NOU~CP dollari))
                                                                                     (PP (PREP di)
                                                                                         (NP
                                                                                             (NP (NOU~CP investimenti))
                                                                                             (CONJ e)
                                                                                             (NP (NOU~CP risparmi)))))))))))))))))))))
                                    (. .)) )


************** FRASE NEWS-324 **************

 ( (S
    (PP-LOC (PREP A)
        (NP (NOU~PR Valona)))
     (NP-SBJ-333 (ART~DE la) (NOU~CS protesta))
     (VP (VAU~RE e')
         (VP (VMA~PA guidata)
             (PP-LGS
                 (PP (PREP dai)
                     (NP (ART~DE dai)
                         (NP (NOU~CA clan) (ADJ~QU locali))
                         (VP (VMA~PA collegati)
                             (NP (-NONE- *))
                             (PP (PREP al)
                                 (NP (ART~DE al) (NOU~CS narcotraffico))))))
                     (, ,)
                     (PP
                         (PP (PREP dagli)
                             (NP (ART~DE dagli) (ADJ~QU ex) (NOU~CP comunisti)))
                          (, ,)
                          (PP (PREP da)
                              (NP
                                  (NP (NOU~CP bande) (ADJ~QU criminali))
                                  (SBAR
                                      (NP-2333 (PRO~RE che))
                                      (S
                                          (NP-SBJ (-NONE- *-2333))
                                          (ADVP-TMP (ADVB adesso))
                                          (VP (VMA~RE sfruttano)
                                              (NP
                                                  (NP (ART~DE l') (NOU~CS ira))
                                                  (PP (PREP di)
                                                      (NP
                                                          (NP (NOU~CP migliaia))
                                                          (PP (PREP di)
                                                              (NP
                                                                  (NP (NOU~CP albanesi))
                                                                  (VP (VMA~PA truffati)
                                                                      (NP (-NONE- *)))
                                                                   (SBAR
                                                                       (NP-3333 (PRO~RE che))
                                                                       (S
                                                                           (NP-SBJ (-NONE- *-3333))
                                                                           (VP (VAU~IM avevano)
                                                                               (VP (VMA~PA creduto)
                                                                                   (PP (PREP al)
                                                                                       (NP
                                                                                           (NP (ART~DE al) (NOU~CS miraggio))
                                                                                           (PP (PREP della)
                                                                                               (NP (ART~DE della) (NOU~CS ricchezza)))))
                                                                                      (PP-TMP (PREP dopo)
                                                                                          (NP
                                                                                              (NP (ART~DE l') (NOU~CS era))
                                                                                              (PP (PREP della)
                                                                                                  (NP (ART~DE della) (NOU~CS dittatura) (ADJ~QU stalinista)))))))))))))))))))))))
                                   (. .)) )


************** FRASE NEWS-325 **************

 ( (S
    (S
        (PP-LOC (PREP A)
            (NP (NOU~PR Tirana)))
         (NP-SBJ
             (NP-333
                 (NP (ART~DE le) (NOU~CP forze)) (-NONE- *-)
                 (PP (PREP dell')
                     (NP (ART~DE dell') (NOU~CS ordine))))
               (CONJ e)
               (NP
                   (NP (ART~DE gli) (NOU~CP agenti))
                   (PP (PREP della)
                       (NP (ART~DE della) (NOU~PR Shikh)
                           (PRN
                               (, ,)
                               (NP (ART~DE i)
                                   (NP (NOU~CP servizi) (ADJ~QU segreti))
                                   (SBAR
                                       (NP-1333 (PRO~RE che))
                                       (S
                                           (NP-SBJ (-NONE- *-1333))
                                           (VP (VAU~RE hanno)
                                               (VP (VMA~PA ereditato)
                                                   (NP
                                                       (NP (ART~DE i) (NOU~CP compiti))
                                                       (PP (PREP della)
                                                           (NP (ART~DE della) (ADJ~QU comunista) (NOU~PR Segurimi)))))))))
                                      (, ,))))))
                       (ADVP-TMP (ADVB ieri))
                       (VP (VAU~RE sono)
                           (VP (VMA~PA riusciti)
                               (PP (PREP a)
                                   (S
                                       (VP (VMA~IN soffocare)
                                           (NP
                                               (NP (ART~DE la) (NOU~CS protesta))
                                               (PP (PREP di)
                                                   (NP (NUMR quattromila) (NOU~CP studenti)))))
                                          (NP-SBJ (-NONE- *-333))))))
                              (NP-SBJ (-NONE- *-333)))
                           (CONJ ma)
                           (S
                               (NP-SBJ (ART~DE la) (NOU~CS tensione))
                               (VP (VMA~RE e')
                                   (ADJP-PRD (ADJ~QU altissima))))
                             (. .)) )


************** FRASE NEWS-326 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE La) (NOU~CS polizia))
        (VP (VMA~RE pattuglia)
            (NP (ART~DE le) (NOU~CP strade))))
      (CONJ e)
      (S
          (VP (VMA~RE presidia)
              (NP (ART~DE gli)
                  (NP (NOU~CP edifici) (ADJ~QU pubblici))
                  (ADJP
                      (' ') (ADJ~QU strategici)
                      (' '))))
             (NP-SBJ (-NONE- *-133)))
          (. .)) )


************** FRASE NEWS-327 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE L') (NOU~PR Albania))
        (VP (VMA~RE appare)
            (ADJP-PRD
                (ADVP (ADVB sempre) (ADVB piu')) (ADJ~QU vicina)
                (PP (PREP alla)
                    (NP (ART~DE alla) (NOU~CS guerra) (ADJ~QU civile))))))
        (CONJ e)
        (S
            (NP (PRO~RI si))
            (VP (VMA~RE prepara)
                (PP (PREP ad)
                    (S
                        (VP (VMA~IN assistere)
                            (PRN
                                (, ,)
                                (PP-LOC
                                    (PP (PREP nel)
                                        (NP (ART~DE nel) (NOU~CS sangue)))
                                     (CONJ e)
                                     (PP (PREP nella)
                                         (NP (ART~DE nella) (NOU~CS violenza))))
                                   (, ,))
                                (PP (PREP alla)
                                    (NP
                                        (NP (ART~DE alla) (NOU~CS rielezione) (ADJ~QU scontata))
                                        (PRN
                                            (, ,)
                                            (PP-TMP (PREP per)
                                                (NP (ART~DE il) (NOU~CS momento)))
                                             (, ,))
                                          (PP (PREP del)
                                              (NP (ART~DE del) (NOU~CS presidente)
                                                  (NP (NOU~PR Sali) (NOU~PR Berisha))))
                                            (VP (VMA~PA prevista)
                                                (NP (-NONE- *))
                                                (ADVP-TMP (ADVB domani))
                                                (PP-LOC (PREP in)
                                                    (NP (NOU~CS Parlamento)))))))
                                     (NP-SBJ (-NONE- *-12.1033)))))
                            (NP-SBJ-12.1033 (-NONE- *-133)))
                         (. .)) )


************** FRASE NEWS-328 **************

 ( (S
    (NP-SBJ (NOU~PR Berisha))
    (VP (VMA~RE e')
        (NP-PRD
            (NP (ART~DE il) (NOU~CS candidato) (ADJ~QU unico))
            (PP (PREP di)
                (NP (ART~IN un)
                    (NP (NOU~CS partito))
                    (SBAR
                        (NP-9333 (PRO~RE che))
                        (S
                            (NP-SBJ (-NONE- *-9333))
                            (VP (VMA~RE detiene)
                                (NP
                                    (NP (ART~DE la) (ADJ~QU stragrande) (NOU~CS maggioranza))
                                    (PP (PREP dei)
                                        (NP (ART~DE dei) (NOU~CP seggi)))))))))))
             (. .)) )


************** FRASE NEWS-329 **************

 ( (VP (VMA~RE e')
    (ADVP (ADVB davvero))
    (NP-PRD
        (NP (ART~IN una) (NOU~CS scommessa))
        (PP (PREP ad)
            (NP (ADJ~QU alto) (NOU~CS rischio))))
      (. .)) )


************** FRASE NEWS-330 **************

 ( (NP
    (NP (NOU~CS Assalto))
    (PP (PREP alle)
        (NP (ART~DE alle) (NOU~CP caserme)))
     (PP-LOC (PREP a)
         (NP (NOU~PR Valona)))
      (PP (PREP per)
          (S
              (VP (VMA~IN procurarsi)
                  (NP (PRO~RI procurarsi))
                  (NP
                      (NP (NOU~CP armi))
                      (CONJ ed)
                      (NP (NOU~CS esplosivo))))
                (NP-SBJ (-NONE- *))))
          (. .)) )


************** FRASE NEWS-331 **************

 ( (S
    (VP (VMA~RE Continuano)
        (PP-TMP (PREP nel)
            (NP (ART~DE nel) (ADJ~QU post)
                (PUNCT -) (NOU~CS comunismo)))
          (NP-EXTPSBJ-633
              (NP (ART~DE le) (NOU~CP lotte))
              (PP (PREP fra)
                  (NP (ART~DE i) (NOU~CA clan) (ADJ~QU rivali)))))
         (NP-SBJ (-NONE- *-633))
         (. .)) )


************** FRASE NEWS-332 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~CS anarchia))
    (VP (VMA~RE e')
        (ADVP-TMP (ADVB ormai))
        (PP-LOC (PREP al)
            (NP (ART~DE al) (NOU~CS potere))))
      (. .)) )


************** FRASE NEWS-333 **************

 ( (NP
    (NP
        (NP (ART~DE Il) (NOU~CS fallimento))
        (PP (PREP delle)
            (NP (ART~DE delle) (NOU~CP piramidi) (ADJ~QU finanziarie))))
      (, ,)
      (NP
          (NP (NUMR 40)
              (NP (NOU~CP giorni)))
           (PP (PREP di)
               (NP
                   (NP (NOU~CP proteste))
                   (PP (PREP di)
                       (NP (NOU~CS piazza)))))
              (, ,)
              (NP
                  (NP (ADVB poi) (ART~DE la) (NOU~CS rivolta) (ADJ~QU armata))
                  (PP (PREP della)
                      (NP
                          (NP (ART~DE della) (NOU~CS repubblica) (ADJ~QU indipendente))
                          (PP (PREP di)
                              (NP (NOU~PR Valona)
                                  (, ,)
                                  (NP
                                      (NP
                                          (NP (NOU~CA citta'))
                                          (ADJP (ADJ~QU ribelle)
                                              (PP-TMP (PREP da) (ADVB sempre))))
                                        (, ,)
                                        (NP
                                            (NP (NOU~CS regno))
                                            (PP (PREP di)
                                                (NP
                                                    (NP (NOU~CP contrabbandieri))
                                                    (, ,)
                                                    (NP
                                                        (NP (NOU~CP scafisti))
                                                        (CONJ e)
                                                        (NP (NOU~CP narcotrafficanti)))))))))))))
                       (. .)) )


************** FRASE NEWS-334 **************

 ( (S
    (PP-LOC (PREP Su)
        (NP
            (NP (ADJ~DE questa) (NOU~CS sponda))
            (PP (PREP dell')
                (NP (ART~DE dell') (NOU~PR Adriatico)))
             (PRN
                 (, ,)
                 (PP-LOC (PREP a)
                     (NP
                         (NP (NUMR 40) (NOU~CP miglia))
                         (PP-LOC (PREP dalla)
                             (NP (ART~DE dalla) (NOU~CS costa) (ADJ~QU italiana)))))
                    (, ,))))
           (NP-SBJ (ART~DE l') (NOU~PR Albania))
           (VP (VMA~RE e')
               (PP-LOC (PREP a)
                   (NP
                       (NP (ART~IN un) (NOU~CS passo))
                       (PP (PREP dalla)
                           (NP (ART~DE dalla) (NOU~CS guerra) (ADJ~QU civile))))))
               (: ;)) )


************** FRASE NEWS-335 **************

 ( (PP
    (PP (PREP dalla)
        (NP
            (NP (ART~DE dalla) (NOU~CS fine))
            (PRN
                (, ,)
                (ADJP
                    (ADJP (ADVB PER_ORA)
                        (ADVP-TMP (ADVB ancora)) (ADJ~QU imprevedibile))
                     (CONJ e)
                     (ADJP (ADVB forse) (ADJ~QU sanguinosa)))
                  (, ,))
               (PP (PREP del)
                   (NP
                       (NP (ART~DE del) (ADJ~OR primo) (NOU~CS regime) (ADJ~QU democratico))
                       (PP-TMP (PREP dopo)
                           (NP
                               (NP (NUMR 45))
                               (NP (ART~DE i) (NOU~CP anni))
                               (PP (PREP di)
                                   (NP
                                       (NP (NOU~CS dittatura) (ADJ~QU stalinista))
                                       (VP (VMA~PA simboleggiata)
                                           (NP (-NONE- *))
                                           (PP-LGS (PREP da)
                                               (NP (NOU~PR Enver) (NOU~PR Hoxha))))))))))))
                 (. .)) )


************** FRASE NEWS-336 **************

 ( (S
    (CONJ Ma)
    (NP-SBJ (ART~DE il) (NOU~CS comunismo) (ADJ~QU albanese))
    (PRN
        (, ,)
        (PP
            (PP (PREP nei)
                (NP (ART~DE nei) (NOU~CP metodi)))
             (CONJ e)
             (PP (PREP negli)
                 (NP (ART~DE negli) (NOU~CP uomini))))
           (, ,))
        (VP (VAU~IM era)
            (VP (VAU~PA stato)
                (ADVP (ADVB davvero))
                (VP (VMA~PA sepolto))))
          (PP-LGS (PREP dalla)
              (NP
                  (NP (ART~DE dalla) (NOU~CS valanga))
                  (PP (PREP della)
                      (NP
                          (NP (ART~DE della) (NOU~CS vittoria) (ADJ~QU elettorale))
                          (PP (PREP del)
                              (NP (ART~DE del) (NOU~CS partito) (ADJ~QU democratico)))
                           (PP-TMP (PREP nel)
                               (NP (ART~DE nel) (DATE '92)))))))
                (. ?)) )


************** FRASE NEWS-337 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Le) (NOU~CP legislative))
        (PP-TMP (PREP del)
            (NP (ART~DE del) (NOU~CS maggio) (ADJ~DI scorso)))
         (, ,)
         (VP
             (VP (VMA~PA boicottate)
                 (PP-LGS (PREP dall')
                     (NP (ART~DE dall') (NOU~CS opposizione))))
               (NP (-NONE- *))
               (CONJ e)
               (S
                   (VP (VMA~PA criticate)
                       (ADVP (ADVB aspramente))
                       (PP-LGS (PREP dagli)
                           (NP (ART~DE dagli) (NOU~PR STATI_UNITI)
                               (PRN
                                   (PUNCT -)
                                   (NP
                                       (NP (ART~DE il) (ADJ~OR primo) (NOU~CA sponsor))
                                       (PP (PREP di)
                                           (NP (NOU~PR Berisha))))
                                     (PUNCT -)))))
                         (NP-SBJ (-NONE- *-7.1033)))))
                (VP (VAU~RE sono)
                    (VP (VMA~PA state)
                        (NP-PRD
                            (NP (ART~DE il) (NOU~CS segnale) (ADJ~QU forte))
                            (PP (PREP di)
                                (NP (ART~IN un)
                                    (NP (NOU~CS malessere))
                                    (SBAR
                                        (NP-3333 (PRO~RE che))
                                        (S
                                            (NP-SBJ (-NONE- *-3333))
                                            (ADVP-TMP (ADVB poi))
                                            (VP (VAU~RE e')
                                                (VP (VMA~PA esploso)
                                                    (PP-LOC (PREP nelle)
                                                        (NP (ART~DE nelle) (NOU~CP piazze))))))))))))
                          (. .)) )


************** FRASE NEWS-338 **************

 ( (S
    (ADVP (ADVB IN_REALTÀ))
    (PP-TMP (PREP in)
        (NP (ADJ~DE questi) (NOU~CP anni)))
     (PP-LOC (PREP a)
         (NP (NOU~PR Tirana)))
      (NP (PRO~RI si))
      (VP (VAU~RE sono)
          (VP (VMA~PA scontrati)
              (PP-LOC (PREP in)
                  (NP
                      (NP (ART~IN una) (ADJ~QU dura) (NOU~CS lotta))
                      (PP (PREP di)
                          (NP (NOU~CS potere)))))
                 (NP-EXTPSBJ-1733 (ART~DE i)
                     (NP (NOU~CA clan))
                     (VP (VMA~PA legati)
                         (NP (-NONE- *))
                         (PP (PREP alla)
                             (NP (ART~DE alla) (ADJ~QU vecchia) (NOU~CS nomenklatura))))
                       (, ,)
                       (ADJP (ADJ~QU trasversali)
                           (PP
                               (PP
                                   (CONJ sia) (PREP-2633 ai)
                                   (NP
                                       (NP (ART~DE-26.133 ai) (NOU~CP-2733 partiti))
                                       (PP (PREP di)
                                           (NP (NOU~CS Governo)))))
                                  (CONJ che)
                                  (PP (-NONE- *-2633)
                                      (NP
                                          (NP (-NONE- *-26.133) (-NONE- *-2733))
                                          (PP (PREP di)
                                              (NP (NOU~CS opposizione))))))))))
                      (NP-SBJ (-NONE- *-1733))
                      (. .)) )


************** FRASE NEWS-339 **************

 ( (S
    (NP-SBJ-133 (ART~DE Il) (NOU~CS presidente)
        (NP (NOU~PR Sali) (NOU~PR Berisha))
        (PRN
            (, ,)
            (SBAR
                (NP-6333 (PRO~RE che))
                (S
                    (NP-SBJ (-NONE- *-6333))
                    (PP-TMP (PREP all')
                        (NP
                            (NP (ART~DE all') (NOU~CS inizio))
                            (PP (PREP della)
                                (NP (ART~DE della) (ADJ~PO sua) (NOU~CS carriera) (ADJ~QU politica)))))
                       (VP (VMA~IM andava)
                           (ADVP (ADVB A_BRACCETTO))
                           (PP-LOC (PREP ai)
                               (NP (ART~DE ai) (NOU~CP comizi)))
                            (PP (PREP con)
                                (NP (ART~DE l') (NOU~CS ambasciatore) (NOU~PR Usa))))))
                    (, ,)))
              (VP (VAU~RE ha)
                  (VP (VMA~PA abbandonato)
                      (ADVP-TMP (ADVB presto))
                      (NP (ART~DE le) (NOU~CP suggestioni) (ADJ~QU americaneggianti))
                      (PP (PREP per)
                          (S
                              (VP (VMA~IN diventare)
                                  (ADVP (ADVB sempre) (ADVB DI_PIÙ))
                                  (NP-PRD
                                      (NP (ART~IN un) (NOU~CA leader))
                                      (PP (PREP dall')
                                          (NP (ART~DE dall') (ADJ~QU accentuato) (NOU~CS profilo) (ADJ~QU balcanico)))))
                                 (NP-SBJ (-NONE- *-133))))))
                     (. .)) )


************** FRASE NEWS-340 **************

 ( (S
    (NP (PRO~RI Si))
    (VP (VAU~RE e')
        (VP (VMA~PA fatto)
            (NP-PRD
                (NP
                    (NP (NOU~CP portabandiera))
                    (PP (PREP del)
                        (NP (ART~DE del) (ADJ~QU libero) (NOU~CS mercato))))
                  (CONJ e)
                  (NP
                      (NP (ART~DE la) (NOU~CS fama))
                      (PP (PREP di)
                          (NP
                              (NP (NOU~CS protettore))
                              (PP (PREP degli)
                                  (NP (ART~DE degli) (NOU~CP investimenti) (ADJ~QU stranieri)))))))))
             (NP-SBJ (-NONE- *))
             (. .)) )


************** FRASE NEWS-341 **************

 ( (S
    (CONJ Ma)
    (PP (PREP invece)
        (PP (PREP di)
            (S
                (VP (VMA~IN andare)
                    (PP-LOC+METAPH (PREP verso)
                        (NP (ART~DE il) (NOU~CS capitalismo))))
                  (NP-SBJ (-NONE- *-833)))))
         (NP-SBJ-833 (ART~DE l') (NOU~PR Albania))
         (VP (VAU~RE e')
             (VP (VMA~PA rotolata)
                 (PP (PREP senza)
                     (NP (NOU~CP freni)))
                  (PP-LOC (PREP nell')
                      (NP (ART~DE nell') (NOU~CS anarchia) (ADJ~QU economica)))))
             (. .)) )


************** FRASE NEWS-342 **************

 ( (S
    (S
        (PP-TMP (PREP Per)
            (NP (ADJ~IN qualche) (NOU~CS anno)))
         (NP-SBJ
             (NP-433
                 (NP (ART~DE la) (NOU~CS guerra)) (-NONE- *-)
                 (PP-LOC (PREP nell')
                     (NP (ART~DE nell') (ADJ~QU ex) (NOU~PR Jugoslavia))))
               (CONJ e)
               (NP (ART~DE il) (NOU~CS contrabbando)
                   (PP (PREP di)
                       (NP
                           (NP (ADJ~IN ogni) (NOU~CS genere))
                           (PP (PREP di)
                               (NP
                                   (NP (NOU~CS merce))
                                   (, ,)
                                   (PP (PREP da)
                                       (NP (PRO~DE quella) (ADJ~QU umana))
                                       (PP (PREP alla)
                                           (NP (ART~DE alla) (NOU~CS droga))))))))
                         (PRN
                             (PUNCT -)
                             (PUNCT -))))
                    (VP (VAU~RE hanno)
                        (VP (VMA~PA tamponato)
                            (PRN
                                (, ,)
                                (PP (PREP insieme)
                                    (PP (PREP alle)
                                        (NP
                                            (NP (ART~DE alle) (NOU~CP rimesse))
                                            (PP (PREP degli)
                                                (NP (ART~DE degli) (NOU~CP emigrati))))))
                                    (, ,))
                                 (NP
                                     (NP (ART~DE le) (NOU~CP falle))
                                     (PP (PREP del)
                                         (NP (ART~DE del) (NOU~CS bilancio))))))
                             (NP-SBJ (-NONE- *-433)))
                          (CONJ e)
                          (S
                              (VP (VMA~PA arricchito)
                                  (NP
                                      (NP (ART~IN una) (NOU~CS parte))
                                      (PP (PREP della)
                                          (NP (ART~DE della) (NOU~CS popolazione) (ADJ~QU albanese)))))
                                 (NP-SBJ (-NONE- *-433)))
                              (. .)) )


************** FRASE NEWS-343 **************

 ( (S
    (PP-LOC (PREP Dai)
        (NP
            (NP (ART~DE Dai) (NOU~CP confini))
            (PP (PREP con)
                (NP
                    (NP (ART~DE il) (NOU~PR Montenegro))
                    (CONJ e)
                    (NP (ART~DE il) (NOU~PR Kosovo))))))
        (PP-TMP (PREP durante)
            (NP (ART~DE l') (NOU~CS embargo)))
         (VP (VAU~RE e')
             (VP (VMA~PA passato)
                 (PP-EXTPSBJ-1433 (PREP di)
                     (NP (PRO~ID tutto))
                     (, ,)
                     (PP (PREP dalle)
                         (NP (ART~DE dalle) (NOU~CP armi))
                         (PP (PREP al)
                             (NP (ART~DE al) (NOU~CS petrolio)))))))
              (. .)) )


************** FRASE NEWS-344 **************

 ( (S
    (PP-LOC (PREP A)
        (NP (NOU~PR Scutari)))
     (NP-LOC (PRO~LO c'))
     (VP (VMA~IM era)
         (NP-EXTPSBJ-533 (ART~DE la)
             (ADJP (ADVB piu') (ADJ~QU alta))
             (NP (NOU~CA densita')
                 (PP (PREP di)
                     (NP
                         (NP (NOU~CP benzinai))
                         (SBAR
                             (S
                                 (VP (-NONE- *-1733))))))
                     (PP (PREP d')
                         (NP (NOU~PR Europa)))
                      (PP (PREP per)
                          (NP (NOU~CS chilometro) (ADJ~QU quadrato)))
                       (S
                           (NP-SBJ (PRO~RE che))
                           (VP-1733 (VMA~IM vendevano)
                               (PP (PREP alla)
                                   (NP
                                       (NP (ART~DE alla) (NOU~CS Federazione))
                                       (PP (PREP di)
                                           (NP (NOU~PR Milosevic)))))
                                  (NP
                                      (NP (NOU~CS carburante))
                                      (VP (VMA~PA quotato)
                                          (NP (-NONE- *))
                                          (NP
                                              (NP (NUMR 20) (NOU~CP marchi))
                                              (PP (PREP al)
                                                  (NP (ART~DE al) (NOU~CS litro))))
                                            (PP-LOC (PREP sulle)
                                                (NP
                                                    (NP (ART~DE sulle) (NOU~CP strade))
                                                    (PP (PREP di)
                                                        (NP (NOU~PR Belgrado))))))))))))
                          (NP-SBJ (-NONE- *-533))
                          (. .)) )


************** FRASE NEWS-345 **************

 ( (S
    (NP-SBJ (NOU~PR Valona))
    (ADVP-TMP (ADVB intanto))
    (NP (PRO~RI si))
    (VP (VAU~IM era)
        (VP (VMA~PA trasformata)
            (PP (PREP nella)
                (NP
                    (NP (ART~DE nella) (NOU~PR Tangeri))
                    (PP (PREP dell')
                        (NP (ART~DE dell') (NOU~PR Adriatico)))))))
         (. .)) )


************** FRASE NEWS-346 **************

 ( (S
    (ADVP-LOC (ADVB Qui))
    (VP (VMA~IM dominava)
        (NP (ART~DE la) (NOU~CS piazza))
        (NP-EXTPSBJ-533 (ART~IN un)
            (NP (NOU~CA clan))
            (VP (VMA~PA legato)
                (NP (-NONE- *))
                (PP (PREP alla)
                    (NP (ART~DE alla)
                        (NP (ADJ~QU vecchia) (NOU~PR Segurimi))
                        (SBAR
                            (NP-1333 (PRO~RE che))
                            (S
                                (NP-SBJ (-NONE- *-1333))
                                (PP (PREP del)
                                    (NP (ART~DE del) (NOU~CS porto)))
                                 (VP (VAU~IM aveva)
                                     (VP (VMA~PA fatto)
                                         (PP-TMP (ADVB gia') (PREP negli)
                                             (NP
                                                 (NP (ART~DE negli) (NOU~CP anni))
                                                 (PP (PREP di)
                                                     (NP (NOU~PR Hoxha)))))
                                            (NP
                                                (NP (ART~DE il) (NOU~CS punto))
                                                (PP (PREP di)
                                                    (NP
                                                        (NP (NOU~CS snodo))
                                                        (PP (PREP del)
                                                            (NP
                                                                (NP (ART~DE del) (NOU~CS traffico))
                                                                (PP
                                                                    (PP (PREP di)
                                                                        (NP (NOU~CP armi)))
                                                                     (CONJ e)
                                                                     (PP (PREP di)
                                                                         (NP (NOU~CP sigarette))))))))))))))))))
                         (NP-SBJ (-NONE- *-533))
                         (. .)) )


************** FRASE NEWS-347 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (ART~DE La) (NOU~CS tradizione))
        (CONJ e)
        (NP (ART~DE le) (ADJ~QU antiche) (NOU~CA solidarieta')))
     (VP
         (VP (VAU~RE hanno)
             (ADVP-TMP (ADVB poi))) (VMA~PA resistito)
          (PP (PREP al)
              (NP
                  (NP (ART~DE al) (NOU~CS crollo))
                  (PP (PREP del)
                      (NP (ART~DE del) (NOU~CS regime))))))
          (. .)) )


************** FRASE NEWS-348 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (PRO~ID Molti))
        (PP (PREP dei)
            (NP (ART~DE dei) (NOU~CP capi)
                (PUNCT -)
                (NP (NOU~CS bastone)))))
       (PRN
           (, ,)
           (PP (PREP per)
               (S
                   (VP (VMA~IN acquisire)
                       (NP (ADJ~QU nuova) (NOU~CA legittimita')))
                    (NP-SBJ (-NONE- *-133))))
              (, ,))
           (VP (VAU~RE sono)
               (VP (VMA~PA passati)
                   (PP-LOC (PREP nelle)
                       (NP
                           (NP (ART~DE nelle) (NOU~CP file))
                           (PP (PREP del)
                               (NP (ART~DE del)
                                   (NP (NOU~CS Partito) (ADJ~QU democratico))
                                   (SBAR
                                       (NP-1333 (PRO~RE che))
                                       (S
                                           (NP-SBJ (-NONE- *-1333))
                                           (PP (ADVB proprio) (PREP attraverso)
                                               (NP
                                                   (NP (ART~DE la) (NOU~CS piramide) (ADJ~QU finanziaria))
                                                   (PP (PREP di)
                                                       (NP (NOU~PR Valona))) (NOU~PR Giallijca)))
                                              (VP (VAU~RE ha)
                                                  (VP (VMA~PA rastrellato)
                                                      (NP
                                                          (NP (ADJ~IN qualche) (NOU~CS milione))
                                                          (PP (PREP di)
                                                              (NP (NOU~CP dollari))))
                                                        (PP (PREP per)
                                                            (NP (ART~DE le) (ADJ~PO sue) (NOU~CP campagne) (ADJ~QU elettorali)))))))))))))
                           (. .)) )


************** FRASE NEWS-349 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Il) (NOU~CA clan))
        (PP (PREP dei)
            (NP (ART~DE dei) (NOU~CP valonesi))))
      (VP (VAU~RE e')
          (VP (VMA~PA stato)
              (NP-PRD
                  (NP (PRO~DE quello))
                  (SBAR
                      (NP-8333 (PRO~RE che))
                      (S
                          (NP-SBJ (-NONE- *-8333))
                          (PP-PRD (PREP per)
                              (NP (PRO~OR primo)))
                           (PRN
                               (, ,)
                               (PP (PREP grazie)
                                   (PP
                                       (PP (ADVB anche) (PREP all')
                                           (NP
                                               (NP (ART~DE all') (NOU~CA attivita'))
                                               (PP (PREP degli)
                                                   (NP (ART~DE degli) (NOU~CP scafisti)))))
                                          (CONJ e)
                                          (PP (PREP alla)
                                              (NP
                                                  (NP (ART~DE alla) (NOU~CS vicinanza))
                                                  (PP (PREP con)
                                                      (NP (ART~DE l') (NOU~PR Italia)))))))
                                       (, ,))
                                    (VP (VAU~RE ha)
                                        (VP (VMA~PA approfittato)
                                            (PP (PREP della)
                                                (NP (ART~DE della) (NOU~CS situazione))))))))))
                        (. .)) )


************** FRASE NEWS-350 **************

 ( (S
    (ADVP (ADVB Non))
    (VP (VMA~RE e')
        (NP-PRD (ART~IN un) (NOU~CS caso))
        (CONJ che)
        (S
            (ADVP-LOC (ADVB qui))
            (VP (VAU~CG siano)
                (VP (VMA~PA nate)
                    (NP-EXTPSBJ-933 (ART~DE le)
                        (NP (ADJ~OR prime) (NOU~CP piramidi))
                        (VP (VMA~PA destinate)
                            (NP (-NONE- *))
                            (PP
                                (PP (PREP ad)
                                    (S
                                        (VP (VMA~IN attirare)
                                            (PRN
                                                (, ,)
                                                (PP (PREP con)
                                                    (NP
                                                        (NP (ADJ~QU incredibili) (NOU~CP tassi))
                                                        (PP (PREP di)
                                                            (NP (NOU~CS rendimento)))))
                                                   (, ,))
                                                (NP (NOU~CP capitali) (ADJ~QU illeciti)))
                                             (NP-SBJ-14.1033 (-NONE- *-12.1033))))
                                       (CONJ e)
                                       (PP (PREP a)
                                           (S
                                               (VP (VMA~IN riciclare)
                                                   (NP
                                                       (NP (NOU~CS denaro) (ADJ~QU sporco))
                                                       (, ,)
                                                       (ADJP
                                                           (ADVP (ADVB DI_CERTO) (ADVB non) (ADVB soltanto)) (ADJ~QU albanese))))
                                                  (NP-SBJ (-NONE- *-14.1033)))))))))
                             (NP-SBJ (-NONE- *-933))))
                       (. .)) )


************** FRASE NEWS-351 **************

 ( (S
    (PP (PREP Ai)
        (NP (ART~DE Ai) (NOU~CP pesci) (ADJ~QU grossi)))
     (VP (VAU~RE sono)
         (VP (VMA~PA seguiti)
             (NP-EXTPSBJ-433
                 (NP (PRO~DE quelli) (ADJ~QU piccoli)) (-NONE- *-)
                 (PRN
                     (, ,)
                     (NP
                         (NP (NOU~CS gente) (ADJ~QU comune))
                         (, ,)
                         (NP
                             (NP (NOU~CP risparmiatori))
                             (, ,)
                             (NP (NOU~CP emigrati))))
                       (, ,))
                    (VP (VMA~PA travolti)
                        (NP (-NONE- *))
                        (ADVP-TMP (ADVB poi))
                        (PP-LGS (PREP da)
                            (NP (ART~IN un)
                                (NP (NOU~CS fallimento))
                                (SBAR
                                    (NP-2333 (PRO~RE che))
                                    (S
                                        (NP-SBJ (-NONE- *-2333))
                                        (NP (PRO~RI si))
                                        (VP (VAU~RE e')
                                            (VP (VMA~PA ingoiato)
                                                (PRN
                                                    (, ,)
                                                    (PP (PREP con)
                                                        (NP
                                                            (NP (ART~DE i) (NOU~CP sogni))
                                                            (PP (PREP di)
                                                                (NP (NOU~CS benessere)))))
                                                       (, ,))
                                                    (NP
                                                        (NP (ADVB anche) (ART~IN un) (NOU~CS paio))
                                                        (PP (PREP di)
                                                            (NP
                                                                (NP (NOU~CP miliardi))
                                                                (PP (PREP di)
                                                                    (NP (NOU~CP dollari))))))))))))))))
                          (NP-SBJ (-NONE- *-633))
                          (. .)) )


************** FRASE NEWS-352 **************

 ( (NP (ART~IN Una)
    (NP
        (NP (NOU~CS cifra) (ADJ~QU colossale))
        (PP-LOC (PREP in)
            (NP
                (NP (ART~IN un) (NOU~CS Paese))
                (PP (PREP di)
                    (NP
                        (NP (NUMR tre) (NOU~CP milioni))
                        (PP (PREP di)
                            (NP (NOU~CP abitanti)))))
                   (PP (PREP con)
                       (NP
                           (NP
                               (NP (ART~IN un) (NOU~CA Pil))
                               (PP (PREP da)
                                   (NP (NUMR 1,5) (NOU~CP miliardi))))
                             (CONJ e)
                             (NP
                                 (NP (ART~IN un) (NOU~CS reddito) (ADJ~QU mensile) (ADJ~QU pro-capite))
                                 (PP (PREP di)
                                     (NP (NUMR 75) (NOU~CP dollari)))))))))
                (. .)) )


************** FRASE NEWS-353 **************

 ( (S
    (PP (PREP Ai)
        (NP
            (NP (ART~DE Ai) (NOU~CP protagonisti))
            (PP (PREP di)
                (NP (ADJ~DE questa)
                    (NP (NOU~CS economia))
                    (ADJP
                        (ADJP (ADJ~QU sommersa))
                        (CONJ e)
                        (ADJP (ADJ~QU tenebrosa)))))))
         (NP-SBJ
             (NP-933 (ART~DE il) (NOU~CS Partito) (-NONE- *-) (ADJ~QU democratico)
                 (PRN
                     (PUNCT -)
                     (CONJ ma)
                     (NP
                         (ADVP (ADVB non) (ADVB solo)) (PRO~DE quello))
                      (PUNCT -)))
                (CONJ e)
                (NP (ART~DE l') (NOU~PR Albania)))
             (VP (VAU~RE hanno)
                 (VP (VMA~PA pagato)
                     (NP (ART~IN un) (ADJ~QU pesante) (NOU~CS tributo))))
               (NP-SBJ (-NONE- *-933))
               (. .)) )


************** FRASE NEWS-354 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (NOU~CA Illegalita'))
        (CONJ e)
        (NP (NOU~CS corruzione)))
     (NP (PRO~RI si))
     (VP (VAU~RE sono)
         (VP (VMA~PA infiltrate)
             (PP-LOC (PREP in)
                 (NP
                     (NP (PRDT tutti) (ART~DE i) (NOU~CP settori))
                     (PP
                         (PP (PREP della)
                             (NP (ART~DE della) (NOU~CA societa')))
                          (CONJ e)
                          (PP (PREP della)
                              (NP (ART~DE della) (NOU~CS classe) (ADJ~QU politica))))))
                  (, ,)
                  (PP (PREP in)
                      (NP
                          (NP (ART~IN un) (NOU~CS patto))
                          (PP (PREP di)
                              (NP (NOU~CS tolleranza))
                              (PRN
                                  (, ,)
                                  (CONJ quando)
                                  (PP (PREP di)
                                      (NP (ADVB non) (NOU~CP complicita')))
                                   (, ,)))
                             (SBAR
                                 (NP-2333 (PRO~RE che))
                                 (S
                                     (NP-SBJ (-NONE- *-2333))
                                     (VP (VAU~RE ha)
                                         (VP (VMA~PA retto)
                                             (PP-TMP (PREP fino)
                                                 (PP (PREP a)
                                                     (NP (ADJ~IN pochi) (NOU~CP mesi) (ADJ~DI fa))))))))))))
                       (. .)) )


************** FRASE NEWS-355 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~CS accordo))
    (NP (PRO~RI si))
    (VP (VAU~RE e')
        (VP (VMA~PA spezzato)
            (PP (PREP per)
                (NP (NUMR tre) (NOU~CP motivi) (ADJ~QU principali)))))
       (. .)) )


************** FRASE NEWS-356 **************

 ( (S
    (PP-TMP (PREP Dopo)
        (NP (NOU~PR Dayton)
            (CONJ e)
            (NP
                (NP (ART~DE la) (ADJ~QU faticosa) (NOU~CS intesa))
                (PP (PREP di)
                    (NP
                        (NP (NOU~CS pace))
                        (PP (PREP per)
                            (NP (ART~DE la) (ADJ~QU ex) (NOU~PR Jugoslavia))))))))
          (NP (PRO~RI si))
          (VP (VAU~RE e')
              (VP (VMA~PA esaurito)
                  (NP-EXTPSBJ-1633
                      (NP (ART~DE il) (NOU~CS filone) (ADJ~QU aureo))
                      (PP (PREP del)
                          (NP (ART~DE del) (NOU~CS contrabbando)))
                       (VP (VMA~PA destinato)
                           (NP (-NONE- *))
                           (PP (PREP ad)
                               (S
                                   (VP (VMA~IN aggirare)
                                       (NP (ART~DE le) (NOU~CP sanzioni)))
                                    (NP-SBJ (-NONE- *-21.1033))))))))
                  (NP-SBJ (-NONE- *-1633))
                  (. .)) )


************** FRASE NEWS-357 **************

 ( (NP (ART~IN Un)
    (NP
        (NP (NOU~CS evento) (ADJ~QU fatale))
        (, ,)
        (SBAR
            (NP-5333 (PRO~RE che))
            (S
                (NP-SBJ (-NONE- *-5333))
                (VP (VAU~RE ha)
                    (VP (VMA~PA messo)
                        (PP (PREP in)
                            (NP (NOU~CS ginocchio)))
                         (NP (ADJ~DI altre)
                             (NP (NOU~CP economie) (ADJ~QU balcaniche))
                             (PRN
                                 (, ,)
                                 (PP (PREP come)
                                     (NP (PRO~DE quella) (ADJ~QU bulgara)))
                                  (, ,))
                               (VP (VMA~PA ossigenate)
                                   (NP (-NONE- *))
                                   (PP-LGS (PREP dai)
                                       (NP
                                           (NP (ART~DE dai) (NOU~CP traffici))
                                           (PP (PREP anti)
                                               (PUNCT -)
                                               (NP (NOU~CS embargo))))))))))))
                 (. .)) )


************** FRASE NEWS-358 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE Il) (NOU~CS Governo))
        (PP-LOC (PREP di)
            (NP (NOU~PR Tirana))))
      (PRN
          (, ,)
          (PP (PREP su)
              (NP (NOU~CS richiesta) (ADJ~QU internazionale)))
           (, ,))
        (VP (VAU~RE e')
            (VP (VAU~PA stato)
                (ADVP-TMP (ADVB poi))
                (VP (VMA~PA costretto))))
          (PP (PREP a)
              (S
                  (VP (VMA~IN intervenire)
                      (PP (PREP per)
                          (S
                              (VP (VMA~IN frenare)
                                  (NP (ART~DE i) (NOU~CP canali) (ADJ~QU illeciti)))
                               (NP-SBJ (-NONE- *-15.1033)))))
                      (NP-SBJ-15.1033 (-NONE- *-133))))
                (. .)) )


************** FRASE NEWS-359 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (NOU~CP Sequestri))
        (PP (PREP di)
            (NP (NOU~CP imbarcazioni)))
         (CONJ e)
         (NP (NOU~CP arresti)))
      (VP (VAU~RE hanno)
          (VP (VMA~PA incrinato)
              (NP
                  (NP (ART~DE i) (NOU~CP rapporti))
                  (PP (PREP tra)
                      (NP
                          (NP
                              (NP (ART~DE il) (NOU~CA clan))
                              (PP (PREP dei)
                                  (NP (ART~DE dei) (NOU~CP valonesi))))
                            (CONJ e)
                            (NP
                                (NP (ADJ~IN alcuni) (NOU~CP uomini))
                                (PP (PREP del)
                                    (NP (ART~DE del) (NOU~CS regime)))))))))
               (. .)) )


************** FRASE NEWS-360 **************

 ( (S
    (ADVP-TMP (ADVB Poi))
    (NP-LOC (PRO~LO c'))
    (VP (VAU~RE e')
        (VP (VMA~PA stato)
            (NP-EXTPSBJ-533
                (NP (ART~DE l') (NOU~CS allarme))
                (VP (VMA~PA lanciato)
                    (NP (-NONE- *))
                    (PP-TMP (PREP in)
                        (NP (NOU~CS ottobre)))
                     (PP-LGS (PREP dal)
                         (NP (ART~DE dal) (NOU~CS Fondo) (ADJ~QU monetario))))
                   (PP (PREP sulle)
                       (NP (ART~DE sulle) (NOU~CP finanziarie) (ADJ~QU albanesi))))))
           (NP-SBJ (-NONE- *-533))
           (. .)) )


************** FRASE NEWS-361 **************

 ( (S
    (NP-SBJ
        (NP-SBJ
            (NP (ART~DE Il) (NOU~CS congelamento))
            (PP (PREP dei)
                (NP
                    (NP (ART~DE dei) (NOU~CP fondi))
                    (PP (PREP delle)
                        (NP (ART~DE delle) (NOU~CP piramidi))))))
            (CONJ e)
            (NP (ART~DE il) (ADJ~PO loro) (NOU~CS fallimento)))
         (VP (VAU~RE hanno)
             (VP (VMA~PA innescato)
                 (NP (ART~DE la) (NOU~CS protesta))))
           (. .)) )


************** FRASE NEWS-362 **************

 ( (S
    (PP (PREP Per)
        (S
            (VP (VMA~IN salvare)
                (NP (ART~DE la) (NOU~CS situazione)))
             (NP-SBJ (-NONE- *-633))))
       (, ,)
       (NP-SBJ-633 (NOU~PR Berisha))
       (ADVP-TMP (ADVB adesso))
       (VP (VMA~RE ha)
           (PP-LOC (PREP in)
               (NP (NOU~CS mano)))
            (NP (NUMR due) (NOU~CP carte)))
         (. .)) )


************** FRASE NEWS-363 **************

 ( (NP
    (NP
        (NP (ART~DE Le) (NOU~CP dimissioni))
        (PP (PREP del)
            (NP (ART~DE del) (ADJ~OR primo) (NOU~CS ministro)
                (NP (NOU~PR Aleksander) (NOU~PR Meksi)))))
       (CONJ e)
       (NP
           (NP (ART~DE la)
               (ADJP (ADJ~PO propria)) (NOU~CS rielezione))
            (PP (PREP alla)
                (NP (ART~DE alla) (NOU~CS presidenza)))
             (, ,)
             (PP (PREP con)
                 (NP (ART~DE il)
                     (NP (NOU~CS voto))
                     (VP (VMA~PA previsto)
                         (NP (-NONE- *))
                         (ADVP-TMP (ADVB domani))
                         (PP-LOC (PREP in)
                             (NP (NOU~CS Parlamento)))))))
              (. .)) )


************** FRASE NEWS-364 **************

 ( (S
    (CONJ Se)
    (S
        (VP (VMA~FU riuscira')
            (PP (PREP a)
                (S
                    (VP (VMA~IN ottenere)
                        (NP
                            (NP (ART~IN un) (NOU~CS accordo))
                            (PP (PREP con)
                                (NP (ART~DE le) (NOU~CP opposizioni)))))
                       (NP-SBJ (-NONE- *-2.1033)))))
              (NP-SBJ-2.1033 (-NONE- *-12.1033)))
           (, ,)
           (ADVP (ADVB forse))
           (VP (VMA~FU sara')
               (ADJP-PRD (ADJ~QU IN_GRADO)
                   (PP (PREP di)
                       (S
                           (VP (VMA~IN svuotare)
                               (NP (ART~DE le) (NOU~CP piazze))
                               (PP (PREP dalla)
                                   (NP (ART~DE dalla) (NOU~CS protesta) (ADJ~QU politica)))
                                (PP (PREP per)
                                    (S
                                        (VP (VMA~IN affrontare)
                                            (ADVP (ADVB quindi))
                                            (NP
                                                (NP (ART~DE il) (NOU~CS problema))
                                                (PP (PREP dell')
                                                    (NP
                                                        (NP (ART~DE dell') (NOU~CS ordine) (ADJ~QU pubblico))
                                                        (PP-LOC (PREP a)
                                                            (NP (NOU~PR Valona)))))))
                                             (NP-SBJ (-NONE- *-16.1033)))))
                                    (NP-SBJ-16.1033 (-NONE- *-12.1033))))))
                        (NP-SBJ-12.1033 (-NONE- *))
                        (. .)) )


************** FRASE NEWS-365 **************

 ( (S
    (CONJ Ma)
    (CONJ se)
    (S
        (VP (VAU~FU sara')
            (VP (VMA~PA messo)
                (PP (PREP con)
                    (NP
                        (NP (ART~DE le) (NOU~CP spalle))
                        (PP-LOC (PREP al)
                            (NP (ART~DE al) (NOU~CS muro)))))
                   (PP-LGS (PREP dai)
                       (NP (ART~DE dai)
                           (NP (NOU~CA clan))
                           (SBAR
                               (NP-1333 (PRO~RE che))
                               (S
                                   (NP-SBJ (-NONE- *-1333))
                                   (NP (PRO~RI si))
                                   (VP (VAU~RE stanno)
                                       (VP (VMA~GE scontrando)
                                           (PP-LOC (PREP nel)
                                               (NP (ART~DE nel) (ADJ~PO suo) (NOU~CS partito)))))))))))
                    (NP-SBJ (-NONE- *)))
                 (, ,)
                 (ADVP (ADVB allora))
                 (NP-SBJ (ADVB anche) (ART~DE l') (NOU~PR Albania)
                     (ADJP (ADVB post)
                         (PUNCT -) (ADJ~QU comunista)))
                   (VP (VMA~FU diventera')
                       (NP-PRD
                           (NP (NOU~CS vittima))
                           (PP (PREP del)
                               (NP
                                   (NP (ART~DE del) (NOU~CS demone))
                                   (PP (PREP dei)
                                       (NP (ART~DE dei) (NOU~PR Balcani)))))))
                        (. .)) )


************** FRASE NEWS-366 **************

 ( (S
    (NP-SBJ
        (NP-SBJ
            (NP (ART~DE I)
                (' ') (NOU~CP fucilieri)
                (' '))
             (PP (PREP del)
                 (NP (ART~DE del) (NOU~CS mare)))
              (PP (PREP del)
                  (NP (ART~DE del) (NOU~CS battaglione)
                      (NP (NOU~PR SAN_MARCO) (NOU~PR SAN_MARCO)))))
             (CONJ e)
             (NP
                 (NP (ART~DE gli) (NOU~CP elicotteri))
                 (PP (PREP dell')
                     (NP (ART~DE dell') (NOU~CS Esercito) (ADJ~QU italiano)))))
            (VP (VAU~RE hanno)
                (VP (VMA~PA tratto)
                    (ADVP-LOC (ADVB IN_SALVO))
                    (ADVP-TMP (ADVB ieri))
                    (NP
                        (NP (NUMR 21) (NOU~CP-2333 cittadini) (ADJ~QU italiani))
                        (CONJ e)
                        (NP (NUMR 15)
                            (NP (-NONE- *-2333)))
                         (PP (PREP di)
                             (NP (NOU~CP Paesi) (ADJ~QU amici)))
                          (VP (VMA~PA concentrati)
                              (NP (-NONE- *))
                              (PP-LOC (PREP nell')
                                  (NP
                                      (NP (ART~DE nell') (NOU~CS inferno))
                                      (PP (PREP del)
                                          (NP
                                              (NP (ART~DE del) (NOU~CS porto) (ADJ~QU albanese))
                                              (PP (PREP di)
                                                  (NP (NOU~PR Valona)))))))))))
                       (. .)) )


************** FRASE NEWS-367 **************

 ( (S
    (S
        (NP-SBJ-133
            (NP (ART~DE L') (NOU~CS operazione))
            (PP (PREP di)
                (NP (NOU~CS salvataggio))))
          (VP (VAU~RE e')
              (VP (VMA~PA durata)
                  (ADVP (ADVB complessivamente))
                  (NP-TMP (NUMR 8) (NOU~CP minuti)))))
         (CONJ ed)
         (S
             (VP (VAU~RE e')
                 (VP (VAU~PA stata)
                     (VP (VMA~PA condotta))))
               (NP-SBJ (-NONE- *-133))
               (PP-LGS (PREP da)
                   (NP
                       (NP (NOU~CP forze) (ADJ~QU congiunte))
                       (PP (PREP della)
                           (NP (ART~DE della)
                               (NP (NOU~CS Marina))
                               (, ,)
                               (NP
                                   (NP (NOU~CS Esercito))
                                   (CONJ e)
                                   (NP (NOU~CS Aviazione)))))))
                    (PP-TMP (PREP dopo)
                        (NP (ART~DE il)
                            (NP (NOU~CA VIA_LIBERA))
                            (VP (VMA~PA formulato)
                                (NP-EXTPSBJ-933 (NOU~CA VIA_LIBERA) (-NONE- *-))
                                (NP (-NONE- *))
                                (ADVP-TMP (ADVB ieri))
                                (PP (PREP in)
                                    (NP
                                        (NP (ART~IN un) (NOU~CS vertice) (ADJ~QU interministeriale))
                                        (PP-LOC (PREP a)
                                            (NP (NOU~PR Palazzo) (NOU~PR Chigi)))))))))
                       (. .)) )


************** FRASE NEWS-368 **************

 ( (S
    (PP-LOC (PREP In)
        (NP (NOU~PR Albania)))
     (ADVP-TMP (ADVB intanto))
     (NP-SBJ
         (NP (ART~DE la) (NOU~CS situazione))
         (PP (PREP del)
             (NP (ART~DE del) (NOU~CS Paese))))
       (VP (VAU~RE sta)
           (VP (VMA~GE precipitando)
               (PP-LOC (PREP verso)
                   (NP (ART~DE la) (NOU~CS guerra) (ADJ~QU civile)))))
          (. .)) )


************** FRASE NEWS-369 **************

 ( (S
    (NP-SBJ-133 (ART~DE Il) (NOU~CS presidente) (NOU~PR Berisha)
        (PRN
            (, ,)
            (VP (VMA~PA rieletto)
                (NP (-NONE- *))
                (ADVP-TMP (ADVB ieri))
                (PP-TMP (PREP per)
                    (NP (NUMR cinque) (NOU~CP anni)))
                 (PP (PREP nella)
                     (NP (ART~DE nella) (NOU~CS carica))))
               (, ,)))
         (VP (VAU~RE ha)
             (VP (VMA~PA deciso)
                 (PRN
                     (, ,)
                     (CONJ dopo)
                     (S
                         (VP (VAU~IN aver)
                             (VP (VMA~PA dichiarato)
                                 (NP (ART~DE il) (NOU~CS coprifuoco))))
                           (NP-SBJ (-NONE- *-133)))
                        (, ,))
                     (PP (PREP di)
                         (S
                             (VP (VMA~IN inviare)
                                 (NP
                                     (NP (ART~DE i) (NOU~CP carri) (ADJ~QU armati))
                                     (PP (PREP dell')
                                         (NP (ART~DE dell') (NOU~CS esercito))))
                                   (PP-LOC (PREP verso)
                                       (NP (ART~DE il) (NOU~CS sud)))
                                    (, ,)
                                    (PP (PREP IN_DIREZIONE_DI)
                                        (NP (NOU~PR Valona)
                                            (SBAR
                                                (S
                                                    (NP-LOC (PRO~LO dove))
                                                    (VP (VMA~RE e')
                                                        (ADJP-PRD (ADJ~QU IN_CORSO))
                                                        (NP-EXTPSBJ-4133
                                                            (NP (ART~DE la) (NOU~CS rivolta) (ADJ~QU armata))
                                                            (PP (PREP contro)
                                                                (NP (ART~DE il) (NOU~CS potere) (ADJ~QU centrale)))))
                                                       (NP-SBJ (-NONE- *-4133)))))))
                                        (NP-SBJ (-NONE- *-133))))))
                            (. .)) )


************** FRASE NEWS-370 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE La) (NOU~CS notizia))
        (PP (PREP di)
            (NP (NOU~CP movimenti))
            (PP (PREP di)
                (NP (NOU~CP truppe) (ADJ~QU corazzate)))))
       (VP (VAU~RE e')
           (VP (VAU~PA stata)
               (VP (VMA~PA confermata))))
         (PP-LGS (PREP dalla)
             (NP
                 (NP (ART~DE dalla) (NOU~CS televisione) (ADJ~QU albanese))
                 (PP (PREP di)
                     (NP (NOU~CS Stato)))))
            (. .)) )


************** FRASE NEWS-371 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Il) (NOU~CS Governo))
        (PP (PREP di)
            (NP (NOU~PR Tirana))))
      (VP (VAU~RE ha)
          (VP (VMA~PA imposto)
              (NP (ART~IN un) (ADJ~QU improvviso) (NOU~CA blackout))
              (PP (PREP a)
                  (NP
                      (NP (PRDT tutti) (ART~DE gli) (NOU~CP organi))
                      (PP (PREP di)
                          (NP (NOU~CS stampa)))))))
           (. .)) )


************** FRASE NEWS-372 **************

 ( (S
    (S
        (NP-SBJ (ART~IN Un) (NOU~CS aquilone))
        (VP (VMA~RE ondeggia)
            (ADJP-PRD (ADJ~QU alto))
            (PP-LOC (PREP nel)
                (NP (ART~DE nel) (NOU~CS cielo)))
             (PP-LOC (PREP sopra)
                 (NP
                     (NP (ART~DE le) (NOU~CP teste))
                     (PP (PREP di)
                         (NP
                             (NP (ART~IN un) (NOU~CS gruppo))
                             (PP (PREP di)
                                 (NP
                                     (NP (NOU~CP uomini) (ADJ~QU armati))
                                     (VP (VMA~PA schierati)
                                         (NP (-NONE- *))
                                         (PP-LOC (PREP IN_MEZZO_A)
                                             (NP
                                                 (NP (ART~DE alla) (NOU~CS strada))
                                                 (PP-LOC (PREP fra)
                                                     (NP (NOU~PR Tirana)
                                                         (CONJ e) (NOU~PR Valona))))))))))))))
                  (, ,)
                  (S
                      (PP-LOC (PREP dietro)
                          (PP (PREP a)
                              (NP (ART~IN una)
                                  (NP (NOU~CS curva))
                                  (VP (VMA~PA protetta)
                                      (NP (-NONE- *))
                                      (PP-LGS (PREP da)
                                          (NP (ART~IN una) (NOU~CS collina)))))))
                           (VP (VMA~RE arriva)
                               (NP-EXTPSBJ-3533
                                   (NP (ART~DE l') (NOU~CA eco))
                                   (VP (VMA~PA ravvicinata)
                                       (NP (-NONE- *)))
                                    (PP (PREP di)
                                        (NP
                                            (NP
                                                (NP (NOU~CP raffiche))
                                                (PP (PREP di)
                                                    (NP (NOU~CS mitra))))
                                              (CONJ e)
                                              (NP
                                                  (NP (NOU~CP colpi) (ADJ~QU isolati))
                                                  (PP (PREP di)
                                                      (NP (NOU~CS fucile))))))))
                                    (NP-SBJ (-NONE- *-3533)))
                                 (. .)) )


************** FRASE NEWS-373 **************

 ( (NP (NOU~CP Italiani)
    (. ?)) )


************** FRASE NEWS-374 **************

 ( (S
    (S
        (NP-133 (PRO~PE Vi))
        (VP (VMA~RE consiglio)
            (PP (PREP di)
                (S
                    (VP (VMA~IN tornare)
                        (ADVP-TMP (ADVB subito))
                        (ADVP-LOC (ADVB indietro)))
                     (NP-SBJ (-NONE- *-133)))))
            (NP-SBJ (-NONE- *)))
         (PUNCT -)
         (VP (VMA~RE sibila)
             (NP-EXTPSBJ-933
                 (NP (PRO~ID uno))
                 (PP (PREP degli)
                     (NP (ART~DE degli) (NOU~CP armati))))
               (PP (PREP all')
                   (NP (ART~DE all') (NOU~CS autista))))
             (NP-SBJ (-NONE- *-933))
             (PUNCT -)
             (. .)) )


************** FRASE NEWS-375 **************

 ( (S
    (S
        (NP (PRO~PE Vi))
        (VP (VAU~RE e')
            (VP (VMA~PA andata)
                (ADVP (ADVB bene))))
          (NP-SBJ (-NONE- *)))
       (, ,)
       (S
           (CONJ se)
           (S
               (VP (VMA~IM eravate)
                   (ADJP-PRD
                       (ADJP (ADJ~QU inglesi))
                       (CONJ o)
                       (ADJP (ADJ~QU americani))))
                 (NP-SBJ (-NONE- *)))
              (VP (VMA~IM sapevamo)
                  (NP-EXTPSBJ-1233 (PRO~PE noi))
                  (CONJ come)
                  (S
                      (VP (VMA~IN trattarvi)
                          (NP (PRO~PE trattarvi)))
                       (NP-SBJ (-NONE- *-1233))))
                 (NP-SBJ (-NONE- *-1233)))
              (. .)) )


************** FRASE NEWS-376 **************

 ( (NP
    (NP
        (NP (ART~DE Il) (NOU~CS tempo))
        (PP (PREP di)
            (S
                (VP (VMA~IN incrociare)
                    (NP
                        (NP (ART~DE la) (NOU~CS canna))
                        (PP (PREP di)
                            (NP (ART~IN un) (NOU~CA kalashnikov)))
                         (VP (VMA~PA puntata)
                             (NP (-NONE- *))
                             (PP-LOC (PREP sul)
                                 (NP
                                     (NP (ART~DE sul) (NOU~CS finestrino))
                                     (PP (PREP dell')
                                         (NP (ART~DE dell') (NOU~CA auto))))))))
                       (NP-SBJ (-NONE- *)))))
              (, ,)
              (NP
                  (NP
                      (NP (ART~IN un) (ADJ~OR ultimo) (NOU~CS sguardo))
                      (PP (PREP all')
                          (NP (ART~DE all')
                              (NP (NOU~CS aquilone))
                              (SBAR
                                  (NP-2333 (PRO~RE che) (-NONE- *-))
                                  (S
                                      (NP-SBJ-2133 (-NONE- *-2333))
                                      (VP (VMA~RE continua)
                                          (ADVP (ADVB misteriosamente))
                                          (PP (PREP a)
                                              (S
                                                  (VP (VMA~IN volteggiare)
                                                      (PP-LOC (PREP in)
                                                          (NP (NOU~CS aria))))
                                                    (NP-SBJ (-NONE- *-2133))))))))))
                            (CONJ e)
                            (S
                                (NP-SBJ-2933 (ART~DE l') (NOU~CS autista))
                                (VP
                                    (VP (VAU~RE ha)
                                        (ADVP-TMP (ADVB gia'))) (VMA~PA innestato)
                                     (NP (ART~DE la) (NOU~CS retromarcia))
                                     (PP (PREP per)
                                         (S
                                             (VP (VMA~IN tornare)
                                                 (PP-LOC (PREP a)
                                                     (NP (NOU~PR Kavaja)
                                                         (, ,)
                                                         (PP-LOC (PREP a)
                                                             (NP
                                                                 (NP (NOU~CA meta'))
                                                                 (NP
                                                                     (NP (NOU~CS strada))
                                                                     (PP-LOC (PREP per)
                                                                         (NP
                                                                             (NP (ART~DE il) (NOU~CS porto))
                                                                             (PP (PREP di)
                                                                                 (NP (NOU~PR Valona)))
                                                                              (PP (ADVB ancora) (PREP IN_MANO_A)
                                                                                  (NP (ART~DE ai) (NOU~CP rivoltosi))
                                                                                  (, ,)
                                                                                  (PP (PREP come) (ADVB DEL_RESTO)
                                                                                      (NP
                                                                                          (NP (PRDT tutto) (ART~DE il) (NOU~CS Sud))
                                                                                          (PP (PREP dell')
                                                                                              (NP (ART~DE dell') (NOU~PR Albania))))
                                                                                        (ADVP (-NONE- *-5633))))))))))))
                                                          (NP-SBJ (-NONE- *-2933)))))))
                                           (. .)) )


************** FRASE NEWS-377 **************

 ( (PP
    (PP (PREP Fino)
        (PP (PREP a) (ADVB quando)))
     (. ?)) )


************** FRASE NEWS-378 **************

 ( (S
    (S
        (S
            (NP-SBJ (NOU~PR Valona)
                (, ,)
                (NP (NOU~PR Saranda)
                    (CONJ e)
                    (NP (ART~DE il) (NOU~CS Sud))))
              (VP (VMA~RE sono)
                  (PP (PREP fuori)
                      (NP (NOU~CS controllo)))))
             (CONJ ma)
             (S
                 (NP-SBJ
                     (NP (ART~DE l') (NOU~CS operazione) (ADJ~QU militare))
                     (PP (PREP per)
                         (S
                             (VP (VMA~IN riconquistarle)
                                 (NP (PRO~PE riconquistarle)))
                              (NP-SBJ (-NONE- *)))))
                     (VP
                         (VP (VAU~RE e')
                             (ADVP-TMP (ADVB gia'))) (VMA~PA iniziata))))
                 (, ,)
                 (VP (VMA~RE dichiara)
                     (NP-EXTPSBJ-2133
                         (NP
                             (NP (ART~DE il) (NOU~CS ministro))
                             (PP (PREP degli)
                                 (NP (ART~DE degli) (NOU~CP Esteri)))
                              (NP (NOU~PR Tritan) (NOU~PR Sheu)))
                           (, ,)
                           (SBAR
                               (NP-2333 (PRO~RE che))
                               (S
                                   (NP-SBJ (-NONE- *-2333))
                                   (VP
                                       (NP-2933 (PRO~RI si)) (VMA~RE fa)
                                       (VP (VMA~IN intervistare)
                                           (NP (-NONE- *-2933)))
                                        (PP-TMP (ADVB poco) (PREP dopo)
                                            (NP
                                                (NP (ART~DE la) (ADJ~QU scontata) (NOU~CS rielezione))
                                                (PP (PREP alla)
                                                    (NP
                                                        (NP (ART~DE alla) (NOU~CS presidenza))
                                                        (PP (PREP di)
                                                            (NP (NOU~PR Sali) (NOU~PR Berisha)
                                                                (, ,)
                                                                (VP (VMA~PA confermato)
                                                                    (NP (-NONE- *))
                                                                    (PP-TMP (PREP per)
                                                                        (NP (ADJ~DI altri)
                                                                            (NP (NUMR cinque)) (NOU~CP anni)))
                                                                      (PP-LGS (PREP da)
                                                                          (NP-5033 (ART~IN un)
                                                                              (NP (NOU~CS Parlamento))
                                                                              (ADJP
                                                                                  (ADJP (ADVB freneticamente) (ADJ~QU plaudente))
                                                                                  (CONJ e)
                                                                                  (S
                                                                                      (VP (VMA~PA dominato)
                                                                                          (PP-LGS (PREP dal)
                                                                                              (NP
                                                                                                  (NP (ART~DE dal) (NOU~CS Partito) (ADJ~QU democratico))
                                                                                                  (, ,)
                                                                                                  (NP (NOU~CS vincitore))
                                                                                                  (PP (PREP delle)
                                                                                                      (NP (ART~DE delle)
                                                                                                          (S
                                                                                                              (VP (VMA~PA contestate))
                                                                                                              (NP-SBJ (-NONE- *-6233)))
                                                                                                           (NP-6233
                                                                                                               (NP (NOU~CP elezioni))
                                                                                                               (PP-TMP (PREP del)
                                                                                                                   (NP (ART~DE del) (NOU~CS maggio) (ADJ~DI scorso)))))))))
                                                                                              (NP-SBJ (-NONE- *-5033))))))))))))))))))
                                              (NP-SBJ (-NONE- *-2133))
                                              (. .)) )


************** FRASE NEWS-379 **************

 ( (S
    (NP-SBJ (ART~DE La)
        (NP (ADJ~OR prima) (NOU~CS misura))
        (SBAR
            (S
                (NP (PRO~RE che))
                (VP (VAU~RE ha)
                    (VP (VMA~PA preso)
                        (NP-EXTPSBJ-733 (NOU~PR Berisha)
                            (PRN
                                (, ,)
                                (NP
                                    (PP (PREP secondo)
                                        (NP (ART~DE la) (NOU~CS Costituzione)))
                                     (NP (NOU~CS comandante) (ADJ~QU supremo))
                                     (PP (PREP delle)
                                         (NP (ART~DE delle) (NOU~CP Forze) (ADJ~QU armate))))
                                   (, ,)))))
                       (NP-SBJ (-NONE- *-733)))))
              (VP (VAU~RE e')
                  (VP (VMA~PA stato)
                      (NP-PRD
                          (NP (ART~DE il) (NOU~CS siluramento))
                          (PP (PREP di)
                              (NP (NOU~PR Sheme) (NOU~PR Kosovo)
                                  (, ,)
                                  (NP
                                      (NP (ART~DE il) (NOU~CS capo))
                                      (PP (PREP di)
                                          (NP (NOU~CS Stato) (ADJ~QU maggiore)))
                                       (SBAR
                                           (NP-3333 (PRO~RE che) (-NONE- *-))
                                           (S
                                               (NP-SBJ-3133 (-NONE- *-3333))
                                               (VP (VAU~IM aveva)
                                                   (VP (VMA~PA evitato)
                                                       (ADVP-TMP (ADVB finora))
                                                       (PP (PREP di)
                                                           (S
                                                               (VP (VMA~IN impegnare)
                                                                   (ADVP (ADVB apertamente))
                                                                   (NP (ART~DE l') (NOU~CS esercito))
                                                                   (PP (PREP per)
                                                                       (S
                                                                           (VP (VMA~IN soffocare)
                                                                               (NP (ART~DE la) (NOU~CS rivolta)))
                                                                            (NP-SBJ (-NONE- *-36.1033)))))
                                                                   (NP-SBJ-36.1033 (-NONE- *-3133))))))))))))))
                               (. .)) )


************** FRASE NEWS-380 **************

 ( (S
    (PP-133 (PREP Di)
        (NP (PRO~PE lui)))
     (ADVP (ADVB non))
     (NP-LOC (PRO~LO c'))
     (VP (VMA~RE e')
         (ADVP-TMP (ADVB piu'))
         (NP-EXTPSBJ-733
             (NP (NOU~CS bisogno))
             (PP (-NONE- *-133))))
       (NP-SBJ (-NONE- *-733))
       (. .)) )


************** FRASE NEWS-381 **************

 ( (S
    (NP-SBJ (PRDT Tutte) (ART~DE le)
        (NP (NOU~CP operazioni))
        (ADJP
            (ADJP (ADJ~QU militari))
            (CONJ e)
            (PP (PREP di)
                (NP (NOU~CS polizia)))))
       (VP (VAU~RE sono)
           (VP (VMA~PA dirette)
               (PP-LGS (PREP da)
                   (NP (NOU~PR Bashkim) (NOU~PR Gazidede)
                       (, ,)
                       (NP
                           (NP (NOU~CS comandante))
                           (PP (PREP dei)
                               (NP (ART~DE dei) (NOU~CP Servizi) (ADJ~QU segreti))))))))
             (. .)) )


************** FRASE NEWS-382 **************

 ( (S
    (NP-SBJ (PRO~DE Questo))
    (VP (VMA~RE e')
        (NP-PRD
            (NP (PRO~ID uno))
            (PP (PREP degli)
                (NP
                    (NP (ART~DE degli) (NOU~CP effetti))
                    (PP (PREP della)
                        (NP
                            (NP (ART~DE della) (NOU~CS proclamazione))
                            (PP (PREP dello)
                                (NP
                                    (NP (ART~DE dello) (NOU~CS Stato))
                                    (PP (PREP d')
                                        (NP (NOU~CS emergenza))))))))))
                (, ,)
                (PP (PREP insieme)
                    (PP
                        (PP (PREP al)
                            (NP (ART~DE al) (NOU~CS coprifuoco)
                                (PRN
                                    (-LRB- -LRB-)
                                    (PP-TMP (PREP dalle)
                                        (PP (PREP alle)))
                                     (-RRB- -RRB-))))
                            (CONJ e)
                            (PP (PREP alla)
                                (NP (ART~DE alla)
                                    (NP (NOU~CS museruola))
                                    (VP (VMA~PA infilata)
                                        (NP (-NONE- *))
                                        (ADVP (ADVB brutalmente))
                                        (PP (PREP ai)
                                            (NP
                                                (NP (ART~DE ai) (NOU~CP mezzi))
                                                (PP (PREP di)
                                                    (NP (NOU~CS informazione)))))))))))
                         (. .)) )


************** FRASE NEWS-383 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE La) (NOU~CS sede))
        (PP (PREP del)
            (NP (ART~DE del) (ADJ~QU maggior) (NOU~CS quotidiano) (ADJ~QU albanese)
                (NP (NOU~PR Koha) (NOU~PR Jone))
                (PRN
                    (, ,)
                    (VP (VMA~PA sostenuto)
                        (NP (-NONE- *))
                        (PP-LGS (PREP dal)
                            (NP (ART~DE dal)
                                (NP (NOU~CS finanziere))
                                (ADJP
                                    (ADJP (ADJ~QU americano))
                                    (PUNCT -)
                                    (ADJP (ADJ~QU ungherese)))
                                 (NP (NOU~PR George) (NOU~PR Soros)))))
                        (, ,)))))
            (VP (VAU~RE e')
                (VP (VAU~PA stata)
                    (VP (VMA~PA bruciata))))
              (PP-TMP (PREP durante)
                  (NP (ART~DE la) (NOU~CS notte)))
               (PP (PREP in)
                   (NP
                       (NP (NUMR quattro) (ADJ~DI successivi) (NOU~CP assalti))
                       (VP (VMA~PA portati)
                           (NP (-NONE- *))
                           (PP-LGS (PREP da)
                               (NP
                                   (NP (NOU~CP uomini) (ADJ~QU armati))
                                   (PP (PREP in)
                                       (NP (NOU~CP abiti) (ADJ~QU civili)))
                                    (VP (VMA~PA appoggiati)
                                        (NP (-NONE- *))
                                        (PP-LGS (PREP da)
                                            (NP
                                                (NP (PRO~ID altri))
                                                (PP (PREP in)
                                                    (NP (NOU~CS divisa)))))))))))
                         (. .)) )


************** FRASE NEWS-384 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (ART~IN Un)
            (NP (NOU~CS giornalista))
            (SBAR
                (NP-3333 (PRO~RE che))
                (S
                    (NP-SBJ (-NONE- *-3333))
                    (VP (VMA~IM alloggiava)
                        (PP-LOC (PREP nella)
                            (NP
                                (NP (ART~DE nella) (NOU~CS sede))
                                (PP (PREP del)
                                    (NP (ART~DE del) (NOU~CS quotidiano)))))))))
               (CONJ e)
               (NP (ART~DE il) (ADJ~PO suo) (NOU~CS autista)))
            (VP (VAU~RE sono)
                (VP (VMA~PA spariti)))
             (. .)) )


************** FRASE NEWS-385 **************

 ( (S
    (S
        (VP (VMA~IM Cercavano)
            (NP
                (NP (ART~DE i) (NOU~CA dossier))
                (PP (PREP sui)
                    (NP
                        (NP (ART~DE sui) (NOU~CP collegamenti))
                        (PP (PREP tra)
                            (NP
                                (NP (ART~DE il) (NOU~CS Partito) (ADJ~QU democratico))
                                (CONJ e)
                                (NP
                                    (NP (ART~DE la) (NOU~CS finanziaria))
                                    (PP (PREP di)
                                        (NP (NOU~PR Valona)
                                            (NP
                                                (" ") (NOU~PR Gjallica)
                                                (" ")))))))))))
                  (NP-SBJ (-NONE- *)))
               (PUNCT -)
               (VP (VMA~RE dice)
                   (NP-EXTPSBJ-2033 (ART~DE il) (NOU~CS direttore) (NOU~PR Lesi))
                   (, ,)
                   (CONJ mentre)
                   (S
                       (NP (PRO~RI si))
                       (VP (VMA~RE aggira)
                           (ADVP (ADVB tristemente))
                           (PP-LOC (PREP tra)
                               (NP
                                   (NP (NOU~CP scrivanie))
                                   (VP (VMA~PA carbonizzate)
                                       (NP (-NONE- *))))))
                           (NP-SBJ (-NONE- *-2033))))
                     (NP-SBJ (-NONE- *-2033))
                     (PUNCT -)
                     (. .)) )


************** FRASE NEWS-386 **************

 ( (S
    (S
        (VP
            (VP (VAU~RE Abbiamo)
                (ADVP-TMP (ADVB gia'))) (VMA~PA pubblicato)
             (NP (ADJ~IN diversi) (NOU~CP documenti)))
          (NP-SBJ (-NONE- *)))
       (CONJ ma)
       (S
           (NP (ART~DE gli) (PRO~ID altri))
           (NP (PRO~PE li))
           (VP (VMA~RE tengo)
               (ADVP (ADVB AL_SICURO))
               (PP-LOC (PREP in)
                   (NP (ART~IN un) (NOU~CS luogo) (ADJ~QU segreto))))
             (NP-SBJ (-NONE- *)))
          (. .)) )


************** FRASE NEWS-387 **************

 ( (S
    (NP-SBJ
        (ADJbar-SBJ (ADJ~IN Pochi)
            (NP (NOU~CP quotidiani)))
         (PRN
             (, ,)
             (NP (ADVB solo) (PRO~DE quelli) (ADJ~QU filogovernativi))
             (, ,)))
       (VP (VMA~FU saranno)
           (ADVP-TMP (ADVB oggi))
           (PP-PRD (PREP in)
               (NP (NOU~CS vendita))))
         (. .)) )


************** FRASE NEWS-388 **************

 ( (S
    (NP-SBJ-133 (ART~DE I) (NOU~CP giornalisti)
        (, ,)
        (NP
            (NP (ADVB anche) (ART~DE gli) (NOU~CP avversari))
            (PP (PREP degli)
                (NP
                    (NP (ART~DE degli) (ADJ~QU ex) (NOU~CP comunisti))
                    (PP (PREP in)
                        (NP
                            (NP (NOU~CS dissenso))
                            (PP (PREP con)
                                (NP (NOU~PR Berisha)))))))
                 (PRN
                     (PUNCT -)
                     (NP
                         (NP (ADVB perfino) (PRO~DE quelli))
                         (PP (PREP della)
                             (NP
                                 (NP (ART~DE della) (NOU~PR Gazeta))
                                 (PP (PREP di)
                                     (NP (NOU~PR Tirana)))
                                  (, ,)
                                  (NP
                                      (NP (NOU~CS filiazione) (ADJ~QU albanese))
                                      (PP (PREP della)
                                          (NP
                                              (NP (ART~DE della) (NOU~CS Gazzetta))
                                              (PP (PREP del)
                                                  (NP (ART~DE del) (NOU~CS Mezzogiorno)))))))))
                             (PUNCT -))))
                    (NP (PRO~RI si))
                    (VP (VMA~RE sentono)
                        (ADVP-TMP (ADVB adesso))
                        (S-PRD
                            (VP (VMA~PA minacciati))
                            (NP-SBJ (-NONE- *-133))))
                      (. .)) )


************** FRASE NEWS-389 **************

 ( (S
    (S
        (PP-TMP (PREP Dopo)
            (NP
                (NP (ART~DE i) (NOU~CP calci))
                (CONJ e)
                (NP
                    (NP (ART~DE i) (NOU~CP pugni))
                    (PP-TMP (PREP di)
                        (NP (NOU~CS domenica)))
                     (PP-LOC (PREP davanti)
                         (PP (PREP al)
                             (NP (ART~DE al) (NOU~CS Parlamento)))))))
              (, ,)
              (NP-SBJ-1333
                  (NP (ART~DE la) (NOU~CS sede))
                  (PP (PREP del)
                      (NP
                          (NP (ART~DE del) (NOU~CA Club))
                          (PP (PREP della)
                              (NP (ART~DE della) (NOU~CS stampa))))))
                  (VP (VAU~RE e')
                      (VP (VAU~PA stata)
                          (VP (VMA~PA devastata))))
                    (NP-SBJ (-NONE- *-1333)))
                 (CONJ e)
                 (S
                     (VP (VMA~PA incendiata)))
                  (. .)) )


************** FRASE NEWS-390 **************

 ( (NP (ART~IN Un)
    (NP
        (NP (ADJ~DI altro) (NOU~CS avvertimento) (ADJ~QU pesante))
        (PP (PREP della)
            (NP (ART~DE della) (NOU~PR Shik))))
      (. .)) )


************** FRASE NEWS-391 **************

 ( (S
    (PP-LOC (PREP In)
        (NP (NOU~PR Albania)))
     (PP-TMP (PREP dopo)
         (NP
             (NP
                 (NP (ART~DE il) (NOU~CS crollo))
                 (PP (PREP delle)
                     (NP (ART~DE delle)
                         (' ') (NOU~CP piramidi)
                         (' '))))
                (CONJ e)
                (NP
                    (NP (ART~DE la) (NOU~CS rivolta))
                    (PP (PREP della)
                        (NP (ART~DE della) (NOU~CS piazza))))))
            (VP (VMA~RE e')
                (ADJP-PRD (ADJ~QU IN_CORSO))
                (NP-EXTPSBJ-1833
                    (NP (ART~IN una) (NOU~CS resa))
                    (PP (PREP dei)
                        (NP (ART~DE dei) (NOU~CP conti)))
                     (SBAR
                         (S
                             (NP-LOC (PRO~LO dove))
                             (ADVP (ADVB non))
                             (NP (PRO~RI si))
                             (VP (VMA~RE tollerano)
                                 (NP (NOU~CP dissensi)))))))
                  (NP-SBJ (-NONE- *-1833))
                  (. .)) )


************** FRASE NEWS-392 **************

 ( (S
    (PP (ADVB Anche) (PREP per)
        (NP-333 (ART~DE i) (NOU~CP giornalisti) (ADJ~QU stranieri)))
     (S
         (VP-633 (VMA~IN lavorare))
         (NP-SBJ (-NONE- *-333)))
      (VP (VAU~RE e')
          (VP (VMA~PA diventato)
              (ADJP-PRD (ADJ~QU difficile))))
        (VP-SBJ (-NONE- *-633))
        (. .)) )


************** FRASE NEWS-393 **************

 ( (S
    (PP-TMP (PREP Da) (ADVB ieri))
    (NP-SBJ (PRDT tutte) (ART~DE le) (NOU~CA Tv)
        (PRN
            (, ,)
            (NP (NOU~PR Rai)
                (VP (VMA~PA compresa)
                    (NP (-NONE- *))))
              (, ,)))
        (ADVP (ADVB non))
        (VP (VMA~RE mandano)
            (ADVP-TMP (ADVB piu'))
            (NP (NOU~CP immagini))
            (CONJ perche')
            (S
                (VP (VAU~RE e')
                    (VP (VAU~PA stato)
                        (VP (VMA~PA chiuso))))
                  (NP-SBJ (-NONE- *-1833))
                  (NP-EXTPSBJ-1833
                      (NP (ART~DE il) (NOU~CS centro))
                      (PP (PREP di)
                          (NP
                              (NP (NOU~CS riversamento))
                              (PP (PREP via)
                                  (NP (NOU~CS satellite))))))))
                (. .)) )


************** FRASE NEWS-394 **************

 ( (S
    (PP-LOC (PREP Sull')
        (NP (ART~DE Sull') (ADJ~DI altro) (NOU~CS fronte)))
     (PRN
         (, ,)
         (PP-LOC (PREP a)
             (NP (NOU~PR Valona)))
          (, ,))
       (NP-SBJ (ART~DE le)
           (NP (NOU~CP bande) (ADJ~QU armate))
           (VP (VMA~PA guidate)
               (NP (-NONE- *))
               (PP-LGS (PREP da)
                   (NP (NOU~CP criminali)))))
          (ADVP-TMP (ADVB ieri))
          (VP (VAU~RE hanno)
              (VP (VMA~PA fatto)
                  (ADVP (ADVB fuori))
                  (NP
                      (NP (ART~DE l') (ADJ~QU innocente) (NOU~CS custode))
                      (PP (PREP di)
                          (NP
                              (NP (ART~IN un) (NOU~CS centro) (ADJ~QU danese))
                              (PP (PREP dell')
                                  (NP (ART~DE dell') (NOU~PR Unicef))))))
                      (CONJ mentre)
                      (S
                          (NP-SBJ
                              (NP (ART~DE i) (NOU~CP ribelli))
                              (PP (PREP di)
                                  (NP (NOU~PR Saranda)))
                               (PRN
                                   (, ,)
                                   (SBAR
                                       (NP-3333 (PRO~RE che))
                                       (S
                                           (NP-SBJ (-NONE- *-3333))
                                           (PP (PREP nell')
                                               (NP
                                                   (NP (ART~DE nell') (NOU~CS assalto))
                                                   (PP (PREP alle)
                                                       (NP (ART~DE alle) (NOU~CP caserme)))))
                                              (NP (PRO~RI si))
                                              (VP (VAU~RE sono)
                                                  (VP (VMA~PA portati)
                                                      (ADVP-LOC (ADVB via))
                                                      (NP
                                                          (NP (NUMR 2)
                                                              (NP (NUMR mila)) (NOU~CA kalashnikov))
                                                           (CONJ e)
                                                           (NP
                                                               (NP (NOU~CP casse))
                                                               (PP (PREP di)
                                                                   (NP (NOU~CP munizioni)))))))))
                                              (, ,)))
                                        (VP (VAU~RE hanno)
                                            (VP (VMA~PA organizzato)
                                                (NP (ART~DE il) (ADJ~PO loro) (NOU~CS colpo) (ADJ~QU grosso)))))))
                                 (. .)) )


************** FRASE NEWS-395 **************

 ( (NP (ART~DE Il)
    (NP (NOU~CS sequestro))
    (PP (PREP di)
        (NP (ART~IN una)
            (NP (NOU~CS nave) (ADJ~QU militare))
            (SBAR
                (NP-7333 (PRO~RE che) (-NONE- *-))
                (S
                    (NP-SBJ-733 (-NONE- *-7333))
                    (VP (VAU~RE ha)
                        (VP (VMA~PA cominciato)
                            (ADVP (ADVB lentamente))
                            (PP (PREP a)
                                (S
                                    (VP (VMA~IN solcare)
                                        (NP (ART~DE la) (NOU~CS rada))
                                        (PP-LOC (PREP davanti)
                                            (PP (PREP al)
                                                (NP (ART~DE al) (NOU~CS porto))))
                                          (S
                                              (VP (VMA~GE sparando)
                                                  (NP (NOU~CP colpi))
                                                  (PP (PREP di)
                                                      (NP (NOU~CS cannone))))
                                                (NP-SBJ (-NONE- *-12.1033))))
                                          (NP-SBJ-12.1033 (-NONE- *-733))))))))))
                  (. .)) )


************** FRASE NEWS-396 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE La) (NOU~CS follia) (ADJ~QU anarchica))
        (PP (PREP del)
            (NP (ART~DE del) (NOU~CS Sud)
                (PRN
                    (, ,)
                    (ADJP
                        (ADJP (ADJ~QU inferocito)
                            (PP (PREP per)
                                (NP
                                    (NP (ART~DE il) (NOU~CS crollo))
                                    (PP (PREP delle)
                                        (NP (ART~DE delle) (NOU~CP finanziarie))))))
                            (CONJ e)
                            (S
                                (VP (VMA~PA manovrato)
                                    (PP-LGS (PREP dalle)
                                        (NP (ART~DE dalle)
                                            (NP (NOU~CP mafie) (ADJ~QU locali))
                                            (VP (VMA~RE collegate)
                                                (NP (-NONE- *))
                                                (PP
                                                    (PP (PREP al)
                                                        (NP (ART~DE al) (NOU~CS narcotraffico)))
                                                     (CONJ e)
                                                     (PP (PREP al)
                                                         (NP
                                                             (NP (ART~DE al) (NOU~CS riciclaggio))
                                                             (PP (PREP di)
                                                                 (NP (NOU~CS denaro) (ADJ~QU sporco))))))))))
                                         (NP-SBJ (-NONE- *-533))))
                                   (, ,)))))
                       (VP (VMA~RE minaccia)
                           (PP (PREP di)
                               (S
                                   (VP (VMA~IN travolgere)
                                       (NP (ART~DE l') (NOU~PR Albania)))
                                    (NP-SBJ (-NONE- *-133)))))
                           (. .)) )


************** FRASE NEWS-397 **************

 ( (S
    (S
        (ADVP-TMP (ADVB Finora))
        (VP (VAU~RE abbiamo)
            (VP (VMA~PA evitato)
                (PP (PREP di)
                    (NP (NOU~CS proposito)))
                 (NP (ART~DE lo) (NOU~CS scontro))))
           (NP-SBJ (-NONE- *)))
        (PUNCT -)
        (VP (VMA~RE dice)
            (NP-EXTPSBJ-1033
                (NP (ART~DE il) (NOU~CS ministro))
                (PP (PREP degli)
                    (NP (ART~DE degli) (NOU~CP Esteri))) (NOU~PR Sheu)))
           (NP-SBJ (-NONE- *-1033))
           (PUNCT -)
           (. .)) )


************** FRASE NEWS-398 **************

 ( (S
    (PP (PREP Per)
        (NP (PRO~DE questo)))
     (NP-SBJ (ART~DE la) (NOU~CS polizia))
     (NP (PRO~RI si))
     (VP (VAU~IM era)
         (VP (VMA~PA ritirata)
             (PP-TMP (PREP nelle)
                 (NP (ART~DE nelle) (ADJ~DI scorse) (NOU~CP settimane)))
              (PP-LOC
                  (PP
                      (ADVP (ADVB non) (ADVB solo)) (PREP da)
                      (NP (NOU~PR Valona)))
                   (CONJ ma)
                   (PP (PREP da)
                       (NP (ADVB anche) (NOU~PR Fier)
                           (CONJ e) (NOU~PR Lushnja))))))
            (. .)) )


************** FRASE NEWS-399 **************

 ( (S
    (VP (VAU~RE Abbiamo)
        (VP (VMA~PA ripreso)
            (NP
                (NP (ART~DE il) (NOU~CS controllo))
                (PP (PREP di)
                    (NP (ADJ~DE queste) (ADJ~OR ultime)
                        (NP (NUMR due)) (NOU~CA citta'))))
               (CONJ quando)
               (S
                   (VP (VAU~RE abbiamo)
                       (VP (VMA~PA valutato)
                           (CONJ che)
                           (S
                               (VP (VMO~IM potevamo)
                                   (S
                                       (VP (VMA~IN farlo)
                                           (NP (PRO~PE farlo)))
                                        (NP-SBJ (-NONE- *-14.1033)))
                                     (S
                                         (VP (VMA~GE evitando)
                                             (NP
                                                 (NP (ART~IN un) (NOU~CS bagno))
                                                 (PP (PREP di)
                                                     (NP (NOU~CS sangue)))))
                                            (NP-SBJ (-NONE- *-14.1033))))
                                      (NP-SBJ-14.1033 (-NONE- *-12.1033)))))
                             (NP-SBJ-12.1033 (-NONE- *-2.1033)))))
                    (NP-SBJ-2.1033 (-NONE- *))
                    (. .)) )


************** FRASE NEWS-400 **************

 ( (S
    (CONJ Ma)
    (NP-SBJ
        (NP (ART~DE i) (NOU~CP ribelli))
        (PP-LOC (PREP di)
            (NP (NOU~PR Valona))))
      (VP
          (NP-TMP (NOU~CS domenica))
          (VP (VAU~IM erano)
              (ADVP-TMP (ADVB ormai))) (VMA~PA arrivati)
           (PP-LOC (PREP a)
               (NP
                   (NP (NUMR 70) (NOU~CP chilometri))
                   (PP (PREP da)
                       (NP (NOU~PR Tirana))))))
           (. .)) )


************** FRASE NEWS-401 **************

 ( (S
    (CONJ Se)
    (S
        (ADVP (ADVB non))
        (VP (VAU~IM fosse)
            (VP (VMA~PA entrato)
                (PP-LOC (PREP in)
                    (NP (NOU~CS campo)))
                 (NP-EXTPSBJ-733 (ART~DE l') (NOU~CS esercito))))
           (NP-SBJ (-NONE- *-733)))
        (ADVP-TMP (ADVB oggi))
        (VP (VMA~CO sarebbero)
            (PP-LOC (PREP nella)
                (NP (ART~DE nella) (NOU~CS capitale))))
          (NP-SBJ (-NONE- *))
          (. .)) )


************** FRASE NEWS-402 **************

 ( (VP (VMA~RE eccolo)
    (NP (PRO~PE eccolo))
    (NP (ART~DE l') (NOU~CS esercito))
    (. .)) )


************** FRASE NEWS-403 **************

 ( (S
    (PP-LOC (PREP Sulla)
        (NP
            (NP (ART~DE Sulla) (NOU~CS strada))
            (PP-LOC (PREP per)
                (NP (NOU~PR Valona)))
             (PRN
                 (PUNCT -)
                 (NP
                     (NP (NUMR 140)
                         (NP (NOU~CP chilometri)))
                      (VP (VMA~PA disseminati)
                          (NP (-NONE- *))
                          (PP (PREP di)
                              (NP (NOU~CP buche))))
                        (, ,)
                        (NP (ADVB oltre) (NUMR tre)
                            (NP (NOU~CP ore)))
                         (PP (PREP di)
                             (NP (NOU~CA auto)))
                          (PP (PREP in)
                              (NP (NOU~CP condizioni) (ADJ~QU normali)))
                           (PP-LOC (PREP dalla)
                               (NP (ART~DE dalla) (NOU~CS capitale))))
                         (PUNCT -))))
                (VP (VMA~RE viaggiano)
                    (NP-EXTPSBJ-2433 (NOU~CA camion) (ADJ~QU militari))
                    (PP (PREP in)
                        (NP (NOU~CS continuazione))))
                  (NP-SBJ (-NONE- *-2433))
                  (. .)) )


************** FRASE NEWS-404 **************

 ( (NP
    (NP (NOU~CP Colonne))
    (PP (PREP di)
        (NP
            (NP (NOU~CP uomini))
            (PP (PREP in)
                (NP (NOU~CS divisa)))
             (PP (PREP dalle)
                 (NP (ART~DE dalle) (NOU~CP facce) (ADJ~QU decise)))))
        (. .)) )


************** FRASE NEWS-405 **************

 ( (S
    (VP (VAU~RE Sono)
        (VP (VMA~PA reclutati)
            (PP-LOC (PREP al)
                (NP (ART~DE al) (NOU~CS Nord)
                    (, ,)
                    (NP
                        (NP (ART~IN un') (NOU~CS area))
                        (PP (PREP del)
                            (NP (ART~DE del) (NOU~CS Paese)))
                         (SBAR
                             (NP-1333 (PRO~RE che))
                             (S
                                 (NP-SBJ (-NONE- *-1333))
                                 (VP (VAU~RE e')
                                     (VP (VAU~PA stata)
                                         (ADVP (ADVB soltanto))
                                         (VP (VMA~PA sfiorata))))
                                   (PP-LGS (PREP dalla)
                                       (NP (ART~DE dalla) (NOU~CS protesta))))))))))
               (NP-SBJ (-NONE- *))
               (. .)) )


************** FRASE NEWS-406 **************

 ( (S
    (NP-LOC (PRO~LO Ci))
    (VP (VMA~RE sono)
        (NP-EXTPSBJ-333 (-NONE- *-)
            (NP-333 (ART~DE i)
                (NP (NOU~CP reggimenti)) (-NONE- *-)
                (ADJP (ADVB piu') (ADJ~QU fedeli)
                    (PP (PREP al)
                        (NP (ART~DE al) (NOU~CS presidente) (NOU~PR Berisha)))))
               (CONJ e)
               (NP (ART~DE i) (NOU~CP reparti) (ADJ~QU scelti))))
         (NP-SBJ (-NONE- *-333))
         (. .)) )


************** FRASE NEWS-407 **************

 ( (S
    (NP-SBJ-133 (NUMR 2) (NUMR mila))
    (VP (VMA~RE vengono)
        (PP-LOC (PREP da)
            (NP (NOU~PR Durazzo)
                (SBAR
                    (S
                        (NP-LOC (PRO~LO dove))
                        (VP (VAU~RE sono)
                            (VP (VAU~PA stati)
                                (VP (VMA~PA addestrati))))
                          (NP-SBJ (-NONE- *-133))
                          (PP (PREP alle)
                              (NP (ART~DE alle)
                                  (NP (NOU~CP missioni))
                                  (ADJP
                                      (' ') (ADJ~QU speciali)
                                      (' ')))))))))
              (. .)) )


************** FRASE NEWS-408 **************

 ( (S
    (S
        (VP (VMA~FU Saranno)
            (ADVP (ADVB forse)) (NUMR 25)
            (NP-EXTPSBJ-533 (ART~DE i)
                (NP (NOU~CP soldati))
                (SBAR
                    (NP-7333 (PRO~RE che))
                    (S
                        (NP-SBJ (-NONE- *-7333))
                        (VP
                            (VP (VAU~RE vengono)
                                (ADVP-TMP (ADVB adesso))) (VMA~PA impegnati)
                             (PP-LOC (PREP nell')
                                 (NP
                                     (NP (ART~DE nell') (NOU~CS accerchiamento))
                                     (PP (PREP di)
                                         (NP (NOU~PR Valona))))))))))
                 (NP-SBJ (-NONE- *-533)))
              (, ,)
              (S
                  (PP (PREP a)
                      (NP (PRO~DE questo)))
                   (NP (PRO~RI si))
                   (VP (VMA~RE aggiungono)
                       (NP
                           (NP
                               (NP (ART~DE i) (NOU~CP reparti))
                               (PP (PREP di)
                                   (NP (NOU~CS gendarmeria))))
                             (CONJ e)
                             (NP
                                 (NP (NOU~CP migliaia))
                                 (PP (PREP di)
                                     (NP
                                         (NP (NOU~CP uomini))
                                         (PP (PREP della)
                                             (NP (ART~DE della) (NOU~PR Shik)
                                                 (, ,)
                                                 (NP (ART~DE la)
                                                     (NP (NOU~CS polizia) (ADJ~QU segreta))
                                                     (SBAR
                                                         (NP-3333 (PRO~RE che))
                                                         (S
                                                             (NP-SBJ (-NONE- *-3333))
                                                             (PP-LOC (PREP nei)
                                                                 (NP
                                                                     (NP (ART~DE nei) (NOU~CP disordini))
                                                                     (PP (PREP di)
                                                                         (NP (NOU~PR Valona)))))
                                                                (VP (VAU~RE ha)
                                                                    (VP (VMA~PA perso)
                                                                        (NP (NUMR sei) (NOU~CP agenti)))))))))))))))
                                 (. .)) )


************** FRASE NEWS-409 **************

 ( (S
    (S
        (NP-TMP (ART~DE L') (ADJ~DI altra) (NOU~CS sera))
        (PRN
            (, ,)
            (CONJ quando)
            (S
                (VP (VAU~RE e')
                    (VP (VAU~PA stato)
                        (VP (VMA~PA votato))))
                  (NP-SBJ (-NONE- *-933))
                  (NP-EXTPSBJ-933
                      (NP (ART~DE lo) (NOU~CS stato))
                      (PP (PREP d')
                          (NP (NOU~CS emergenza)))))
                 (, ,))
              (NP-SBJ-1433 (ART~DE i) (NOU~CP parlamentari))
              (NP (PRO~RI si))
              (VP (VAU~RE sono)
                  (VP (VMA~PA alzati)
                      (ADVP (ADVB IN_PIEDI))))
                (NP-SBJ (-NONE- *-1433)))
             (CONJ e)
             (S
                 (VP (VAU~RE hanno)
                     (VP (VMA~PA tributato)
                         (NP
                             (NP (ART~IN un) (NOU~CS minuto))
                             (PP (PREP di)
                                 (NP (NOU~CS silenzio))))
                           (PP (PREP alle)
                               (NP (ART~DE alle) (NOU~CP vittime))))))
                   (. .)) )


************** FRASE NEWS-410 **************

 ( (S
    (VP (VMA~FU Sara')
        (NP-EXTPSBJ-333 (ADVB proprio) (ART~DE la) (NOU~PR Shik))
        (PP (PREP a)
            (S
                (VP (VMA~IN fare)
                    (NP (ART~DE il)
                        (" ") (NOU~CS lavoro) (ADJ~QU sporco)
                        (" ")))
                  (NP-SBJ (-NONE- *-333))))
            (, ,)
            (CONJ se)
            (VP (-NONE- *-1833))
            (CONJ e)
            (CONJ quando)
            (S
                (NP-SBJ (ART~DE l') (NOU~CS esercito))
                (VP-1833 (VMA~FU entrera')
                    (PP-LOC (PREP a)
                        (NP (NOU~PR Valona))))))
            (NP-SBJ (-NONE- *-333))
            (. .)) )


************** FRASE NEWS-411 **************

 ( (S
    (NP-SBJ (ART~DE Il) (ADJ~PO loro) (NOU~CS compito))
    (VP (VMA~FU sara')
        (NP-PRD
            (NP (PRO~DE quello))
            (PP (PREP di)
                (S
                    (VP (VMA~IN andare)
                        (NP-LOC
                            (NP (NOU~CS casa))
                            (PP (PREP per)
                                (NP (NOU~CS casa))))
                          (PP (PREP a)
                              (S
                                  (VP (VMA~IN stanare)
                                      (NP
                                          (NP (ART~DE i) (NOU~CP capi))
                                          (PP (PREP della)
                                              (NP (ART~DE della) (NOU~CS rivolta)))
                                           (, ,)
                                           (NP
                                               (NP (PRO~DE quelli))
                                               (PP (PREP dei)
                                                   (NP (ART~DE dei)
                                                       (NP (NOU~CA clan))
                                                       (SBAR
                                                           (NP-2333 (PRO~RE che))
                                                           (S
                                                               (NP-SBJ (-NONE- *-2333))
                                                               (VP (VAU~RE hanno)
                                                                   (VP (VMA~PA rotto)
                                                                       (NP
                                                                           (NP (ART~DE il) (NOU~CS patto))
                                                                           (PP (PREP con)
                                                                               (NP (ART~DE i) (NOU~CP politici)))))))))))))
                                              (NP-SBJ (-NONE- *-7.1033)))))
                                     (NP-SBJ-7.1033 (-NONE- *-233))))))
                         (. .)) )


************** FRASE NEWS-412 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE La) (NOU~CS piramide)
            (NP
                (" ") (NOU~PR Gjallica)
                (" ")))
          (ADVP (ADVB non) (ADVB soltanto))
          (VP (VMA~IM finanziava)
              (NP (ART~DE il) (NOU~CS Partito) (ADJ~QU democratico))))
        (CONJ ma)
        (S
            (VP (VAU~IM era)
                (VP (VMA~PA diventata)
                    (NP-PRD
                        (NP (PRO~ID uno))
                        (PP (PREP dei)
                            (NP
                                (NP (ART~DE dei) (NOU~CP centri))
                                (PP (PREP di)
                                    (NP (NOU~CS riciclaggio))
                                    (PP (PREP di)
                                        (NP (NOU~CS denaro) (ADJ~QU sporco))))
                                  (ADJP (ADVB piu') (ADJ~QU importanti))
                                  (PP (PREP del)
                                      (NP (ART~DE del) (NOU~PR Mediterraneo))))))))
                    (NP-SBJ (-NONE- *-133)))
                 (. .)) )


************** FRASE NEWS-413 **************

 ( (S
    (PP (PREP Secondo)
        (NP (ART~IN un)
            (NP (NOU~CS rapporto) (ADJ~QU riservato))
            (SBAR
                (NP-5333 (PRO~RE che))
                (S
                    (NP-SBJ (-NONE- *-5333))
                    (VP (VMA~RE circola)
                        (PP-LOC (PREP nei)
                            (NP (ART~DE nei) (NOU~CP Servizi) (ADJ~QU occidentali))))))))
          (, ,)
          (NP-SBJ (ART~DE l') (NOU~PR Albania))
          (VP (VAU~RE ha)
              (VP (VMA~PA lavato)
                  (' ')
                  (PP-TMP (PREP negli)
                      (NP (ART~DE negli) (ADJ~OR ultimi) (NOU~CP anni)))
                   (PP (PREP dai)
                       (NP (ART~DE dai) (NUMR 2) (NUMR mila) (-NONE- *-2633))
                       (PP (PREP ai)
                           (NP
                               (NP (ART~DE ai) (NUMR 3) (NUMR mila) (NOU~CP-2633 miliardi))
                               (PP (PREP di)
                                   (NP (NOU~CP lire)))
                                (NP
                                    (NP (NOU~CP proventi))
                                    (PP (PREP di)
                                        (NP
                                            (NP (NOU~CA attivita'))
                                            (ADJP
                                                (ADJP (ADJ~QU criminose))
                                                (CONJ e)
                                                (ADJP (ADJ~QU illecite)))
                                             (ADJP
                                                 (ADJP
                                                     (ADVP (ADVB non) (ADVB soltanto)) (ADJ~QU albanesi))
                                                  (CONJ ma)
                                                  (ADJP (ADVB anche) (ADJ~QU italiane)))))))))
                             (, ,)))
                       (' ')
                       (. .)) )


************** FRASE NEWS-414 **************

 ( (S
    (S
        (VP (VMA~RE È)
            (ADJP-PRD (ADJ~QU vero))
            (CONJ che)
            (S
                (PP-LOC (PREP dietro)
                    (NP
                        (NP (ART~DE la) (NOU~CS rivolta))
                        (PP (PREP di)
                            (NP (NOU~PR Valona)))))
                   (NP-LOC (PRO~LO ci))
                   (VP (VMA~RE sono)
                       (NP-EXTPSBJ-1133
                           (NP (ART~DE le) (NOU~CP organizzazioni))
                           (PP (PREP della)
                               (NP (ART~DE della) (NOU~CS malavita)))
                            (PRN
                                (, ,)
                                (NP
                                    (NP
                                        (NP (NOU~CP estremisti))
                                        (VP (VMA~PA legati)
                                            (NP (-NONE- *))
                                            (PP (PREP al)
                                                (NP (ART~DE al) (ADJ~QU vecchio) (NOU~CS regime) (ADJ~QU comunista)))))
                                       (CONJ e)
                                       (NP
                                           (' ') (NOU~CP scafisti)
                                           (' ')))
                                     (, ,))))
                            (NP-SBJ (-NONE- *-1133)))))
                   (CONJ ma)
                   (S
                       (S
                           (NP-SBJ (ADJ~DE questo) (NOU~CS sistema)
                               (PRN
                                   (, ,)
                                   (SBAR
                                       (S
                                           (NP-LOC (PRO~LO dove))
                                           (NP (PRO~RI si))
                                           (VP (VMA~IM scommetteva)
                                               (ADVP (ADVB allegramente))
                                               (PP (PREP nel)
                                                   (NP
                                                       (NP (ART~DE nel) (NOU~CS sogno))
                                                       (PP (PREP delle)
                                                           (NP (ART~DE delle)
                                                               (' ') (NOU~CP piramidi)
                                                               (' '))))))))
                                          (, ,)))
                                    (VP (VMA~IM era)
                                        (ADJP-PRD (ADJ~QU trasversale)
                                            (PP (PREP ai)
                                                (NP (ART~DE ai) (NOU~CP partiti))))))
                                    (CONJ e)
                                    (S
                                        (VP (VMA~IM teneva)
                                            (ADVP (ADVB insieme))
                                            (PP (PREP in)
                                                (NP
                                                    (NP (ART~IN un) (NOU~CS groviglio) (ADJ~QU inestricabile))
                                                    (PP (PREP di)
                                                        (NP (NOU~CP interessi)))))
                                               (NP (PRDT tutta) (ART~IN una)
                                                   (NP (NOU~CA societa'))
                                                   (ADVP-TMP (ADVB ancora))
                                                   (VP (VMA~PA aggrappata)
                                                       (NP (-NONE- *))
                                                       (PP (PREP ai)
                                                           (NP (ART~DE ai)
                                                               (NP (NOU~CA clan))
                                                               (VP (VMA~PA sopravvissuti)
                                                                   (NP (-NONE- *))
                                                                   (PP (PREP al)
                                                                       (NP
                                                                           (NP (ART~DE al) (NOU~CS crollo))
                                                                           (PP (PREP dello)
                                                                               (NP (ART~DE dello) (NOU~CS stalinismo)))))))))))
                                                    (NP-SBJ (-NONE- *-2833))))
                                              (. .)) )


************** FRASE NEWS-415 **************

 ( (S
    (PP (PREP Per)
        (NP (PRO~DE questo)))
     (S
         (VP-333 (VMA~IN fare)
             (NP (NOU~CS giustizia)))
          (NP-SBJ (-NONE- *)))
       (ADVP-TMP (ADVB oggi))
       (VP (VMA~RE e')
           (ADJP-PRD (ADJ~QU difficile)))
        (VP-SBJ (-NONE- *-333))
        (. .)) )


************** FRASE NEWS-416 **************

 ( (S
    (PP-LOC (PREP A)
        (NP (NOU~PR Valona)))
     (VP (VMA~IM pensavano)
         (CONJ che)
         (S
             (NP-SBJ-533 (ART~DE il) (ADJ~QU Selvaggio) (NOU~CS Est) (ADJ~QU albanese)
                 (PRN
                     (, ,)
                     (NP
                         (NP (NOU~CS punto))
                         (PP (PREP di)
                             (NP
                                 (NP (NOU~CS sbocco))
                                 (PP (PREP dei)
                                     (NP
                                         (NP (ART~DE dei) (NOU~CP traffici))
                                         (PP-LOC (PREP di)
                                             (NP (PRDT tutti) (ART~DE i) (NOU~PR Balcani))))))))
                           (, ,)))
                     (ADVP (ADVB non))
                     (VP (VMO~IM dovesse)
                         (S
                             (VP (VMA~IN finire)
                                 (ADVP-TMP (ADVB mai)))
                              (NP-SBJ (-NONE- *-533))))))
                  (NP-SBJ (-NONE- *))
                  (. .)) )


************** FRASE NEWS-417 **************

 ( (S
    (VP
        (PP (PREP Con)
            (NP (ART~DE l') (NOU~CS esercito)))
         (PRN
             (, ,)
             (ADVP (ADVB forse))
             (, ,))
          (NP-733 (PRO~RI si))
          (VP (VMA~FU riportera')
              (NP (ART~DE l') (NOU~CS ordine)))
           (CONJ ma)
           (S
               (NP-SBJ (ADJ~DE questo) (NOU~CS Paese))
               (VP (VMA~RE ha)
                   (NP (NOU~CS bisogno))
                   (PP
                       (PRN
                           (, ,)
                           (CONJ OLTRE_CHE)
                           (PP (PREP di)
                               (NP (NOU~CP soldi)))
                            (, ,))
                         (PP (PREP di)
                             (NP (ART~IN una)
                                 (NP (NOU~CS classe) (ADJ~QU dirigente) (ADJ~QU nuova))
                                 (, ,)
                                 (ADJP (ADVB piu') (ADJ~QU pulita))
                                 (, ,)
                                 (SBAR
                                     (NP-3333 (PRO~RE che))
                                     (S
                                         (NP-SBJ (-NONE- *-3333))
                                         (VP (VMA~CG restituisca)
                                             (NP (NOU~CS fiducia))
                                             (PP (PREP a)
                                                 (NP-3633
                                                     (NP (ART~IN uno) (NOU~CS Stato))
                                                     (PP (ADVB ancora) (PREP da)
                                                         (S
                                                             (VP (VMA~IN inventare)
                                                                 (NP (-NONE- *-3633)))
                                                              (NP-SBJ (-NONE- *)))))))))))))))
                       (NP-SBJ (-NONE- *-733))
                       (. .)) )


************** FRASE NEWS-418 **************

 ( (S
    (PP (PREP Dalla)
        (NP
            (NP (ART~DE Dalla) (NOU~CA radio))
            (PP (PREP dell')
                (NP (ART~DE dell') (NOU~CA auto)))))
       (NP-SBJ
           (NP (ART~DE la) (NOU~CS voce) (ADJ~QU ufficiale))
           (PP (PREP di)
               (NP (NOU~PR Tirana))))
         (VP (VMA~RE ripete)
             (ADVP (ADVB incessantemente))
             (NP
                 (NP (ART~DE l') (NOU~CS appello))
                 (PP (PREP a)
                     (S
                         (VP (VMA~IN consegnare)
                             (NP (ART~DE le) (NOU~CP armi)))
                          (NP-SBJ (-NONE- *))))))
              (. .)) )


************** FRASE NEWS-419 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~CA ultimatum))
    (VP (VAU~RE e')
        (VP (VMA~PA scaduto)
            (PP-TMP (PREP da)
                (NP (ADJ~IN qualche) (NOU~CS ora)))))
       (. .)) )


************** FRASE NEWS-420 **************

 ( (S
    (S
        (NP-SBJ
            (NP (ART~DE Le) (NOU~CP note))
            (PP (PREP del)
                (NP
                    (NP (ART~DE del) (NOU~CS Bolero))
                    (PP (PREP di)
                        (NP (NOU~PR Ravel))))))
            (VP (VAU~RE sono)
                (VP (VMA~PA alternate)
                    (PP (PREP alla)
                        (NP
                            (NP (ART~DE alla) (NOU~CS lettura))
                            (PP (PREP di)
                                (NP
                                    (NP (NOU~CP componimenti) (ADJ~QU poetici))
                                    (PP (PREP del)
                                        (NP (ART~DE del) (NOU~CA folklore) (ADJ~QU albanese))))))))))
                (, ,)
                (CONJ come)
                (S
                    (VP (VMA~IM avveniva)
                        (NP-TMP (ART~IN un) (NOU~CS tempo))
                        (CONJ quando)
                        (S
                            (S
                                (PP-LOC (PREP su)
                                    (NP (ADJ~DE questa) (NOU~CS terra)))
                                 (VP (VMA~IM regnava)
                                     (NP-EXTPSBJ-2733 (NOU~PR Enver) (NOU~PR Hoxha)))
                                  (NP-SBJ (-NONE- *-2733)))
                               (CONJ e)
                               (S
                                   (NP-SBJ-3033 (ART~DE gli) (NOU~CP albanesi))
                                   (PP (PREP per)
                                       (S
                                           (VP (VMA~IN ascoltare)
                                               (NP (ART~IN una) (NOU~CS voce))
                                               (PP-LOC (PREP dal)
                                                   (NP (ART~DE dal) (NOU~CS mondo) (ADJ~QU libero))))
                                             (NP-SBJ (-NONE- *-3033))))
                                       (NP (PRO~RI si))
                                       (VP (VMA~IM attaccavano)
                                           (ADVP (ADVB clandestinamente))
                                           (PP (PREP ai)
                                               (NP (ART~DE ai) (NOU~CP notiziari) (ADJ~QU stranieri)))))))
                                (NP-SBJ (-NONE- *)))
                             (. .)) )


************** FRASE NEWS-421 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Gli) (NOU~CP investitori) (ADJ~QU italiani))
        (PP-LOC (PREP in)
            (NP (NOU~PR Albania))))
      (VP (VMA~RE sono)
          (NP-PRD (ART~IN un) (ADJ~QU piccolo) (NOU~CS esercito)))
       (. .)) )


************** FRASE NEWS-422 **************

 ( (S
    (NP (PRO~PE L'))
    (VP (VAU~RE hanno)
        (VP (VMA~PA invasa)
            (ADVP (ADVB pacificamente))
            (S
                (VP (VMA~GE portandovi)
                    (NP-LOC (PRO~LO portandovi))
                    (NP
                        (NP (NOU~CP investimenti))
                        (, ,)
                        (NP
                            (NP
                                (NP (NOU~CS occupazione))
                                (PP (PREP per)
                                    (NP (ART~DE la) (NOU~CS popolazione) (ADJ~QU locale))))
                              (, ,)
                              (NP (NOU~CP tecnologie)))))
                     (NP-SBJ (-NONE- *-3.1033)))))
            (NP-SBJ-3.1033 (-NONE- *))
            (. .)) )


************** FRASE NEWS-423 **************

 ( (S
    (PP (PREP Per)
        (NP (ART~DE i) (ADJ~PO nostri) (ADJ~QU piccoli) (NOU~CP imprenditori)
            (PRN
                (, ,)
                (ADJP (ADVB specialmente) (ADJ~QU pugliesi))
                (, ,))))
       (NP-SBJ
           (NP (ART~DE il) (NOU~CS Paese))
           (PP (PREP delle)
               (NP (ART~DE delle) (NOU~CP Aquile))))
         (VP (VAU~RE ha)
             (VP (VMA~PA rappresentato)
                 (PP-TMP (PREP negli)
                     (NP (ART~DE negli) (ADJ~OR ultimi)
                         (NP (NUMR cinque)) (NOU~CP anni)))
                   (NP-PRD (ART~DE la)
                       (' ') (ADJ~QU nuova) (NOU~CS frontiera)
                       (' '))))
              (. .)) )


************** FRASE NEWS-424 **************

 ( (NP (ART~IN Un)
    (NP
        (NP (NOU~CS Paese))
        (SBAR
            (S
                (VP
                    (NP-LOC (PRO~LO dove))
                    (NP-EXTPSBJ-433
                        (NP (ART~DE il) (NOU~CS costo))
                        (PP (PREP del)
                            (NP (ART~DE del) (NOU~CS lavoro))))
                      (ADVP (ADVB non))
                      (VP (VMA~RE supera)
                          (NP (ART~DE i)
                              (NP (NUMR 150)) (NOU~CP dollari)
                              (PP (PREP al)
                                  (NP (ART~DE al) (NOU~CS mese)))))
                         (, ,)
                         (S
                             (S
                                 (NP-SBJ
                                     (NP (ART~DE gli) (NOU~CP utili))
                                     (PP (PREP per)
                                         (NP (ART~DE gli) (NOU~CP investitori) (ADJ~QU esteri))))
                                   (VP (VAU~RE sono)
                                       (VP (VMA~PA detassati)
                                           (PP-TMP (PREP per)
                                               (NP (NUMR cinque) (NOU~CP anni))))))
                                   (, ,)
                                   (S
                                       (NP-SBJ (ART~DE l') (NOU~PR Iva))
                                       (VP (VMA~RE e')
                                           (PP-PRD (PREP al))))))
                               (NP-SBJ (-NONE- *-433)))))
                      (. .)) )


************** FRASE NEWS-425 **************

 ( (S
    (PP-TMP (PREP Dal))
    (VP (VAU~RE sono)
        (VP (VMA~PA nate)
            (NP-EXTPSBJ-1933 (ADVB oltre)
                (NP (NUMR 500) (NOU~CP imprese) (ADJ~QU italiane)))
             (, ,)
             (PP (PREP con)
                 (NP
                     (NP (NOU~CP investimenti) (ADJ~QU complessivi))
                     (SBAR
                         (NP-2333 (PRO~RE che))
                         (S
                             (NP-SBJ (-NONE- *-2333))
                             (VP (VMA~RE superano)
                                 (NP
                                     (NP (NUMR 200))
                                     (NP (ART~DE i) (NOU~CP milioni))
                                     (PP (PREP di)
                                         (NP (NOU~CP dollari)))))))))))
              (NP-SBJ (-NONE- *-1933))
              (. .)) )


************** FRASE NEWS-426 **************

 ( (S
    (ADVP (ADVB PER_LO_PIÙ))
    (NP (PRO~RI si))
    (VP (VMA~RE tratta)
        (PP (PREP di)
            (NP
                (NP (ADJ~QU piccole) (NOU~CP imprese))
                (PP (PREP del)
                    (NP (ART~DE del)
                        (NP (NOU~CS settore))
                        (ADJP
                            (ADJP (ADJ~QU calzaturiero))
                            (, ,)
                            (ADJP
                                (ADJP (ADJ~QU impiantistico))
                                (, ,)
                                (ADJP
                                    (ADJP (ADJ~QU tessile))
                                    (, ,)
                                    (ADJP
                                        (ADJP (ADJ~QU ittico))
                                        (, ,)
                                        (ADJP (ADJ~QU agricolo)))))))))))
             (. .)) )


************** FRASE NEWS-427 **************

 ( (NP
    (PP (PREP Tra)
        (NP (ART~DE le)
            (NP (NOU~CP operazioni))
            (ADJP (ADVB piu') (ADJ~QU impegnative)
                (PP (PREP dal)
                    (NP (ART~DE dal) (NOU~CS PUNTO_DI_VISTA) (ADJ~QU finanziario))))))
        (, ,)
        (NP (PRO~DE quelle))
        (PP
            (PP (PREP dell')
                (NP (ART~DE dell')
                    (NP (NOU~CS imprenditrice) (ADJ~QU bolognese))
                    (NP (NOU~PR Cristina) (NOU~PR Busi))
                    (, ,)
                    (SBAR
                        (NP-1333 (PRO~RE che))
                        (S
                            (NP-SBJ (-NONE- *-1333))
                            (VP (VAU~RE ha)
                                (VP (VMA~PA impiantato)
                                    (PP-LOC (PREP a)
                                        (NP (NOU~PR Tirana)))
                                     (NP-2433
                                         (NP (ART~IN uno) (NOU~CS stabilimento))
                                         (PP (PREP per)
                                             (NP
                                                 (NP (ART~DE la) (NOU~CS produzione))
                                                 (PP (PREP della)
                                                     (NP (ART~DE della) (NOU~PR Coca-Cola))))))
                                         (PRN
                                             (PUNCT -)
                                             (S
                                                 (VP (VAU~RE ha)
                                                     (VP (VMA~PA comportato)
                                                         (PP (PREP in)
                                                             (NP (NUMR due) (NOU~CP fasi) (ADJ~DI successive)))
                                                          (NP
                                                              (NP (NOU~CP investimenti))
                                                              (PP (PREP per)
                                                                  (NP
                                                                      (NP (NUMR 20) (NOU~CP milioni))
                                                                      (PP (PREP di)
                                                                          (NP (NOU~CP dollari))))))))
                                                        (NP-SBJ (-NONE- *-2433))))))))))
                                (CONJ e)
                                (PP (PREP del)
                                    (NP (ART~DE del)
                                        (NP (NOU~CS gruppo) (ADJ~QU barese)) (NOU~PR Nettis)
                                        (, ,)
                                        (SBAR
                                            (NP-5333 (PRO~RE che) (-NONE- *-))
                                            (S
                                                (NP-SBJ-5133 (-NONE- *-5333))
                                                (VP (VAU~RE ha)
                                                    (VP (VMA~PA localizzato)
                                                        (PP-LOC (PREP in)
                                                            (NP (NOU~PR Albania)))
                                                         (NP
                                                             (NP (ART~IN un) (ADJ~QU nuovo) (NOU~CS stabilimento))
                                                             (PP (PREP per)
                                                                 (NP
                                                                     (NP (ART~DE la) (NOU~CS produzione))
                                                                     (PP (PREP di)
                                                                         (NP
                                                                             (NP (NOU~CP semilavorati))
                                                                             (PP (PREP in)
                                                                                 (NP (NOU~CS legno))))))))
                                                               (S
                                                                   (VP (VMA~GE investendo)
                                                                       (NP
                                                                           (NP (NUMR 12) (NOU~CP miliardi))
                                                                           (PP (PREP di)
                                                                               (NP (NOU~CP lire)))))
                                                                      (NP-SBJ (-NONE- *-5133))))))))))
                                              (. .)) )


************** FRASE NEWS-428 **************

 ( (S
    (CONJ Ed)
    (VP (VMA~RE e')
        (ADVP-TMP (ADVB sempre))
        (ADJP-PRD (ADJ~QU italiana))
        (NP-EXTPSBJ-533 (ART~DE l')
            (NP (NOU~CS impresa))
            (VP (VMA~PA impegnata)
                (NP (-NONE- *))
                (PP-LOC (PREP nel)
                    (NP
                        (NP (ART~DE nel) (ADJ~OR primo) (NOU~CS progetto) (ADJ~QU turistico))
                        (PP (PREP di)
                            (NP (ADJ~QU ampia) (NOU~CS portata)))
                         (, ,)
                         (SBAR
                             (NP-1333 (PRO~RE che))
                             (S
                                 (NP-SBJ (-NONE- *-1333))
                                 (VP (VMA~RE prevede)
                                     (NP
                                         (NP (ART~DE la) (NOU~CS realizzazione))
                                         (PP (PREP di)
                                             (NP (ART~IN un) (NOU~CS polo) (ADJ~QU nautico)))
                                          (PP-LOC (PREP nella)
                                              (NP
                                                  (NP (ART~DE nella) (NOU~CS baia))
                                                  (PP (PREP di)
                                                      (NP (NOU~PR Orikun)))
                                                   (, ,)
                                                   (PP-LOC (PREP NEI_PRESSI_DI)
                                                       (NP (NOU~PR Valona))))))))))))))
                   (NP-SBJ (-NONE- *-533))
                   (. .)) )


************** FRASE NEWS-429 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~PR Italia))
    (PRN
        (, ,)
        (PP (PREP con)
            (NP
                (NP
                    (NP
                        (NP (NUMR 309,4) (NOU~CP-633 miliardi))
                        (PP (PREP di)
                            (NP (NOU~CP lire))))
                      (PP (PREP di)
                          (NP (NOU~CA export))))
                    (CONJ e)
                    (NP (NUMR 126)
                        (NP (-NONE- *-633)))
                     (PP (PREP di)
                         (NP
                             (NP (NOU~CP importazioni))
                             (PP-TMP (PREP del)
                                 (NP (ART~DE del) (NUMR 1996)))))))
                  (, ,))
               (VP (VMA~RE e')
                   (ADVP (ADVB anche))
                   (NP-PRD
                       (NP (ART~DE il) (ADJ~OR primo) (NOU~CA partner) (ADJ~QU commerciale))
                       (PP (PREP dell')
                           (NP (ART~DE dell') (NOU~PR Albania)))))
                  (. .)) )


************** FRASE NEWS-430 **************

 ( (NP (ART~IN Un)
    (NP
        (NP (NOU~CS flusso))
        (PP (PREP di)
            (NP (NOU~CP merci)))
         (VP (VMA~PA facilitato)
             (NP (-NONE- *))
             (PP-LGS (PREP dall')
                 (NP
                     (NP (ART~DE dall') (NOU~CS istituzione))
                     (PP (PREP di)
                         (NP
                             (NP (NOU~CP traghetti))
                             (SBAR
                                 (NP-1333 (PRO~RE che))
                                 (S
                                     (NP-SBJ (-NONE- *-1333))
                                     (VP (VMA~RE collegano)
                                         (NP (NOU~PR Durazzo))
                                         (PP (PREP a)
                                             (NP (NOU~PR Bari)
                                                 (, ,)
                                                 (NP (NOU~PR Ancona)
                                                     (CONJ e) (NOU~PR Trieste)))))))))))))
                 (. .)) )


************** FRASE NEWS-431 **************

 ( (S
    (PP (PREP Per)
        (NP
            (NP (PRO~ID nessuno) (ADVB pero'))
            (PRN
                (, ,)
                (PP (PREP dei)
                    (NP (ART~DE dei)
                        (NP (ADJ~IN numerosi))
                        (NP (NOU~CP industriali) (ADJ~QU italiani))
                        (SBAR
                            (NP-9333 (PRO~RE che))
                            (S
                                (NP-SBJ (-NONE- *-9333))
                                (NP (PRO~RI si))
                                (VP (VAU~RE sono)
                                    (VP (VMA~PA affacciati)
                                        (PP-TMP (PREP in)
                                            (NP (ADJ~DE questi) (NOU~CP anni)))
                                         (PP-LOC (PREP sul)
                                             (NP (ART~DE sul) (NOU~CS mercato) (ADJ~QU albanese)))))))))
                        (, ,))))
               (NP-SBJ (ART~DE il) (NOU~CS cammino))
               (VP (VAU~RE e')
                   (VP (VMA~PA stato)
                       (ADJP-PRD (ADJ~QU facile))))
                 (. .)) )


************** FRASE NEWS-432 **************

 ( (NP
    (NP (NOU~CP Infrastrutture))
    (ADJP
        (ADJP (ADJ~QU stradali))
        (CONJ e)
        (ADJP (ADJ~QU ferroviarie)))
     (PP (PREP da)
         (NP (ADJ~OR terzo) (NOU~CS mondo)))
      (: ;)) )


************** FRASE NEWS-433 **************

 ( (NP
    (NP (NOU~CP servizi))
    (PP (PREP alle)
        (NP (ART~DE alle) (NOU~CP imprese)))
     (NP-433
         (NP (PRO~ID tutti))
         (PP (PREP da)
             (S
                 (VP (VMA~IN inventare)
                     (NP (-NONE- *-433)))
                  (NP-SBJ (-NONE- *)))))
         (: ;)) )


************** FRASE NEWS-434 **************

 ( (NP
    (NP (ADJ~QU totale) (NOU~CS incertezza))
    (PP (PREP in)
        (NP
            (NP (NOU~CS campo))
            (ADJP
                (ADJP (ADJ~QU fiscale))
                (, ,)
                (ADJP
                    (ADJP (ADJ~QU giuridico))
                    (, ,)
                    (ADJP
                        (ADJP (ADJ~QU legislativo))
                        (CONJ e)
                        (ADJP (ADJ~QU sindacale)))))))
         (: ;)) )


************** FRASE NEWS-435 **************

 ( (NP
    (NP (NOU~CA difficolta'))
    (PP (PREP a)
        (S
            (VP (VMA~IN trovare)
                (NP (NOU~CA partner) (ADJ~QU locali) (ADJ~QU affidabili)))
             (NP-SBJ (-NONE- *))))
       (: ;)) )


************** FRASE NEWS-436 **************

 ( (NP
    (NP (NOU~CP livelli) (ADJ~QU scarsissimi))
    (PP (PREP di)
        (NP (NOU~CS formazione) (ADJ~QU professionale)))
     (. .)) )


************** FRASE NEWS-437 **************

 ( (S
    (NP-PRD (PRO~DE Questi))
    (VP (-NONE- *)
        (NP-EXTPSBJ-233 (ART~DE i)
            (NP (ADJ~QU principali) (NOU~CP problemi))
            (SBAR
                (S
                    (NP-533 (PRO~RE che))
                    (VP (VAU~RE hanno)
                        (VP (VMO~PA dovuto)
                            (S
                                (VP (VMA~IN affrontare)
                                    (NP (-NONE- *-533)))
                                 (NP-SBJ (-NONE- *-933)))
                              (NP-EXTPSBJ-933 (ART~DE gli) (NOU~CP investitori) (ADJ~QU italiani))))
                        (NP-SBJ (-NONE- *-933))))))
            (NP-SBJ (-NONE- *-233))
            (. .)) )


************** FRASE NEWS-438 **************

 ( (PP
    (PP (PREP Senza)
        (S
            (VP (VMA~IN contare)
                (NP
                    (NP (ART~DE la)
                        (NP (NOU~CS corruzione))
                        (ADJP (ADVB pressoche') (ADJ~QU generalizzata)))
                     (, ,)
                     (NP
                         (NP
                             (NP (ART~DE lo) (NOU~CS strapotere))
                             (PP (PREP della)
                                 (NP (ART~DE della) (NOU~CS burocrazia) (ADJ~QU locale))))
                           (CONJ e)
                           (NP (ART~DE la)
                               (VP (VMA~PE dilagante)
                                   (NP (-NONE- *)))
                                (NP (NOU~CA criminalita'))
                                (SBAR
                                    (NP-1333 (PRO~RE che))
                                    (S
                                        (NP-SBJ (-NONE- *-1333))
                                        (PP-TMP (ADVB ormai) (PREP da)
                                            (NP (NUMR tre) (NOU~CP anni)))
                                         (VP (VMA~RE costringe)
                                             (NP-2333 (ART~DE gli)
                                                 (NP (NOU~CP imprenditori) (ADJ~QU stranieri))
                                                 (SBAR
                                                     (NP-2333 (PRO~RE che) (-NONE- *-))
                                                     (S
                                                         (NP-SBJ-2633 (-NONE- *-2333))
                                                         (ADVP (ADVB non))
                                                         (VP (VMO~RE vogliono)
                                                             (S
                                                                 (VP (VMA~IN rischiare)
                                                                     (NP (ART~DE la) (ADJ~PO propria) (NOU~CA incolumita')))
                                                                  (NP-SBJ (-NONE- *-2633)))))))
                                                   (PP (PREP a)
                                                       (S
                                                           (VP (VMA~IN girare)
                                                               (PP-LOC (PREP per)
                                                                   (NP (ART~DE l') (NOU~PR Albania)))
                                                                (PP
                                                                    (PP (PREP con)
                                                                        (NP (ART~DE la) (NOU~CS scorta)))
                                                                     (CONJ o)
                                                                     (PP (PREP con)
                                                                         (NP (ADVB QUANTO_MENO)
                                                                             (NP (NOU~CP radiomobili))
                                                                             (SBAR
                                                                                 (NP-4333 (PRO~RE che))
                                                                                 (S
                                                                                     (NP-SBJ (-NONE- *-4333))
                                                                                     (NP (PRO~PE li))
                                                                                     (VP (VMA~CG colleghino)
                                                                                         (ADVP (ADVB costantemente))
                                                                                         (PP (PREP con)
                                                                                             (NP
                                                                                                 (NP (ART~DE i) (ADJ~PO loro) (NOU~CP referenti))
                                                                                                 (PP-LOC (PREP a)
                                                                                                     (NP (NOU~PR Tirana))))))))))))
                                                                       (NP-SBJ (-NONE- *-2333)))))))))))
                                            (NP-SBJ (-NONE- *))))
                                      (. .)) )


************** FRASE NEWS-439 **************

 ( (S
    (S
        (NP-SBJ-133 (PRO~ID Molti))
        (VP (VAU~RE hanno)
            (VP (VMA~PA rinunciato)
                (PP (PREP all')
                    (NP (ART~DE all') (NOU~CS avventura) (ADJ~QU albanese))))))
        (, ,)
        (S
            (VP
                (VP (VAU~RE hanno)
                    (VP (VMA~PA chiuso)
                        (NP
                            (NP (ART~DE i) (NOU~CP battenti))
                            (PP (PREP delle)
                                (NP (ART~DE delle)
                                    (NP (NOU~CP fabbrichette))
                                    (SBAR
                                        (S
                                            (NP (PRO~RE che))
                                            (VP (VAU~IM avevano)
                                                (VP (VMA~PA avviato)
                                                    (PP (PREP con)
                                                        (NP (ADJ~IN tanta) (NOU~CS fatica)))))
                                               (NP-SBJ (-NONE- *-9.1033)))))))))
                          (CONJ e)
                          (S
                              (VP (VAU~RE sono)
                                  (VP (VMA~PA tornati)
                                      (PP-LOC (PREP in)
                                          (NP (NOU~PR Italia)))))
                                 (NP-SBJ (-NONE- *-9.1033))))
                           (NP-SBJ-9.1033 (-NONE- *-133)))
                        (. .)) )


************** FRASE NEWS-440 **************

 ( (S
    (CONJ Ma)
    (NP-SBJ
        (NP-SBJ (PRO~RE-233 chi))
        (SBAR
            (S
                (VP (VAU~RE ha)
                    (VP (VMA~PA tenuto)
                        (ADJP (ADJ~QU duro))
                        (PP-TMP (PREP negli)
                            (NP (ART~DE negli) (NOU~CP anni) (ADJ~DI scorsi)))))
                   (NP-SBJ (-NONE- *-4333)))
                (NP-4333 (-NONE- *-233))))
          (, ,)
          (ADVP (ADVB non))
          (VP (VMA~RE sembra)
              (ADJP-PRD (ADJ~QU intenzionato)
                  (PP (PREP ad)
                      (S
                          (VP (VMA~IN arrendersi)
                              (NP (PRO~RI arrendersi))
                              (PP-LOC (PREP DI_FRONTE_A)
                                  (NP
                                      (NP (ART~DE alla) (NOU~CA crisi))
                                      (PP-TMP (PREP di)
                                          (NP (ADJ~DE questi) (NOU~CP giorni))))))
                              (NP-SBJ (-NONE- *-233))))))
                  (. .)) )


************** FRASE NEWS-441 **************

 ( (S
    (S
        (PP (PREP Secondo)
            (NP (NOU~PR Luigi) (NOU~PR Fabri)
                (, ,)
                (NP
                    (NP (NOU~CS presidente))
                    (PP (PREP del)
                        (NP
                            (NP (ART~DE del) (NOU~CS comitato))
                            (PP (PREP degli)
                                (NP (ART~DE degli) (NOU~CP imprenditori) (ADJ~QU italiani))))))))
              (PP-LOC (PREP in)
                  (NP (NOU~PR Albania)))
               (NP-SBJ (ART~DE il) (NOU~CS rischio))
               (VP (VMA~RE fa)
                   (NP (NOU~CS parte))
                   (PP (PREP dell')
                       (NP (ART~DE dell') (NOU~CA attivita') (ADJ~QU imprenditoriale)))))
              (CONJ e)
              (S
                  (VP (VMA~RE credo)
                      (CONJ che)
                      (S
                          (NP-SBJ (ADJ~DE questa) (NOU~CS esperienza))
                          (VP (VMA~CG sia)
                              (ADJP-PRD (ADJ~QU interessante))
                              (, ,)
                              (PP (PREP malgrado)
                                  (NP (PRO~ID tutto))))))
                      (NP-SBJ (-NONE- *)))
                   (. .)) )


************** FRASE NEWS-442 **************

 ( (S
    (VP (VAU~RE Sono)
        (VP (VMA~PA calati)
            (PP-LOC (PREP dagli)
                (NP (ART~DE dagli) (NOU~CP elicotteri)))
             (PP (PREP come)
                 (NP (NOU~CP fulmini)))
              (NP-EXTPSBJ-733
                  (NP (NUMR 15))
                  (NP (ART~DE i) (NOU~CP fucilieri))
                  (PP (PREP di)
                      (NP (NOU~CS marina)))
                   (SBAR
                       (NP-1333 (PRO~RE che))
                       (S
                           (NP-SBJ (-NONE- *-1333))
                           (PRN
                               (, ,)
                               (PP (PREP con)
                                   (NP-1633 (ART~IN un')
                                       (NP (NOU~CS operazione))
                                       (PUNCT -)
                                       (NP (NOU~CS lampo)) (S+REDUC
                                           (S
                                               (S
                                                   (VP (VMA~PA durata)
                                                       (ADVP (ADVB solo))
                                                       (NP-TMP (NUMR 8) (NOU~CP minuti)))
                                                    (NP-SBJ-19.1033 (-NONE- *-1633))))
                                              (CONJ e)
                                              (S
                                                  (VP (VMA~PA compiuta)
                                                      (PP-LOC (PREP in)
                                                          (NP (NOU~CS territorio) (ADJ~QU albanese))))
                                                    (NP-SBJ (-NONE- *-19.1033))))))
                                        (, ,))
                                     (VP (VAU~RE hanno)
                                         (VP (VMA~PA portato)
                                             (ADVP-LOC (ADVB IN_SALVO))
                                             (PP-LOC (PREP dall')
                                                 (NP
                                                     (NP (ART~DE dall') (NOU~CS inferno))
                                                     (PP (PREP di)
                                                         (NP (NOU~PR Valona)))))
                                                (NP (NUMR 36) (NOU~CP persone)))))))))
                           (NP-SBJ (-NONE- *-733))
                           (. .)) )


************** FRASE NEWS-443 **************

 ( (NP
    (NP (NUMR 21) (NOU~CP italiani))
    (CONJ e)
    (NP
        (NP (NUMR 15))
        (PP (PREP di)
            (NP (NOU~CP Paesi) (ADJ~QU amici))))
      (. .)) )


************** FRASE NEWS-444 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~CS incursione)
        (PRN
            (, ,)
            (VP
                (VP (VMA~PA approvata)
                    (PP-TMP (PREP NEL_CORSO_DI)
                        (NP
                            (NP (ART~IN un) (ADJ~QU improvviso) (NOU~CA summit))
                            (PP-LOC (PREP a)
                                (NP (NOU~PR Palazzo) (NOU~PR Chigi))))))
                    (NP (-NONE- *))
                    (, ,)
                    (CONJ e)
                    (S
                        (VP (VMA~PA coperta)
                            (PP-TMP (PREP fino)
                                (PP (PREP alla)
                                    (NP (ART~DE alla)
                                        (ADJP (ADJ~PO sua)) (NOU~CS realizzazione))))
                               (PP-LGS (PREP dal)
                                   (NP (ART~DE dal) (NOU~CS segreto) (ADJ~QU militare))))
                             (NP-SBJ (-NONE- *-4.1033))))
                       (, ,)))
                 (VP (VAU~IM era)
                     (VP (VMA~PA iniziata)
                         (PP-TMP (PREP alle)
                             (NP
                                 (NP (ART~DE alle) (ADJ~OR prime) (NOU~CP ore))
                                 (PP (PREP del)
                                     (NP
                                         (NP (ART~DE del) (NOU~CS pomeriggio))
                                         (PP (PREP di) (ADVB ieri))))))
                             (CONJ quando)
                             (S
                                 (NP-SBJ
                                     (NP (ART~DE la) (NOU~CS nave))
                                     (PP (PREP della)
                                         (NP (ART~DE della) (NOU~CS marina) (ADJ~QU militare) (ADJ~QU italiana)))
                                      (NP (ADJ~QU San) (NOU~PR Giorgio)))
                                   (VP (VAU~RE ha)
                                       (VP (VMA~PA lasciato)
                                           (NP
                                               (NP (ART~DE il) (NOU~CS porto))
                                               (PP-LOC (PREP di)
                                                   (NP (NOU~PR Brindisi))))
                                             (PP (PREP con)
                                                 (PP-5033 (PREP a)
                                                     (NP (NOU~CS bordo)))
                                                  (NP
                                                      (NP
                                                          (NP (ART~IN degli) (NOU~CP elicotteri))
                                                          (PP (-NONE- *-5033))
                                                          (PRN
                                                              (-LRB- -LRB-)
                                                              (NP
                                                                  (NP
                                                                      (ADVP (ADVB non)) (PRO~ID meno))
                                                                   (CONJ di)
                                                                   (NP (NUMR sei)))
                                                                (-RRB- -RRB-)))
                                                          (CONJ e)
                                                          (NP
                                                              (NP (ADJ~IN diversi) (NOU~CP uomini))
                                                              (PP (PREP del)
                                                                  (NP (ART~DE del) (NOU~CS reggimento)
                                                                      (NP
                                                                          (NP (NOU~CP fucilieri))
                                                                          (PP (PREP di)
                                                                              (NP (NOU~CS marina))))
                                                                        (NP (ADJ~QU San) (NOU~PR Marco))))))))))))
                                          (. .)) )


************** FRASE NEWS-445 **************

 ( (S
    (NP-SBJ (ART~DE La) (NOU~CS nave))
    (VP
        (VP (VAU~RE ha)
            (ADVP (ADVB quindi))) (VMA~PA raggiunto)
         (NP (ART~DE la)
             (NP (NOU~CS fregata)) (NOU~PR Aliseo)
             (SBAR
                 (NP-9333 (PRO~RE che))
                 (S
                     (NP-SBJ (-NONE- *-9333))
                     (NP (PRO~RI si))
                     (VP (VMA~IM trovava)
                         (PRN
                             (, ,)
                             (PP (PREP per)
                                 (NP
                                     (NP (NOU~CP operazioni))
                                     (PP (PREP di)
                                         (NP (ADJ~QU normale) (NOU~CS pattugliamento)))))
                                (, ,))
                             (PP-LOC (PREP al)
                                 (NP
                                     (NP (ART~DE al) (NOU~CS limite))
                                     (PP (PREP delle)
                                         (NP (ART~DE delle) (NOU~CP acque) (ADJ~QU territoriali)))))
                                (PP (PREP con)
                                    (PP-2533 (PREP a)
                                        (NP (NOU~CS bordo)))
                                     (NP
                                         (NP (ART~IN un) (ADJ~DI altro) (NOU~CS elicottero))
                                         (PP (-NONE- *-2533)))))))))
                    (. .)) )


************** FRASE NEWS-446 **************

 ( (S
    (S
        (CONJ Quando)
        (S
            (NP-SBJ (ART~DE le)
                (NP (NUMR due)) (NOU~CP navi))
             (VP (VAU~RE hanno)
                 (VP (VMA~PA raggiunto)
                     (NP (ART~DE le)
                         (NP (NOU~CP posizioni))
                         (VP (VMA~PA prefissate)
                             (NP (-NONE- *)))))))
              (, ,)
              (NP-SBJ-1133
                  (NP (ART~DE gli) (NOU~CP elicotteri))
                  (PP (PREP da)
                      (NP (NOU~CS trasporto)))
                   (PP (PREP dell')
                       (NP (ART~DE dell') (NOU~CS esercito))))
                 (NP (PRO~RI si))
                 (VP (VAU~RE sono)
                     (VP (VMA~PA alzati)
                         (PP (PREP in)
                             (NP (NOU~CS volo))))))
                 (CONJ e)
                 (S
                     (VP (VAU~RE hanno)
                         (VP (VMA~PA raggiunto)
                             (NP
                                 (NP (ART~DE il) (NOU~CS porto) (ADJ~QU albanese))
                                 (PP (PREP di)
                                     (NP (NOU~PR Valona))))
                               (, ,)
                               (S
                                   (VP (VMA~GE prelevando)
                                       (PRN
                                           (, ,)
                                           (PP (PREP con)
                                               (NP
                                                   (NP (ART~DE la) (NOU~CS protezione))
                                                   (PP (PREP degli)
                                                       (NP
                                                           (NP (ART~DE degli) (NOU~CP uomini))
                                                           (PP (PREP del)
                                                               (NP (ART~DE del) (ADJ~QU San) (NOU~PR Marco)))))))
                                                (, ,))
                                             (NP
                                                 (NP (ART~DE il) (NOU~CS gruppo))
                                                 (PP (PREP di)
                                                     (NP
                                                         (NP (NOU~CP italiani))
                                                         (CONJ e)
                                                         (NP (NOU~CP stranieri))))
                                                   (SBAR
                                                       (NP-4333 (PRO~RE che))
                                                       (S
                                                           (NP-SBJ (-NONE- *-4333))
                                                           (VP (VAU~IM era)
                                                               (VP (VAU~PA stato)
                                                                   (ADVP-TMP (ADVB gia'))
                                                                   (VP (VMA~PA concentrato))))
                                                             (PP-LOC (PREP sul)
                                                                 (NP (ART~DE sul) (NOU~CS luogo)))))))
                                                  (NP-SBJ (-NONE- *-24.1033)))))
                                         (NP-SBJ-24.1033 (-NONE- *-1133)))
                                      (. .)) )


************** FRASE NEWS-447 **************

 ( (S
    (S
        (NP-SBJ-133
            (NP-SBJ (NUMR Due) (NOU~PR Tornado))
            (PP (PREP dell')
                (NP (ART~DE dell') (NOU~CS aviazione) (ADJ~QU militare) (ADJ~QU italiana))))
          (VP (VMA~IM sorvegliavano)))
       (CONJ e)
       (S
           (VP (VMA~IM davano)
               (NP (NOU~CS copertura) (ADJ~QU aerea)))
            (NP-SBJ (-NONE- *-133)))
         (. .)) )


************** FRASE NEWS-448 **************

 ( (S
    (NP-SBJ (ART~DE L') (ADJ~QU intera) (NOU~CS operazione))
    (PRN
        (, ,)
        (PP (PREP in)
            (NP
                (NP (ADJ~QU pieno) (NOU~CS accordo))
                (PP (PREP con)
                    (NP (ART~DE le) (NOU~CA autorita') (ADJ~QU albanesi)))))
           (, ,))
        (VP (VAU~RE e')
            (VP (VMA~PA durata)
                (NP-TMP
                    (NP (ART~IN un) (NOU~CS paio))
                    (PP (PREP di)
                        (NP (NOU~CP ore))))))
            (. .)) )


************** FRASE NEWS-449 **************

 ( (S
    (NP-SBJ (PRDT Tutte) (ART~DE le) (NOU~CP persone))
    (VP (VAU~RE sono)
        (VP (VAU~PA state)
            (ADVP-TMP (ADVB poi))
            (VP (VMA~PA trasportate))))
      (PP-LOC (PREP a)
          (NP (NOU~PR Brindisi)))
       (. .)) )


************** FRASE NEWS-450 **************

 ( (S
    (CONJ E)
    (VP (VMO~CO potrebbero)
        (S
            (VP (VMA~IN essere)
                (NP-PRD (NUMR duemila)))
             (NP-SBJ (-NONE- *-533)))
          (NP-EXTPSBJ-533 (ART~DE gli)
              (NP (NOU~CP italiani))
              (ADJP (ADVB ancora) (ADJ~QU presenti)
                  (PP (PREP in)
                      (NP (NOU~PR Albania)))))
             (PP-TMP (PREP dopo)
                 (NP
                     (NP (ART~DE l') (NOU~CS evacuazione))
                     (PP (PREP di)
                         (NP (NOU~PR Valona))))))
             (NP-SBJ (-NONE- *-533))
             (. .)) )


************** FRASE NEWS-451 **************

 ( (S
    (NP-SBJ (ART~DE La) (NOU~CS stima))
    (VP (VMA~RE e')
        (PP-PRD (PREP dell')
            (NP
                (NP (ART~DE dell') (NOU~CA Unita'))
                (PP (PREP di)
                    (NP (NOU~CA crisi)))
                 (PP (PREP della)
                     (NP (ART~DE della) (NOU~PR Farnesina)))
                  (SBAR
                      (NP-1333 (PRO~RE che) (-NONE- *-))
                      (S
                          (NP-SBJ-1033 (-NONE- *-1333))
                          (VP (VMA~RE valuta)
                              (PP-PRD (PREP in)
                                  (NP (NUMR 2000)
                                      (PUNCT -) (NUMR 2500)))
                                (, ,)
                                (NP
                                    (NP (ART~DE il) (NOU~CS numero))
                                    (PP (PREP dei)
                                        (NP (ART~DE dei) (ADJ~PO nostri) (NOU~CP connazionali)))
                                     (SBAR
                                         (NP-2333 (PRO~RE che))
                                         (S
                                             (NP-SBJ (-NONE- *-2333))
                                             (ADVP (ADVB abitualmente))
                                             (NP (PRO~RI si))
                                             (VP (VMA~RE trova)
                                                 (PP-LOC (PREP nel)
                                                     (NP
                                                         (NP (ART~DE nel)
                                                             (" ") (NOU~CS Paese)
                                                             (" "))
                                                          (PP (PREP delle)
                                                              (NP (ART~DE delle) (NOU~CP Aquile)))))))))
                                         (, ,)
                                         (S
                                             (VP (VMA~GE calcolando)
                                                 (NP
                                                     (NP (ADVB anche) (ART~DE i) (ADJ~IN tantissimi) (NOU~CP operatori) (ADJ~QU economici))
                                                     (PP (PREP delle)
                                                         (NP (ART~DE delle)
                                                             (NP
                                                                 (NP (NUMR 500)) (NOU~CP imprese))
                                                              (CONJ e)
                                                              (NP
                                                                  (NP (NOU~CA joint-venture) (ADJ~QU italiane))
                                                                  (SBAR
                                                                      (NP-4333 (PRO~RE che))
                                                                      (S
                                                                          (NP-SBJ (-NONE- *-4333))
                                                                          (VP (VMA~RE fanno)
                                                                              (NP (ART~DE la) (NOU~CS spola))
                                                                              (PP (PREP con)
                                                                                  (NP (ART~DE l') (NOU~PR Italia)))))))))))
                                                       (NP-SBJ (-NONE- *-1033)))))))))
                                  (. .)) )


************** FRASE NEWS-452 **************

 ( (S
    (NP-SBJ-133 (ART~DE I) (NOU~CP connazionali))
    (VP (VMA~RE sono)
        (NP-PRD
            (ADVP (ADVB quasi)) (PRO~ID tutti))
         (ADJP-PRD (ADJ~QU concentrati)
             (PP-LOC (PREP a)
                 (NP (NOU~PR Tirana)
                     (, ,)
                     (NP (NOU~PR Scutari)
                         (CONJ e)
                         (NP (NOU~PR Durazzo)
                             (PRN
                                 (, ,)
                                 (SBAR
                                     (S
                                         (NP-1433 (PRO~LO dove))
                                         (NP (PRO~RI si))
                                         (VP (VMA~RE ritiene)
                                             (S
                                                 (ADVP (ADVB non))
                                                 (VP (VMA~CG corrano)
                                                     (NP-18.1133 (-NONE- *-1433))
                                                     (NP (ADJ~QU particolari) (NOU~CP rischi))
                                                     (NP-LOC (-NONE- *-18.1133)))
                                                  (NP-SBJ (-NONE- *-133))))))
                                      (, ,)))))))
                    (ADVP (ADVB anche))
                    (CONJ se)
                    (S
                        (VP (VMA~RE resta)
                            (ADJP-PRD (ADJ~QU valido))
                            (NP-EXTPSBJ-2633
                                (NP (ART~DE l') (NOU~CS invito))
                                (PP (PREP della)
                                    (NP (ART~DE della) (NOU~PR Farnesina)))
                                 (PP (PREP a)
                                     (S
                                         (ADVP (ADVB non))
                                         (VP (VMA~IN recarsi)
                                             (NP (PRO~RI recarsi))
                                             (PP-LOC (PREP in)
                                                 (NP (NOU~PR Albania))))
                                           (NP-SBJ (-NONE- *))))))
                               (NP-SBJ (-NONE- *-2633))))
                         (. .)) )


************** FRASE NEWS-453 **************

 ( (S
    (CONJ E)
    (PP (PREP DI_FRONTE_A)
        (NP (ART~DE al)
            (S
                (VP (VMA~IN deteriorarsi)
                    (NP (PRO~RI deteriorarsi))
                    (PP-SBJ (PREP della)
                        (NP (ART~DE della) (NOU~CS situazione)))
                     (PP-LOC (PREP in)
                         (NP (NOU~PR Albania)))))))
          (, ,)
          (NP (PRO~RI si))
          (VP (VMA~RE apprende)
              (CONJ che)
              (S
                  (NP-SBJ-1433 (ART~DE la) (NOU~PR Farnesina))
                  (VP (VAU~RE e')
                      (VP (VMA~PA tornata)
                          (ADVP-TMP (ADVB ieri))
                          (PP (PREP a)
                              (S
                                  (VP (VMA~IN ribadire)
                                      (PP (PREP al)
                                          (NP (ART~DE al)
                                              (ADVP (ADVB neo))
                                              (VP (VMA~PA eletto)
                                                  (NP (-NONE- *)))
                                               (NP (NOU~CS presidente))
                                               (NP (NOU~PR Sali) (NOU~PR Berisha))))
                                         (NP
                                             (NP (ART~DE l') (NOU~CS importanza))
                                             (PP (PREP della)
                                                 (NP
                                                     (NP (ART~DE della) (NOU~CS costituzione))
                                                     (PRN
                                                         (, ,)
                                                         (PP-TMP (PREP in)
                                                             (NP (NOU~CP tempi) (ADJ~QU brevi)))
                                                          (, ,))
                                                       (PP (PREP di)
                                                           (NP (ART~IN un)
                                                               (NP (NOU~CS Governo))
                                                               (ADJP (ADVB ampiamente) (ADJ~QU rappresentativo)
                                                                   (PP (PREP delle)
                                                                       (NP (ART~DE delle) (NOU~CP forze) (ADJ~QU politiche) (ADJ~QU albanesi))))))))))
                                               (NP-SBJ (-NONE- *-1433))))))))
                             (. .)) )


************** FRASE NEWS-454 **************

 ( (NP (ART~IN Un)
    (NP
        (NP (NOU~CS Governo))
        (PP (PREP di)
            (NP (ADVB IN_SOSTANZA)
                (NP (NOU~CA unita') (ADJ~QU nazionale)))))
       (. .)) )


************** FRASE NEWS-455 **************

 ( (S
    (NP-SBJ (PRO~RI Si))
    (VP (VMA~RE ritiene)
        (CONJ che)
        (S
            (PRN
                (, ,)
                (PP (PREP nel)
                    (NP
                        (NP (ART~DE nel) (ADJ~QU pieno) (NOU~CS rispetto))
                        (PP (PREP dei)
                            (NP (ART~DE dei) (NOU~CP principi) (ADJ~QU democratici)))))
                   (, ,))
                (NP-SBJ-1233 (ART~DE il) (ADJ~QU nuovo) (NOU~CS Governo))
                (VP (VMO~CG debba)
                    (PP (PREP come)
                        (NP (ADJ~OR primo) (NOU~CS atto)))
                     (S
                         (VP (VMA~IN elaborare)
                             (NP
                                 (NP (ART~IN una) (NOU~CS piattaforma) (ADJ~QU congiunta))
                                 (PP (PREP d')
                                     (NP (NOU~CS emergenza))))
                               (, ,)
                               (PP
                                   (PP
                                       (CONJ sia) (PREP per)
                                       (NP-2833
                                           (NP (PRO~RE quanto))
                                           (SBAR
                                               (S
                                                   (VP (VMA~RE riguarda)
                                                       (NP
                                                           (NP (ART~DE la) (NOU~CS situazione))
                                                           (PP (PREP dell')
                                                               (NP (ART~DE dell') (NOU~CS ordine) (ADJ~QU pubblico)))
                                                            (PP-LOC (PREP nel)
                                                                (NP (ART~DE nel) (NOU~CS Paese)))))
                                                       (NP-SBJ (-NONE- *-2833))))))
                                           (CONJ sia)
                                           (PP (PREP per)
                                               (NP (ART~DE la)
                                                   (NP (NOU~CA crisi) (ADJ~QU finanziaria))
                                                   (VP (VMA~PA legata)
                                                       (NP (-NONE- *))
                                                       (PP (PREP al)
                                                           (NP
                                                               (NP (ART~DE al) (NOU~CS fallimento))
                                                               (PP (PREP delle)
                                                                   (NP (ART~DE delle)
                                                                       (' ') (NOU~CP piramidi)
                                                                       (' ') (ADJ~QU finanziarie))))))))))))
                                      (NP-SBJ (-NONE- *-1233))))
                                (. .)) )


************** FRASE NEWS-456 **************

 ( (S
    (VP (VMA~RE Appare)
        (ADJP-PRD (ADJ~QU opportuno))
        (PRN
            (, ,)
            (PP (PREP secondo)
                (NP (ART~DE la) (NOU~PR Farnesina)))
             (, ,))
          (CONJ che)
          (S
              (PP (PREP sul)
                  (NP
                      (NP (ART~DE sul) (NOU~CS piano))
                      (PP (PREP dell')
                          (NP (ART~DE dell') (NOU~CS ordine) (ADJ~QU pubblico)))))
                 (PRN
                     (, ,)
                     (PP-TMP (PREP in)
                         (NP (ADJ~DE questo)
                             (NP (NOU~CS momento))
                             (ADJP (ADVB molto) (ADJ~QU delicato))))
                       (, ,))
                    (NP-SBJ (ART~DE il) (ADJ~QU nuovo) (NOU~CS esecutivo))
                    (VP (VMA~CG proceda)
                        (PP (PREP attraverso)
                            (NP
                                (NP (ART~IN una) (NOU~CS gestione))
                                (ADJP (ADJ~QU congiunta)
                                    (PRN
                                        (, ,)
                                        (NP
                                            (NP (NOU~CS Governo))
                                            (CONJ e)
                                            (NP (NOU~CS opposizione)))
                                         (, ,)))
                                   (PP (PREP della)
                                       (NP (ART~DE della) (NOU~CS situazione)))))
                              (CONJ IN_MODO_DA)
                              (S
                                  (VP (VMA~IN isolare)
                                      (NP (ART~DE gli) (NOU~CP estremisti)))
                                   (NP-SBJ (-NONE- *))))))
                       (. .)) )


************** FRASE NEWS-457 **************

 ( (S
    (PP (PREP Sul)
        (NP
            (NP (ART~DE Sul) (NOU~CS piano))
            (PP (PREP della)
                (NP (ART~DE della) (NOU~CA crisi) (ADJ~QU finanziaria)))))
       (NP (PRO~PE ci))
       (NP (PRO~RI si))
       (VP (VMA~RE attende)
           (CONJ che)
           (S
               (VP
                   (VP (VAU~CG venga)
                       (ADVP (ADVB concretamente))) (VMA~PA formalizzato)
                    (PP-LGS (PREP DA_PARTE_DI)
                        (NP (ART~DE delle) (NOU~CA autorita') (ADJ~QU albanesi)))
                     (, ,)
                     (NP-EXTPSBJ-1933
                         (NP (ART~DE l') (NOU~CS invito))
                         (PP
                             (PP (PREP alle)
                                 (NP (ART~DE alle) (NOU~CP istituzioni) (ADJ~QU finanziarie) (ADJ~QU internazionali)))
                              (CONJ e)
                              (PP (PREP alla)
                                  (NP (ART~DE alla) (NOU~CS Commissione) (ADJ~QU europea))))
                            (PP (PREP per)
                                (NP
                                    (NP (ART~DE la) (NOU~CS MESSA_IN_OPERA))
                                    (PP (PREP di)
                                        (NP
                                            (NP (ART~IN un) (NOU~CS piano) (ADJ~QU tecnico))
                                            (PP-TMP (PREP a)
                                                (NP
                                                    (ADJP
                                                        (ADJP (ADJ~QU breve))
                                                        (CONJ e)
                                                        (ADJP (ADJ~QU medio)))
                                                     (NP (NOU~CS termine))))
                                               (SBAR
                                                   (NP-4333 (PRO~RE che))
                                                   (S
                                                       (NP-SBJ (-NONE- *-4333))
                                                       (VP (VMA~RE porti)
                                                           (PP-LOC (PREP ad)
                                                               (NP
                                                                   (NP (ART~IN un) (NOU~CS risanamento) (ADJ~QU finanziario) (ADJ~QU globale))
                                                                   (PP (PREP del)
                                                                       (NP (ART~DE del) (NOU~CS Paese))))))))))))))
                                   (NP-SBJ (-NONE- *-1933))))
                             (. .)) )


************** FRASE NEWS-458 **************

 ( (S
    (ADVP (ADVB Inoltre))
    (PP (PREP A_SEGUITO_DI)
        (NP (ART~DE dei)
            (NP (NOU~CP contatti))
            (ADVP-TMP (ADVB gia'))
            (VP (VMA~PA avviati)
                (NP (-NONE- *))
                (NP-TMP (NOU~CS domenica)))))
       (, ,)
       (NP-SBJ (ART~DE il) (NOU~CS ministro)
           (NP (NOU~PR Lamberto) (NOU~PR Dini)))
        (VP (VAU~RE ha)
            (VP (VMA~PA fatto)
                (S
                    (VP (VMA~IN pervenire)
                        (NP-1733 (ART~IN un) (NOU~CS messaggio))
                        (PP (PREP al)
                            (NP
                                (NP (ART~DE al) (NOU~CS presidente))
                                (PP (PREP della)
                                    (NP (ART~DE della) (NOU~CS Commissione) (NOU~PR Europea)))
                                 (NP (NOU~PR Jacques) (NOU~PR Santer)))))
                        (NP-SBJ (-NONE- *-1733)))
                     (, ,)
                     (PP (PREP IN_MERITO_A)
                         (NP (ART~DE al)
                             (NP (NOU~CS ruolo))
                             (SBAR
                                 (S
                                     (NP-3133 (PRO~RE che))
                                     (NP-SBJ-3233 (ART~DE l') (NOU~PR Ue))
                                     (VP (VMO~RE puo')
                                         (S
                                             (VP (VMA~IN svolgere)
                                                 (NP (-NONE- *-3133))
                                                 (PP (PREP nell')
                                                     (NP (ART~DE nell')
                                                         (S
                                                             (VP (VMA~IN attivare)
                                                                 (NP (ART~DE gli)
                                                                     (NP (NOU~CP strumenti))
                                                                     (ADJP (ADJ~QU necessari)
                                                                         (PP (PREP per)
                                                                             (S
                                                                                 (VP (VMA~IN far)
                                                                                     (NP (NOU~CS fronte))
                                                                                     (PP (PREP alla)
                                                                                         (NP (ART~DE alla) (NOU~CS situazione))))
                                                                                   (NP-SBJ (-NONE- *-37.1033)))))))
                                                                    (NP-SBJ-37.1033 (-NONE- *-35.1033))))))
                                                        (NP-SBJ-35.1033 (-NONE- *-3233))))))))))
                                (. .)) )


************** FRASE NEWS-459 **************

 ( (S
    (NP-SBJ (ART~IN Un) (ADJ~DI altro) (NOU~CS messaggio))
    (VP (VAU~RE e')
        (VP (VAU~PA stato)
            (VP (VMA~PA inviato))))
      (PP (PREP al)
          (NP
              (NP (ART~DE al) (NOU~CS presidente))
              (PP (PREP del)
                  (NP
                      (NP (ART~DE del) (NOU~CS Consiglio))
                      (PP (PREP dell')
                          (NP (ART~DE dell') (NOU~CS Unione)))))
                 (PRN
                     (, ,)
                     (NP (NOU~PR Hans)
                         (NP (NOU~PR Van) (NOU~PR Mierlo)))
                      (, ,))))
             (PP (PREP per)
                 (S
                     (VP (VMA~IN sollecitare)
                         (NP
                             (NP (ART~DE la) (NOU~CS convocazione) (ADJ~OR straordinaria))
                             (PP (PREP del)
                                 (NP (ART~DE del)
                                     (NP (NOU~CS Comitato) (ADJ~QU politico))
                                     (, ,)
                                     (SBAR
                                         (NP-2333 (PRO~RE che))
                                         (S
                                             (NP-SBJ (-NONE- *-2333))
                                             (VP (VMA~CO avrebbe)
                                                 (NP (NOU~CS luogo))
                                                 (ADVP-TMP (ADVB domani))
                                                 (PP-LOC (PREP a)
                                                     (NP (NOU~PR Bruxelles))))))))))
                             (NP-SBJ (-NONE- *-6.1033))))
                       (. .)) )


************** FRASE NEWS-460 **************

 ( (S
    (ADVP (ADVB Inoltre))
    (VP (VAU~RE sono)
        (VP (VAU~PA state)
            (VP (VMA~PA inviate))))
      (NP-SBJ (-NONE- *-533))
      (NP-EXTPSBJ-533 (NOU~CP istruzioni))
      (PP (PREP alla)
          (NP
              (NP (ART~DE alla) (ADJ~PO nostra) (NOU~CS ambasciata))
              (PP-LOC (PREP a)
                  (NP (NOU~PR Washington)))))
         (PP (PREP per)
             (NP
                 (NP (ART~DE i) (NOU~CP contatti))
                 (PP
                     (PP (PREP con)
                         (NP
                             (NP (ART~DE il) (NOU~CS Dipartimento))
                             (PP (PREP di)
                                 (NP (NOU~CS Stato))) (NOU~PR Usa)
                              (PRN
                                  (, ,)
                                  (SBAR
                                      (S
                                          (PP (PREP con)
                                              (NP (PRO~RE cui)))
                                           (VP (VAU~RE e')
                                               (VP (VAU~PA stato)
                                                   (VP (VMA~PA rafforzato))))
                                             (NP-SBJ (-NONE- *-2633))
                                             (NP-EXTPSBJ-2633
                                                 (NP (ART~DE il) (NOU~CS coordinamento))
                                                 (PP (PREP in)
                                                     (NP (ADVB gia')
                                                         (NP (NOU~CS atto))
                                                         (PP-TMP (PREP da)
                                                             (NP (NOU~CP mesi))))))))
                                           (, ,))))
                                  (CONJ e)
                                  (PP (PREP con)
                                      (NP (ART~DE le) (NOU~CP istituzioni) (ADJ~QU finanziarie) (ADJ~QU internazionali)
                                          (PRN
                                              (-LRB- -LRB-)
                                              (NP
                                                  (NP (NOU~PR Fondo) (ADJ~QU monetario) (ADJ~QU internazionale))
                                                  (CONJ e)
                                                  (NP
                                                      (NP (NOU~PR Banca) (ADJ~QU mondiale))
                                                      (, ,)
                                                      (SBAR
                                                          (NP-5333 (ART~DE il)
                                                              (NP (PRO~RE cui))
                                                              (NP (NOU~CS direttore) (ADJ~QU esecutivo))
                                                              (ADJP (ADJ~QU competente)
                                                                  (PP (ADVB anche) (PREP per)
                                                                      (NP (ART~DE l') (NOU~PR Albania))))
                                                                (PRN
                                                                    (, ,)
                                                                    (NP (NOU~PR Passacantando))
                                                                    (, ,)))
                                                              (S
                                                                  (NP-SBJ (-NONE- *-5333))
                                                                  (NP (PRO~RI si))
                                                                  (VP (VAU~RE e')
                                                                      (VP (VMA~PA recato)
                                                                          (PP-TMP (PREP nei)
                                                                              (NP (ART~DE nei) (NOU~CP giorni) (ADJ~DI scorsi)))
                                                                           (PP-LOC (PREP a)
                                                                               (NP (ADVB proprio) (NOU~PR Tirana)))))))))
                                                          (-RRB- -RRB-)))))))
                                        (. .)) )


************** FRASE NEWS-461 **************

 ( (S
    (PP (PREP Con)
        (NP
            (NP (ART~IN una) (NOU~CS lettera))
            (PP (PREP al)
                (NP
                    (NP (ART~DE al) (NOU~CS presidente))
                    (PP (PREP di)
                        (NP (NOU~CS turno)))
                     (PP (PREP dell')
                         (NP (ART~DE dell') (NOU~PR Osce)
                             (PRN
                                 (-LRB- -LRB-)
                                 (NP
                                     (NP (NOU~CS Organizzazione))
                                     (PP (PREP per)
                                         (NP
                                             (NP (ART~DE la) (NOU~CS sicurezza))
                                             (CONJ e)
                                             (NP
                                                 (NP (ART~DE la) (NOU~CS cooperazione))
                                                 (PP-LOC (PREP in)
                                                     (NP (NOU~PR Europa)))))))
                                      (-RRB- -RRB-))))
                             (PRN
                                 (, ,)
                                 (NP
                                     (NP (ART~DE il) (NOU~CS ministro) (ADJ~QU danese))
                                     (PP (PREP degli)
                                         (NP (ART~DE degli) (NOU~CP Esteri)))
                                      (NP (NOU~PR Niels)
                                          (NP (NOU~PR Helveg) (NOU~PR Petersen))))
                                    (, ,))))))
                     (NP-SBJ (NOU~PR Dini))
                     (VP (VAU~RE ha)
                         (VP (VMA~PA ricordato)
                             (CONJ come)
                             (S
                                 (NP-SBJ-3533 (ART~DE l') (NOU~PR Osce))
                                 (VP (VMA~CG abbia)
                                     (NP-3833
                                         (NP (ART~IN un) (NOU~CS ruolo))
                                         (PP (PREP da)
                                             (S
                                                 (VP (VMA~IN svolgere)
                                                     (NP (-NONE- *-3833))
                                                     (PP-LOC (PREP in)
                                                         (NP (NOU~PR Albania)))
                                                      (, ,)
                                                      (PP (ADVB soprattutto) (PREP sul)
                                                          (NP
                                                              (NP (ART~DE sul) (NOU~CS piano))
                                                              (PP (PREP del)
                                                                  (NP
                                                                      (NP (ART~DE del) (NOU~CS rafforzamento))
                                                                      (PP (PREP della)
                                                                          (NP (ART~DE della) (NOU~CS democrazia))))))))
                                                        (NP-SBJ (-NONE- *-3533)))))))))
                                   (. .)) )


************** FRASE NEWS-462 **************

 ( (S
    (NP-SBJ-133 (NOU~PR Roma))
    (ADVP (ADVB infine))
    (VP (VMA~RE intende)
        (S
            (VP (VMA~IN confermare)
                (NP
                    (NP (ART~DE il) (NOU~CS sostegno))
                    (PP (PREP a)
                        (NP (NOU~PR Tirana))))
                  (PP (PREP con)
                      (NP (ART~IN un) (ADJ~QU maxi)
                          (PUNCT -) (NOU~CS impegno)))
                    (CONJ NON_APPENA)
                    (S
                        (S
                            (NP-SBJ-1633 (ART~DE il) (ADJ~QU nuovo) (NOU~CS esecutivo))
                            (NP (PRO~RI si))
                            (VP (VAU~FU sara')
                                (VP (VMA~PA insediato))))
                          (CONJ e)
                          (S
                              (VP (VAU~FU avra')
                                  (VP (VMA~PA dimostrato)
                                      (PP (PREP di)
                                          (S
                                              (VP (VMO~IN voler)
                                                  (S
                                                      (VP (VMA~IN collaborare)
                                                          (PP
                                                              (PP (PREP con)
                                                                  (NP (ART~DE la) (NOU~CS Commissione) (ADJ~QU europea)))
                                                               (CONJ e)
                                                               (PP (PREP con)
                                                                   (NP (ART~DE le) (NOU~CP istituzioni) (ADJ~QU finanziarie) (ADJ~QU internazionali)))))
                                                          (NP-SBJ (-NONE- *-26.1033))))
                                                    (NP-SBJ-26.1033 (-NONE- *-24.1033))))))
                                        (NP-SBJ-24.1033 (-NONE- *-1633)))))
                               (NP-SBJ (-NONE- *-133))))
                         (. .)) )


************** FRASE NEWS-463 **************

 ( (NP (ART~IN Un)
    (NP
        (NP (NOU~CS segnale) (ADJ~QU importante))
        (PP (PREP di)
            (NP (NOU~CA disponibilita')))
         (SBAR
             (S
                 (NP-633 (PRO~RE che))
                 (NP-SBJ-733 (NOU~PR Tirana))
                 (VP (VMO~FU dovra')
                     (S
                         (VP (VMA~IN dare)
                             (NP (-NONE- *-633))
                             (ADVP-TMP (ADVB IN_TUTTA_FRETTA)))
                          (NP-SBJ (-NONE- *-733)))))))
           (. .)) )


************** FRASE NEWS-464 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE I) (NOU~CP fanti))
        (PP (PREP di)
            (NP (NOU~CS marina)))
         (PP (PREP del)
             (NP (ART~DE del) (NOU~CS battaglione)
                 (NP (ADJ~QU San) (NOU~PR Marco)))))
        (VP (VAU~RE hanno)
            (VP (VMA~PA condotto)
                (ADVP (ADVB felicemente))
                (PP (PREP a)
                    (NP (NOU~CS termine)))
                 (NP
                     (NP (PRO~DE quella))
                     (SBAR
                         (S
                             (NP (PRO~RE che))
                             (NP-SBJ (ART~DE i) (NOU~CP militari))
                             (VP (VMA~RE definiscono)
                                 (NP-PRD
                                     (NP (ART~IN una) (NOU~CS operazione))
                                     (PP (PREP di)
                                         (NP
                                             (' ') (NOU~CS esfiltrazione)
                                             (' '))))))))))
                  (. .)) )


************** FRASE NEWS-465 **************

 ( (S
    (S
        (VP (VMA~GE Servendosi)
            (NP (PRO~RI Servendosi))
            (PP (PREP di)
                (NP (ADJ~IN alcuni) (NOU~CP elicotteri))))
          (NP-SBJ (-NONE- *-533)))
       (NP-SBJ-533 (ART~DE i) (ADJ~PO nostri) (NOU~CP militari))
       (VP (VAU~RE hanno)
           (VP (VMA~PA portato)
               (ADVP-LOC (ADVB via))
               (PP-LOC (PREP dal)
                   (NP (ART~DE dal) (NOU~CS territorio) (ADJ~QU albanese)))
                (NP
                    (NP (ART~IN una) (NOU~CS trentina))
                    (PP (PREP di)
                        (NP
                            (NP (NOU~CP cittadini))
                            (ADJP
                                (ADJP (ADJ~QU italiani))
                                (CONJ e)
                                (PP (PREP di)
                                    (NP (ADJ~DI altri) (NOU~CP Paesi))))
                              (SBAR
                                  (NP-2333 (PRO~RE che))
                                  (S
                                      (NP-SBJ (-NONE- *-2333))
                                      (NP (PRO~RI si))
                                      (VP (VMA~IM trovavano)
                                          (PP-LOC (PREP in)
                                              (NP
                                                  (NP (ADJ~QU grave) (NOU~CS pericolo))
                                                  (PP (PREP di)
                                                      (NP (NOU~CS vita)))))
                                             (PP (PREP A_CAUSA_DI)
                                                 (NP (ART~DE della)
                                                     (NP (NOU~CS situazione) (ADJ~QU interna))
                                                     (, ,)
                                                     (ADJP
                                                         (ADVP (ADVB sempre) (ADVB piu')) (ADJ~QU violenta))))))))))))
                        (. .)) )


************** FRASE NEWS-466 **************

 ( (S
    (PP-LOC (PREP In)
        (NP (NOU~CS pratica)))
     (NP (PRO~RI si))
     (VP (VAU~RE e')
         (VP (VMA~PA trattato)
             (PP (PREP di)
                 (NP (ART~IN un)
                     (PUNCT -)
                     (NP (ADJ~QU mini) (NOU~CS intervento) (ADJ~QU militare))
                     (PRN
                         (, ,)
                         (ADJP
                             (ADJP (ADJ~QU puntuale))
                             (CONJ e)
                             (ADJP (ADJ~QU rapido)))
                          (, ,))
                       (VP (VMA~PA svolto)
                           (NP (-NONE- *))
                           (PP
                               (PP (PREP con)
                                   (NP
                                       (NP (ART~DE il) (ADJ~QU minimo) (ADJ~QU possibile) (NOU~CS uso))
                                       (PP (PREP della)
                                           (NP (ART~DE della) (NOU~CS forza)))))
                                  (CONJ e)
                                  (PP (PREP a)
                                      (NP
                                          (NP (NOU~CS scopo))
                                          (ADJP
                                              (ADJP (ADVB chiaramente) (ADJ~QU umanitario))
                                              (CONJ e)
                                              (PP (PREP di)
                                                  (NP (NOU~CS protezione))
                                                  (PP (PREP di) (ADJ~PO nostri) (NOU~CP connazionali))))))))))))
                    (. .)) )


************** FRASE NEWS-467 **************

 ( (S
    (PP (PREP Da)
        (NP (PRO~DE questo))
        (PP (PREP a)
            (NP
                (NP (ART~IN un) (NOU~CS intervento))
                (PP (PREP di)
                    (NP
                        (ADJP
                            (ADJP (ADJ~QU vera))
                            (CONJ e)
                            (ADJP (ADJ~QU propria)))
                         (NP (NOU~CS pacificazione)))))))
          (PRN
              (, ,)
              (CONJ come)
              (S
                  (PP-LOC (PREP da)
                      (NP (ADJ~IN piu') (NOU~CP parti)))
                   (NP (PRO~RI si))
                   (VP (VAU~RE va)
                       (VP (VMA~GE chiedendo))))
                 (, ,))
              (NP-LOC (PRO~LO c'))
              (VP (VMA~RE e')
                  (NP-EXTPSBJ-2233 (ART~IN una) (ADJ~QU grandissima) (NOU~CS differenza)))
               (NP-SBJ (-NONE- *-2233))
               (. .)) )


************** FRASE NEWS-468 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE La) (NOU~CS salvezza))
        (PP (PREP dei)
            (NP (ART~DE dei) (ADJ~PO propri) (NOU~CP cittadini)))
         (PP (PREP da)
             (NP
                 (NP (NOU~CP situazioni))
                 (SBAR
                     (S
                         (PP-LOC (PREP in)
                             (NP (PRO~RE cui)))
                          (ADVP-TMP (ADVB ormai))
                          (ADVP (ADVB non))
                          (NP-LOC (PRO~LO vi))
                          (VP (VMA~RE e')
                              (NP-EXTPSBJ-1433 (-NONE- *-)
                                  (NP-1433
                                      (NP (ADJ~IN alcuna) (NOU~CS garanzia)) (-NONE- *-)
                                      (PP (PREP di)
                                          (NP (NOU~CS sicurezza))))
                                    (CONJ e)
                                    (NP (ADJ~IN alcun) (NOU~CS controllo)
                                        (PP-LGS (PREP DA_PARTE_DI)
                                            (NP (NOU~CA autorita') (ADJ~QU responsabili))))))
                                (NP-SBJ (-NONE- *-1433)))))))
                 (VP (VMA~RE rientra)
                     (PP (PREP tra)
                         (NP (ART~DE i) (NOU~CP diritti)
                             (PUNCT -)
                             (NP
                                 (NP (NOU~CP doveri))
                                 (PP (PREP di)
                                     (NP (ADJ~IN ogni) (NOU~CS Paese)))))))
                      (. .)) )


************** FRASE NEWS-469 **************

 ( (S
    (NP-SBJ
        (NP (ART~IN Una) (NOU~CS operazione))
        (PP (PREP di)
            (NP (NOU~CA peace-keeping))))
      (ADVP (ADVB invece))
      (VP (VMA~RE ha)
          (NP (NOU~CS bisogno))
          (PP
              (PP (PREP dell')
                  (NP
                      (NP (ART~DE dell') (NOU~CS autorizzazione))
                      (PP (PREP di)
                          (NP (ART~IN una) (ADJ~QU superiore) (NOU~CA autorita') (ADJ~QU internazionale)))))
                 (, ,)
                 (CONJ o)
                 (PP (PREP della)
                     (NP
                         (NP (ART~DE della) (ADJ~QU esplicita) (NOU~CS richiesta))
                         (PP (PREP del)
                             (NP
                                 (NP (ART~DE del) (NOU~CS Paese))
                                 (PP (PREP in)
                                     (NP (NOU~CA crisi)))))))))
                (. .)) )


************** FRASE NEWS-470 **************

 ( (S
    (S
        (NP-SBJ (ADJ~DE Queste) (NOU~CP condizioni))
        (ADVP (ADVB non))
        (VP (VMA~RE sono)
            (ADVP-TMP (ADVB ancora))
            (ADJP-PRD (ADJ~QU presenti))))
      (, ,)
      (CONJ ma)
      (S
          (NP-SBJ-933 (ART~DE la) (NOU~CS situazione))
          (VP (VMO~CO potrebbe)
              (ADVP (ADVB rapidamente))
              (S
                  (VP (VMA~IN evolvere))
                  (NP-SBJ (-NONE- *-933)))))
         (. .)) )


************** FRASE NEWS-471 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~PR Albania))
    (VP (VMA~RE ha)
        (PP (PREP con)
            (NP (ART~DE la) (NOU~CA comunita') (ADJ~QU internazionale)))
         (NP (ART~IN un) (NOU~CS rapporto) (ADJ~QU difficile)
             (, ,)
             (NP
                 (NP (NOU~CA eredita'))
                 (PP
                     (PP (PREP di)
                         (NP
                             (NP (NOU~CP anni))
                             (PP (PREP di)
                                 (NP (NOU~CS comunismo)))))
                        (CONJ e)
                        (PP (PREP di)
                            (NP
                                (NP (ADJ~DE quella) (ADJ~QU particolare) (NOU~CS politica))
                                (PP (PREP di)
                                    (NP
                                        (NP (NOU~CS isolamento))
                                        (PP-LOC (PREP dall')
                                            (NP (ART~DE dall') (NOU~CS estero)))))
                                   (VP (VMA~PA seguita)
                                       (NP (-NONE- *))
                                       (PP-TMP (PREP per)
                                           (NP (NOU~CP decenni)))
                                        (PP-LGS (PREP dal)
                                            (NP
                                                (NP (ART~DE dal) (NOU~CS regime))
                                                (PP (PREP di)
                                                    (NP (NOU~PR Enver) (NOU~PR Hoxha))))))))))))
                      (. .)) )


************** FRASE NEWS-472 **************

 ( (S
    (S
        (S
            (NP-SBJ-133
                (NP (ART~DE Il) (NOU~CS processo))
                (PP (PREP di)
                    (NP (NOU~CS democratizzazione))))
              (VP (VAU~RE e')
                  (VP (VMA~PA stato)
                      (ADJP-PRD (ADJ~QU lento)))))
             (, ,)
             (S
                 (VP (-NONE- *)
                     (VP (VMA~PA reso)
                         (ADVP-TMP (ADVB ora))
                         (ADJP-PRD (ADVB piu') (ADJ~QU difficile))
                         (PP-LGS (PREP dalla)
                             (NP
                                 (NP (ART~DE dalla) (ADJ~QU grave) (NOU~CS situazione))
                                 (PP (PREP di)
                                     (NP
                                         (NP (NOU~CA crisi) (ADJ~QU economica))
                                         (CONJ e)
                                         (NP (NOU~CA caos) (ADJ~QU finanziario))))))))
                       (NP-SBJ (-NONE- *-133))))
                 (CONJ ed)
                 (S
                     (VP (VMA~RE e')
                         (ADVP-TMP (ADVB ancora))
                         (ADJP-PRD (ADJ~QU incompleto)))
                      (NP-SBJ (-NONE- *-133)))
                   (. .)) )


************** FRASE NEWS-473 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Il) (NOU~CS governo) (ADJ~QU attuale))
        (PP (PREP di)
            (NP (NOU~PR Sali) (NOU~PR Berisha)))
         (, ,)
         (ADJP
             (ADVP (ADVB pur) (ADVB largamente)) (ADJ~QU dipendente)
             (PP
                 (PP (PREP dall')
                     (NP (ART~DE dall') (NOU~CS assistenza) (ADJ~QU internazionale)))
                  (PRN
                      (-LRB- -LRB-)
                      (CONJ e)
                      (PP (PREP da)
                          (NP
                              (NP (PRO~DE quella) (ADJ~QU europea)) (ADVB IN_PARTICOLARE)))
                        (-RRB- -RRB-)))))
            (VP (VAU~RE ha)
                (VP (VMA~PA mantenuto)
                    (NP (ART~IN un) (NOU~CS atteggiamento) (ADJ~QU ambiguo))))
              (. .)) )


************** FRASE NEWS-474 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Le) (NOU~CP elezioni) (ADJ~QU politiche))
        (PP-TMP (PREP del)
            (NP (ART~DE del) (NUMR 26) (NOU~CS maggio)
                (NP (NUMR 1996)))))
       (VP (VAU~IM erano)
           (VP (VAU~PA state)
               (VP (VMA~PA viziate))))
         (PP-LGS (PREP da)
             (NP (ART~IN un) (NOU~CS-1333 numero)
                 (ADJP (ADVB talmente) (ADJ~QU alto))
                 (PP (PREP di)
                     (NP
                         (NP (NOU~CA irregolarita'))
                         (, ,)
                         (NP
                             (NP (NOU~CP intimidazioni))
                             (CONJ e)
                             (NP (NOU~CP incidenti)))))
                    (, ,)
                    (PP-2333 (PREP da)
                        (S
                            (VP (VMA~IN provocare)
                                (NP
                                    (NP (ART~DE l') (NOU~CS intervento) (ADJ~QU sanzionatorio))
                                    (PP (PREP dell')
                                        (NP (ART~DE dell') (NOU~PR Osce)
                                            (, ,)
                                            (SBAR
                                                (NP-3333 (PRO~RE che) (-NONE- *-))
                                                (S
                                                    (NP-SBJ-3133 (-NONE- *-3333))
                                                    (VP
                                                        (ADVP (ADVB non))
                                                        (VP (VAU~IM era)
                                                            (ADVP (ADVB pero'))) (VMA~PA riuscita)
                                                         (PP (PREP a)
                                                             (S
                                                                 (VP (VMA~IN imporre)
                                                                     (NP
                                                                         (NP (ART~DE la) (NOU~CS ripetizione))
                                                                         (PP (PREP delle)
                                                                             (NP (ART~DE delle) (NOU~CP elezioni) (ADJ~DI stesse)))))
                                                                    (NP-SBJ (-NONE- *-3133)))))))))))
                                         (NP-SBJ (-NONE- *-1333))))))
                             (. .)) )


************** FRASE NEWS-475 **************

 ( (S
    (S
        (NP-SBJ
            (NP-SBJ (PRO~DE Quelle) (ADJ~QU municipali))
            (PRN
                (, ,)
                (VP (VMA~PA svoltesi)
                    (NP (PRO~RI svoltesi))
                    (NP (-NONE- *))
                    (NP-TMP
                        (NP (ART~DE il) (ADJ~DI successivo) (NOU~CS mese))
                        (PP (PREP di)
                            (NP (NOU~CS ottobre)))))
                   (, ,)))
             (VP (VAU~IM erano)
                 (VP (VAU~PA state)
                     (VP (VMA~PA controllate))))
               (PP-LGS (PREP da)
                   (NP
                       (NP (ART~IN un) (ADJ~QU maggior) (NOU~CS numero))
                       (PP (PREP di)
                           (NP
                               (NP (NOU~CP osservatori))
                               (PRN
                                   (, ,)
                                   (SBAR
                                       (S
                                           (PP (PREP tra)
                                               (NP (PRO~RE cui)))
                                            (VP (-NONE- *)
                                                (NP-EXTPSBJ-2333 (ADJ~IN numerosi) (NOU~CP italiani)))
                                             (NP-SBJ (-NONE- *-2333))))
                                       (, ,)))))))
                     (CONJ e)
                     (S
                         (NP (PRO~RI si))
                         (VP (VAU~IM erano)
                             (VP (VMA~PA svolte)
                                 (ADVP (ADVB notevolmente) (ADVB meglio)
                                     (, ,)
                                     (PP (ADVB tanto) (PREP da)
                                         (S
                                             (VP
                                                 (Vbar (VMA~IN far)
                                                     (Sbar
                                                         (VP (VMA~IN sperare)
                                                             (PP (PREP in)
                                                                 (NP
                                                                     (NP (ART~IN un') (NOU~CS evoluzione) (ADJ~QU positiva))
                                                                     (PP (PREP della)
                                                                         (NP (ART~DE della) (NOU~CS democrazia)))))))))
                                                    (NP-SBJ (-NONE- *)))))))
                                     (NP-SBJ (-NONE- *-133)))
                                  (. .)) )


************** FRASE NEWS-476 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Il) (NOU~CS tracollo) (ADJ~QU finanziario))
        (PP-TMP (PREP di)
            (NP (ADJ~DE questi) (ADJ~OR ultimi) (NOU~CP giorni))))
      (VP
          (VP (VAU~RE ha)
              (ADVP (ADVB pero'))) (VMA~PA fatto)
           (S
               (VP (VMA~IN precipitare)
                   (NP-1233 (ART~DE la) (NOU~CS situazione)))
                (NP-SBJ (-NONE- *-1233))))
          (. .)) )


************** FRASE NEWS-477 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~PR Albania))
    (VP (VMA~RE vive)
        (ADVP-TMP (ADVB ormai))
        (NP
            (NP (ART~DE i) (NOU~CP prodromi))
            (PP (PREP di)
                (NP (ART~IN una)
                    (ADJP
                        (ADJP (ADJ~QU vera))
                        (CONJ e)
                        (ADJP (ADJ~QU propria)))
                     (NP (NOU~CS guerra) (ADJ~QU civile))))))
         (. .)) )


************** FRASE NEWS-478 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE La) (NOU~CS decisione))
        (PP (PREP della)
            (NP-3.133 (ART~DE della)
                (NP (NOU~CS maggioranza) (ADJ~QU parlamentare))
                (VP (VMA~PA uscita)
                    (NP (-NONE- *))
                    (PP-LOC (PREP dalle)
                        (NP
                            (NP (ART~DE dalle) (NOU~CP elezioni))
                            (PP-TMP (PREP di)
                                (NP (NOU~CS maggio))))))))
              (PP
                  (PP (PREP di)
                      (S
                          (VP (VMA~IN proclamare)
                              (NP
                                  (NP (ART~DE lo) (NOU~CS stato))
                                  (PP (PREP di)
                                      (NP (NOU~CS emergenza)))))
                             (NP-SBJ-12.1033 (-NONE- *-3.133))))
                       (, ,)
                       (CONJ e)
                       (PP
                           (PP (ADVB quindi) (PREP di)
                               (S
                                   (VP (VMA~IN sospendere)
                                       (NP (ADJ~IN molti) (NOU~CP diritti) (ADJ~QU civili)))
                                    (NP-SBJ-21.1033 (-NONE- *-12.1033))))
                              (CONJ e)
                              (PP (PREP di)
                                  (S
                                      (VP (VMA~IN mettere)
                                          (PP-LOC (PREP a)
                                              (NP
                                                  (NP (NOU~CS capo))
                                                  (PP (PREP del)
                                                      (NP (ART~DE del) (NOU~CS Paese)))))
                                             (NP
                                                 (NP (ART~DE il) (NOU~CS responsabile))
                                                 (PP (PREP della)
                                                     (NP (ART~DE della) (NOU~CS polizia) (ADJ~QU segreta)))
                                                  (PRN
                                                      (, ,)
                                                      (NP (NOU~PR Bashkim) (NOU~PR Gazidede))
                                                      (, ,))))
                                             (NP-SBJ (-NONE- *-21.1033)))))))
                              (VP
                                  (ADVP (ADVB non))
                                  (VP (VAU~RE e')
                                      (ADVP (ADVB certo))) (VMA~PA fatta)
                                   (PP (PREP per)
                                       (S
                                           (VP (VMA~IN rassicurare)
                                               (NP (ART~DE gli) (NOU~CP animi)))
                                            (NP-SBJ (-NONE- *-133)))))
                                   (NP-SBJ (-NONE- *))
                                   (. .)) )


************** FRASE NEWS-479 **************

 ( (S
    (NP-SBJ (ART~DE La) (NOU~CS reazione) (ADJ~QU internazionale))
    (VP (VMA~RE e')
        (ADJP-PRD (ADJ~QU lenta)))
     (. .)) )


************** FRASE NEWS-480 **************

 ( (S
    (NP-SBJ-133 (ART~DE L') (NOU~PR UNIONE_EUROPEA))
    (VP (VMA~FU comincera')
        (ADVP (ADVB probabilmente))
        (PP (PREP a)
            (S
                (VP (VMA~IN prendere)
                    (NP (ART~DE le) (ADJ~PO sue) (ADJ~OR prime) (NOU~CP decisioni) (ADJ~QU collettive))
                    (NP-TMP (NOU~CA mercoledi') (ADJ~DI prossimo)))
                 (NP-SBJ (-NONE- *-133))))
           (, ,)
           (CONJ quando)
           (S
               (NP (PRO~RI si))
               (VP (VMA~FU riunira')
                   (NP-EXTPSBJ-1933 (ART~DE il) (ADJ~PO suo) (NOU~CS Comitato) (ADJ~QU politico)))
                (NP-SBJ (-NONE- *-1933))))
          (. .)) )


************** FRASE NEWS-481 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~PR Osce))
    (VP (VMA~FU reagira')
        (ADVP (ADVB ancora) (ADVB piu') (ADVB lentamente))
        (, ,)
        (PP (PREP per)
            (NP
                (NP (ART~DE la) (NOU~CP complessita') (ADJ~DI stessa))
                (PP (PREP dei)
                    (NP (ART~DE dei) (ADJ~PO suoi) (NOU~CP meccanismi) (ADJ~QU decisionali))))))
        (. .)) )


************** FRASE NEWS-482 **************

 ( (S
    (VP (VMA~RE È)
        (ADVP (ADVB quindi))
        (ADJP-PRD (ADJ~QU probabile))
        (CONJ che)
        (S
            (PRN
                (, ,)
                (PP-TMP (ADVB ancora) (PREP per)
                    (NP (ADJ~IN qualche) (NOU~CS giorno)))
                 (, ,))
              (NP-SBJ (PRO~ID tutto))
              (VP (VMA~FU dipendera')
                  (PP
                      (PP (PREP dalle)
                          (NP
                              (NP (ART~DE dalle) (NOU~CP iniziative))
                              (PP (PREP dei)
                                  (NP (ART~DE dei) (ADJ~QU singoli) (NOU~CP Paesi)))))
                         (CONJ e)
                         (PP (PREP dalla)
                             (NP
                                 (NP (ART~DE dalla) (NOU~CA capacita'))
                                 (PP (PREP di)
                                     (NP (NOU~CS autocontrollo)))
                                  (PP (PREP degli)
                                      (NP (ART~DE degli) (ADJ~DI stessi) (NOU~CP albanesi)))))))))
                 (. .)) )


************** FRASE NEWS-483 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE La) (NOU~CS situazione))
        (VP (VMA~RE e')
            (ADJP-PRD (ADJ~QU grave))))
      (, ,)
      (CONJ ma)
      (S
          (VP (VMO~CO potrebbe)
              (S
                  (VP (VMA~IN divenire)
                      (ADVP (ADVB anche))
                      (ADJP-PRD (ADJ~QU peggiore)))
                   (NP-SBJ (-NONE- *-7.1033)))
                (CONJ se)
                (S
                    (NP (PRO~RI si))
                    (VP (VMA~IM internazionalizzasse))
                    (NP-SBJ (-NONE- *-7.1033))))
              (NP-SBJ-7.1033 (-NONE- *-133)))
           (. .)) )


************** FRASE NEWS-484 **************

 ( (S
    (S
        (NP-SBJ-133
            (NP (ART~DE La) (NOU~CS decisione))
            (PP (PREP della)
                (NP-3.133 (ART~DE della) (NOU~PR Grecia)))
             (PP (PREP di)
                 (S
                     (VP (VMA~IN chiudere)
                         (NP
                             (NP (ART~DE la) (ADJ~PO sua) (NOU~CS frontiera) (ADJ~QU terrestre))
                             (PP (PREP con)
                                 (NP (ART~DE l') (NOU~PR Albania)))))
                        (NP-SBJ (-NONE- *-3.133)))))
               (VP (VMA~RE e')
                   (ADJP-PRD
                       (ADJP (ADVB DEL_TUTTO) (ADJ~QU comprensibile))
                       (CONJ e)
                       (ADJP (ADJ~QU giustificata)))))
              (, ,)
              (CONJ ma)
              (S
                  (VP (VMA~RE rischia)
                      (PP (PREP di)
                          (S
                              (VP (VMA~IN rimettere)
                                  (PP (PREP in)
                                      (NP (NOU~CS discussione)))
                                   (NP
                                       (NP (ADJ~DE quella) (NOU~CS riapertura))
                                       (PP (PREP dei)
                                           (NP
                                               (NP (ART~DE dei) (NOU~CP rapporti))
                                               (PP (PREP tra)
                                                   (NP (ART~DE i)
                                                       (NP (NUMR due)) (NOU~CP Paesi)))))
                                           (SBAR
                                               (NP-3333 (PRO~RE che))
                                               (S
                                                   (NP-SBJ (-NONE- *-3333))
                                                   (VP (VAU~IM era)
                                                       (VP (VAU~PA stata)
                                                           (ADVP (ADVB faticosamente))
                                                           (VP (VMA~PA arrangiata))))
                                                     (PP-TMP (PREP in)
                                                         (NP (ADJ~DE questi) (NOU~CP anni)))
                                                      (PP-LGS (PREP dalla)
                                                          (NP
                                                              (NP (ART~DE dalla) (NOU~CS mediazione))
                                                              (PP (PREP degli)
                                                                  (NP (ART~DE degli) (NOU~PR STATI_UNITI)))))))))
                                             (NP-SBJ (-NONE- *-22.1033)))))
                                    (NP-SBJ-22.1033 (-NONE- *-133)))
                                 (. .)) )


************** FRASE NEWS-485 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE La) (NOU~CA crisi))
        (PP-LOC (PREP in)
            (NP (NOU~PR Albania))))
      (VP (VMO~CO potrebbe)
          (ADVP (ADVB facilmente))
          (S
              (VP (VMA~IN estendersi)
                  (NP (PRO~RI estendersi))
                  (PP-LOC
                      (PP (PREP alla)
                          (NP
                              (NP (ART~DE alla) (NOU~CS provincia) (ADJ~QU serba))
                              (PP (PREP del)
                                  (NP (ART~DE del) (NOU~PR Kosovo)))
                               (PRN
                                   (, ,)
                                   (VP (VMA~PA abitata)
                                       (NP (-NONE- *))
                                       (PP-LGS (PREP da)
                                           (NP
                                               (NP (ART~IN una) (NOU~CS maggioranza))
                                               (PP (PREP di)
                                                   (NP (NOU~CP albanesi))))))
                                       (, ,))))
                              (CONJ e)
                              (PP (ADVB persino) (PREP alle)
                                  (NP
                                      (NP (ART~DE alle) (NOU~CP minoranze) (ADJ~QU albanesi))
                                      (PP-LOC (PREP in)
                                          (NP (NOU~PR Macedonia)))))))
                           (NP-SBJ (-NONE- *-133))))
                     (. .)) )


************** FRASE NEWS-486 **************

 ( (NP (ART~IN Un)
    (NP
        (NP (ADJ~DI altro) (ADJ~QU difficile) (NOU~CS focolaio))
        (PP (PREP di)
            (NP (NOU~CP guerre) (ADJ~QU balcaniche))))
      (. .)) )


************** FRASE NEWS-487 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE L') (ADJ~QU unico) (NOU~CS modo))
        (PP (PREP per)
            (S
                (VP (VMA~IN uscire)
                    (PP-LOC (PREP da)
                        (NP (ADJ~DE questa) (NOU~CS situazione))))
                  (NP-SBJ (-NONE- *)))))
         (VP (VMA~RE sembra)
             (S
                 (VP (VMA~IN essere)
                     (NP-PRD
                         (NP (PRO~DE quello))
                         (PP (PREP di)
                             (S
                                 (VP (VMA~IN indire)
                                     (NP-1533
                                         (NP (ADJ~QU nuove) (NOU~CP elezioni) (ADJ~QU politiche))
                                         (, ,)
                                         (PP (PREP da)
                                             (S
                                                 (VP (VMA~IN svolgersi)
                                                     (NP (PRO~RI svolgersi))
                                                     (PRN
                                                         (, ,)
                                                         (NP-TMP (ADJ~DE questa) (NOU~CS volta))
                                                         (, ,))
                                                      (PP-LOC (PREP sotto)
                                                          (NP (ART~IN un) (ADJ~QU serio) (NOU~CS controllo) (ADJ~QU internazionale))))
                                                    (NP-SBJ (-NONE- *-1533))))))
                                        (NP-SBJ (-NONE- *))))))
                            (NP-SBJ (-NONE- *-133))))
                      (. .)) )


************** FRASE NEWS-488 **************

 ( (S
    (CONJ Ma)
    (NP-SBJ-233
        (NP (ART~DE i) (PRO~OR primi))
        (PP (PREP a)
            (S
                (VP (VMO~IN doversene)
                    (NP-5.133 (PRO~PE doversene))
                    (NP-5.233 (PRO~PE doversene))
                    (S
                        (VP (VMA~IN convincere)
                            (NP (-NONE- *-5.133))
                            (NP (-NONE- *-5.233)))
                         (NP-SBJ (-NONE- *-333))))
                   (NP-SBJ (-NONE- *-333)))))
          (VP (VMO~FU dovranno)
              (S
                  (VP (VMA~IN essere)
                      (NP-PRD (ART~DE gli) (ADJ~DI stessi) (NOU~CP albanesi))
                      (, ,)
                      (PP (PREP A_COMINCIARE_DA)
                          (NP-1633 (ART~DE dal)
                              (NP (NOU~CS Parlamento)) (S+REDUC
                                  (S
                                      (S
                                          (VP (VMA~PA eletto)
                                              (NP-TMP (ART~DE lo) (ADJ~DI scorso) (NOU~CS maggio)))
                                           (NP-SBJ (-NONE- *-1633))))
                                     (CONJ e)
                                     (ADJP
                                         (ADVP (ADVB palesemente) (ADVB ben) (ADVB poco)) (ADJ~QU rappresentativo)
                                         (PRN
                                             (-LRB- -LRB-)
                                             (PP (ADVB almeno) (PREP nella)
                                                 (NP (ART~DE nella) (NOU~CS situazione) (ADJ~QU attuale)))
                                              (-RRB- -RRB-)))))))
                            (NP-SBJ (-NONE- *-233))))
                      (. .)) )


************** FRASE NEWS-489 **************

 ( (S
    (PP (ADVB Solo) (PREP a)
        (NP (ADJ~DE queste) (NOU~CP condizioni)))
     (VP (VMA~FU sara')
         (ADVP-TMP (ADVB poi))
         (ADVP (ADVB anche))
         (ADJP-PRD (ADJ~QU possibile))
         (S-EXTPSBJ-1433
             (VP-933 (VMA~IN parlare)
                 (PP (PREP di)
                     (NP
                         (NP (ADJ~QU nuove) (NOU~CP operazioni))
                         (PP (PREP di)
                             (NP (NOU~CS assistenza) (ADJ~QU economica)))))) (-NONE- *-)
                 (NP-SBJ (-NONE- *))))
           (VP-SBJ (-NONE- *-933))
           (. .)) )


************** FRASE NEWS-490 **************

 ( (S
    (CONJ Se)
    (S
        (ADVP (ADVB pero'))
        (NP-SBJ-333 (ART~DE la) (NOU~CS situazione))
        (VP (VMO~IM dovesse)
            (S
                (S
                    (VP (VMA~IN esplodere))
                    (NP-SBJ-6.1033 (-NONE- *-333)))
                 (CONJ ed)
                 (S
                     (VP (VMA~IN evolversi)
                         (NP (PRO~RI evolversi))
                         (PP-LOC (PREP in)
                             (NP
                                 (ADJP
                                     (ADJP (ADJ~QU vera))
                                     (CONJ e)
                                     (ADJP (ADJ~QU propria)))
                                  (NP (NOU~CS guerra) (ADJ~QU civile)))))
                         (NP-SBJ (-NONE- *-6.1033))))))
             (, ,)
             (ADVP (ADVB probabilmente))
             (ADVP (ADVB non))
             (NP-LOC (PRO~LO ci))
             (VP (VMA~FU saranno)
                 (NP-EXTPSBJ-2033
                     (NP (ADJ~IN molte) (NOU~CP alternative))
                     (PP (PREP all')
                         (NP (ART~DE all') (NOU~CS intervento))))
                   (, ,)
                   (PP (ADVB SE_NON_ALTRO) (PREP per)
                       (S
                           (VP (VMA~IN evitare)
                               (NP
                                   (NP (NOU~CP danni) (ADJ~QU maggiori))
                                   (PP (PREP alla)
                                       (NP (ART~DE alla) (ADJ~QU fragile) (NOU~CA stabilita') (ADJ~QU regionale)))))
                              (NP-SBJ (-NONE- *)))))
                     (NP-SBJ (-NONE- *-2033))
                     (. .)) )


************** FRASE NEWS-491 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE L') (NOU~CS esperienza))
        (PP (PREP di)
            (NP (ADJ~DE questi) (ADJ~OR ultimi)
                (NP (NUMR cinque)) (NOU~CP anni))))
       (VP (VMA~RE rischia)
           (PP (PREP di)
               (S
                   (VP (VMA~IN mandare)
                       (PP-LOC (PREP in)
                           (NP (NOU~CS fumo)))
                        (NP
                            (NP (ADJ~DE questo) (NOU~CS capitale))
                            (PP (PREP di)
                                (NP (NOU~CS simpatia)))))
                       (NP-SBJ (-NONE- *-133)))))
              (. .)) )


************** FRASE NEWS-492 **************

 ( (S
    (PP-TMP (PREP All')
        (NP
            (NP (ART~DE All') (NOU~CS inizio))
            (PP (PREP di)
                (NP (ADJ~DE questo) (NOU~CS secolo)))))
       (, ,)
       (NP-SBJ-733
           (NP (ART~DE il) (NOU~CS governo))
           (PP (PREP di)
               (NP (NOU~PR Roma))))
         (VP (VAU~IM aveva)
             (VP (VMA~PA mostrato)
                 (NP
                     (NP (ADJ~QU grande) (NOU~CS interesse))
                     (PP (PREP per)
                         (NP (ART~DE l') (NOU~PR Albania))))
                   (, ,)
                   (S
                       (VP (VMA~GE sostenendone)
                           (NP-19.133 (PRO~PE sostenendone))
                           (NP
                               (NP (ART~DE il) (NOU~CS diritto))
                               (NP (-NONE- *-19.133))
                               (PP (PREP all')
                                   (NP (ART~DE all') (NOU~CS autonomia))))))))
                 (NP-SBJ (-NONE- *-733))
                 (. .)) )


************** FRASE NEWS-493 **************

 ( (S
    (PP-TMP (ADVB Gia') (PREP nel)
        (NP (ART~DE nel) (ADJ~QU lontano) (NUMR 1866)))
     (, ,)
     (NP-SBJ (NOU~PR Giuseppe) (NOU~PR Garibaldi))
     (VP (VAU~IM aveva)
         (VP (VMA~PA scritto)))
      (. .)) )


************** FRASE NEWS-494 **************

 ( (S
    (' ')
    (NP-SBJ
        (NP (ART~DE La) (NOU~CS causa))
        (PP (PREP degli)
            (NP (ART~DE degli) (NOU~CP albanesi))))
      (VP (VMA~RE e')
          (NP-PRD (ART~DE la) (PRO~PO mia)))
       (' ')
       (. .)) )


************** FRASE NEWS-495 **************

 ( (S
    (CONJ E)
    (PP-LOC (PREP nell')
        (NP (ART~DE nell') (NOU~PR Italia) (ADJ~QU meridionale)
            (PRN
                (, ,)
                (SBAR
                    (S
                        (NP-LOC (PRO~LO dove))
                        (VP (VAU~IM erano)
                            (VP (VMA~PA fiorite)
                                (NP-EXTPSBJ-933 (ADJ~IN numerose) (NOU~CP colonie) (ADJ~QU albanesi))))
                          (NP-SBJ (-NONE- *-933))))
                    (, ,))))
           (PP-TMP (PREP nel)
               (NP (ART~DE nel) (NUMR 1903)))
            (VP (VAU~RA fu)
                (VP (VMA~PA fondato)
                    (NP-EXTPSBJ-1733 (ART~IN un)
                        (' ')
                        (NP (NOU~CS Comitato) (ADJ~QU albanese))
                        (' ')
                        (SBAR
                            (NP-2333 (ART~DE la)
                                (NP (PRO~RE cui)) (NOU~CS presidenza))
                             (S
                                 (NP-SBJ (-NONE- *-2333))
                                 (VP (VAU~RA fu)
                                     (VP (VMA~PA affidata)
                                         (PP (PREP al)
                                             (NP (ART~DE al) (NOU~CS generale)
                                                 (NP (NOU~PR Ricciotti) (NOU~PR Garibaldi))))
                                           (PP (PREP sulla)
                                               (NP
                                                   (NP (ART~DE sulla) (NOU~CS base))
                                                   (PP (PREP del)
                                                       (NP (ART~DE del) (NOU~CS programma)
                                                           (NP
                                                               (NP
                                                                   (' ') (ART~DE L') (NOU~PR Albania)
                                                                   (' '))
                                                                (PP (PREP agli)
                                                                    (NP (ART~DE agli) (NOU~CP albanesi)))))))))))))))
                             (NP-SBJ (-NONE- *-1733))
                             (. .)) )


************** FRASE NEWS-496 **************

 ( (S
    (S
        (S-TMP
            (VP (VMA~PA Scoppiata)
                (NP-EXTPSBJ-233 (ART~DE la) (ADJ~OR prima) (NOU~CS guerra) (ADJ~QU mondiale)))
             (NP-SBJ (-NONE- *-233)))
          (, ,)
          (NP-SBJ (ART~DE le) (NOU~CP truppe) (ADJ~QU austriache))
          (VP (VMA~RA occuparono)
              (NP
                  (NP (ART~IN una) (NOU~CS parte))
                  (PP (PREP del)
                      (NP (ART~DE del) (NOU~CS Paese))))))
          (CONJ e)
          (S
              (NP (ART~DE lo) (PRO~DE stesso))
              (VP (VMA~RA fecero)
                  (PRN
                      (, ,)
                      (PP-TMP (PREP A_PARTIRE_DA)
                          (NP (ART~DE dal) (NUMR 1915)))
                       (, ,))
                    (NP-EXTPSBJ-2533 (PRO~DE quelle) (ADJ~QU italiane)))
                 (NP-SBJ (-NONE- *-2533)))
              (. .)) )


************** FRASE NEWS-497 **************

 ( (S
    (S
        (PP-TMP (PREP Nel)
            (NP (ART~DE Nel) (NUMR 1917)))
         (PRN
             (, ,)
             (PP (PREP con)
                 (NP
                     (NP (ART~DE il) (NOU~CS proclama))
                     (PP (PREP di)
                         (NP (NOU~PR Argirocastro)))))
                (, ,))
             (NP-SBJ (ART~DE il) (NOU~CS generale) (NOU~PR Ferrero))
             (VP (VMA~RA promise)
                 (NP
                     (NP (ART~DE l') (NOU~CS indipendenza))
                     (PP (PREP dell')
                         (NP (ART~DE dell') (NOU~PR Albania))))
                   (PP-LOC (PREP sotto)
                       (NP
                           (NP (ART~DE la) (NOU~CS protezione))
                           (PP (PREP dell')
                               (NP (ART~DE dell') (NOU~PR Italia)))))))
                (, ,)
                (CONJ ma)
                (S
                    (S
                        (NP-SBJ
                            (NP (ART~DE l') (NOU~CS accordo))
                            (ADJP
                                (ADJP (ADJ~QU italo))
                                (PUNCT -)
                                (ADJP (ADJ~QU greco)))
                             (PP-TMP (PREP del)
                                 (NP (ART~DE del) (NOU~CS luglio)
                                     (NP (NUMR 1919))))
                               (PRN
                                   (, ,)
                                   (SBAR
                                       (NP-3333 (PRO~RE che))
                                       (S
                                           (NP-SBJ (-NONE- *-3333))
                                           (VP (VMA~IM riconosceva)
                                               (NP (ADJ~IN alcuni) (NOU~CP diritti))
                                               (PP (PREP ad)
                                                   (NP (NOU~PR Atene))))))
                                       (, ,)))
                                 (VP (VAU~RA fu)
                                     (VP (VMA~PA preso)
                                         (ADVP (ADVB male))
                                         (PP-LGS (PREP dagli)
                                             (NP (ART~DE dagli) (NOU~CP albanesi))))))
                                 (CONJ e)
                                 (S
                                     (NP-SBJ (NOU~PR Valona))
                                     (VP (VMA~PA insorse)
                                         (PP (PREP contro)
                                             (NP (ART~DE la) (NOU~CS presenza) (ADJ~QU italiana))))))
                                 (. .)) )


************** FRASE NEWS-498 **************

 ( (S
    (NP-SBJ (ART~DE I) (ADJ~QU buoni) (NOU~CP rapporti))
    (VP (VMA~RA tornarono)
        (CONJ appena)
        (S
            (S
                (NP-SBJ (ART~DE l') (NOU~PR Italia))
                (NP (PRO~RI si))
                (VP (VMA~RA libero')
                    (PP (PREP di)
                        (NP (ADJ~DE quell') (NOU~CS accordo)))))
               (CONJ e)
               (S
                   (NP-SBJ-1433 (ART~DE il) (NOU~CS governo) (ADJ~QU italiano))
                   (VP (VMO~RA pote')
                       (S
                           (VP (VMA~IN sponsorizzare)
                               (NP
                                   (NP (ART~DE l') (NOU~CS ammissione))
                                   (PP (PREP dell')
                                       (NP (ART~DE dell') (NOU~PR Albania)))
                                    (PP-LOC (PREP nella)
                                        (NP
                                            (NP (ART~DE nella) (NOU~CA Societa'))
                                            (PP (PREP delle)
                                                (NP (ART~DE delle) (NOU~CP Nazioni)))))
                                       (, ,)
                                       (SBAR
                                           (NP-2333 (PRO~RE che))
                                           (S
                                               (NP-SBJ (-NONE- *-2333))
                                               (VP (VMA~RA avvenne)
                                                   (NP (ART~DE il) (NUMR 17) (NOU~CS dicembre)
                                                       (NP (NUMR 1920)))
                                                    (ADVP-TMP (ADVB contemporaneamente)
                                                        (PP (PREP alla)
                                                            (NP
                                                                (NP (ART~DE alla) (NOU~CS proclamazione))
                                                                (PP (PREP della)
                                                                    (NP (ART~DE della) (ADJ~PO sua) (NOU~CS indipendenza)))))))))))
                                         (NP-SBJ (-NONE- *-1433)))))))
                          (. .)) )


************** FRASE NEWS-499 **************

 ( (S
    (VP
        (PP-TMP (PREP Nel)
            (NP (ART~DE Nel) (NUMR 1924)))
         (NP-EXTPSBJ-333 (ART~DE il) (NOU~PR Ahmed))
         (VP (VMA~RA assunse)
             (NP (ART~DE il) (NOU~CS potere)))
          (CONJ e)
          (S
              (NP-TMP (NUMR quattro) (NOU~CP anni) (ADVB dopo))
              (VP (VAU~RA fu)
                  (VP (VMA~PA proclamato)
                      (NP-PRD (NOU~CP re))))
                (NP-SBJ (-NONE- *-333))))
          (NP-SBJ (-NONE- *-333))
          (. .)) )


************** FRASE NEWS-500 **************

 ( (S
    (PP-TMP (PREP Dopo)
        (NP
            (NP (ART~IN una) (NOU~CS fase))
            (PP (PREP di)
                (NP
                    (NP (NOU~CP concessioni))
                    (PP (PREP alla)
                        (NP (ART~DE alla) (NOU~PR Jugoslavia)))))))
         (VP (VMA~RA oriento')
             (NP (ART~DE la) (ADJ~PO sua) (NOU~CS politica))
             (PP-LOC (PREP verso)
                 (NP (ART~DE l') (NOU~PR Italia)
                     (SBAR
                         (S
                             (PP (PREP con)
                                 (NP (PRO~RE cui)))
                              (VP (VMA~RA concluse)
                                  (NP (ART~DE il) (NUMR 27) (NOU~CA novembre)
                                      (NP (NUMR 1927)))
                                   (NP
                                       (NP (ART~IN un) (NOU~CS patto))
                                       (PP (PREP di)
                                           (NP
                                               (NP (NOU~CS amicizia))
                                               (CONJ e)
                                               (NP (NOU~CS sicurezza))))))
                                   (NP-SBJ (-NONE- *-8.1033)))))))
                    (NP-SBJ-8.1033 (-NONE- *))
                    (. .)) )


************** FRASE NEWS-501 **************

 ( (S
    (NP-SBJ (ART~DE I) (NOU~CP magistrati))
    (PRN
        (, ,)
        (ADVP-TMP (ADVB intanto))
        (, ,))
     (VP (VAU~RE hanno)
         (VP (VMA~PA confermato)
             (NP
                 (NP (ART~DE l') (NOU~CS incriminazione))
                 (PP (PREP per)
                     (NP
                         (NP (NOU~CA responsabilita'))
                         (PP (PREP nelle)
                             (NP
                                 (NP (ART~DE nelle) (NOU~CP violenze))
                                 (PP-TMP (PREP dei)
                                     (NP (ART~DE dei) (NOU~CP giorni) (ADJ~DI scorsi)))))
                            (PP (PREP dei)
                                (NP
                                    (NP (ART~DE dei) (ADJ~QU massimi) (NOU~CP dirigenti))
                                    (PP (PREP dei)
                                        (NP
                                            (NP (ART~DE dei) (NOU~CP partiti))
                                            (PP (PREP di)
                                                (NP (NOU~CS opposizione)))))
                                       (, ,)
                                       (PP (PREP dagli)
                                           (NP
                                               (NP (ART~DE dagli) (ADJ~QU ex) (NOU~CP comunisti))
                                               (PP (PREP del)
                                                   (NP (ART~DE del) (NOU~CS Partito) (ADJ~QU socialista))))
                                             (PP (PREP alla)
                                                 (NP
                                                     (NP (ART~DE alla) (NOU~CS destra))
                                                     (PP (PREP di)
                                                         (NP (NOU~PR Alleanza) (ADJ~QU democratica)))))))))))))
                        (. .)) )


************** FRASE NEWS-502 **************

 ( (S
    (S
        (ADVP (ADVB Non))
        (VP (VAU~RE sono)
            (VP (VMA~PA perseguite)
                (PP
                    (PP (PREP per)
                        (NP (ART~DE le) (ADJ~PO loro) (NOU~CP idee))) (-NONE- *-1333))))
            (NP-SBJ-3.1033 (-NONE- *)))
         (PUNCT -)
         (VP (VAU~RE ha)
             (VP (VMA~PA dichiarato)
                 (NP-EXTPSBJ-1133 (NOU~PR Berisha))
                 (PUNCT -)
                 (CONJ ma)
                 (PP (PREP per)
                     (NP (ART~DE gli)
                         (NP (NOU~CP atti))
                         (VP (VMA~PA compiuti)
                             (NP (-NONE- *)))))))
              (NP-SBJ (-NONE- *-1133))
              (. .)) )


************** FRASE NEWS-503 **************

 ( (S
    (VP
        (NP-PRD (NOU~CP Tempi) (ADJ~QU duri)) (-NONE- *)
        (PP-LOC (PREP a)
            (NP (NOU~PR Tirana)))
         (PP (PREP per)
             (NP (ART~DE i)
                 (NP (NOU~CP partiti))
                 (SBAR
                     (NP-8333 (PRO~RE-833 che))
                     (S
                         (NP-SBJ (-NONE- *-8333))
                         (PP-TMP (PREP dal)
                             (NP (ART~DE dal) (NOU~CS maggio) (ADJ~DI scorso)))
                          (VP (VMA~RE contestano)
                              (NP
                                  (NP (ART~DE la) (ADJ~QU larghissima) (NOU~CS vittoria) (ADJ~QU elettorale))
                                  (PP (PREP del)
                                      (NP (ART~DE del) (NOU~CS Centro)
                                          (PUNCT -)
                                          (NP (NOU~CS destra)))))
                                 (S
                                     (VP (VMA~GE disertando)
                                         (NP (ART~DE il) (NOU~CS Parlamento)))
                                      (NP-SBJ (-NONE- *-833)))))))))
                 (NP-SBJ (-NONE- *))
                 (. .)) )


************** FRASE NEWS-504 **************

 ( (S
    (NP-SBJ
        (NP (ART~IN una) (NOU~CS manifestazione))
        (PP (PREP di)
            (NP (ADVB circa) (NUMR 200) (NOU~CP persone)))
         (, ,)
         (VP (VMA~PA inscenata)
             (NP (-NONE- *))
             (PP-LOC (PREP davanti)
                 (PP (PREP al)
                     (NP (ART~DE al)
                         (NP (ADJ~QU vecchio) (NOU~CS stadio))
                         (SBAR
                             (S
                                 (NP-LOC (PRO~LO dove))
                                 (NP-TMP (NOU~CS domenica) (ADJ~DI scorsa))
                                 (VP (VAU~IM erano)
                                     (VP (VMA~PA cominciati)
                                         (NP-EXTPSBJ-1833 (ART~DE i)
                                             (NP (NOU~CP disordini))
                                             (ADJP (ADVB piu') (ADJ~QU violenti)))))
                                    (NP-SBJ (-NONE- *-1833)))))))))
               (, ,)
               (ADVP-TMP (ADVB ieri))
               (VP (VAU~RE e')
                   (VP (VAU~PA stata)
                       (ADVP (ADVB facilmente))
                       (VP (VMA~PA dispersa))))
                 (PP-LGS (PREP dalla)
                     (NP-28.133 (ART~DE dalla) (NOU~CS polizia)))
                  (, ,)
                  (PP (PREP senza)
                      (S
                          (VP (VMA~IN ricorrere)
                              (PP (PREP a)
                                  (NP (NOU~CP metodi) (ADJ~QU pesanti))))
                            (NP-SBJ (-NONE- *-28.133))))
                      (. .)) )


************** FRASE NEWS-505 **************

 ( (S
    (VP
        (PP (PREP Per)
            (S
                (VP (VMA~IN prevenire)
                    (NP (ADJ~DI altre) (NOU~CP proteste)))
                 (NP-SBJ (-NONE- *))))
           (VP (VAU~RE sono)
               (VP (VAU~PA state)
                   (ADVP (ADVB comunque))
                   (VP (VMA~PA rafforzate))))
             (PP-LOC (PREP nella)
                 (NP (ART~DE nella) (NOU~CS capitale)))
              (NP-EXTPSBJ-1133
                  (NP (ART~DE le) (NOU~CP pattuglie))
                  (PP (PREP di)
                      (NP
                          (NP (NOU~CS guardia))
                          (PP (PREP agli)
                              (NP (ART~DE agli) (NOU~CP edifici) (ADJ~QU pubblici))))))
                  (, ,)
                  (S
                      (S
                          (NP-SBJ (PRO~RI si))
                          (VP (VAU~RE sono)
                              (VP (VMA~PA rivisti)
                                  (NP
                                      (NP (ART~DE i) (NOU~CP militari))
                                      (PP (PREP in)
                                          (NP (NOU~CS divisa)))))))
                           (CONJ ma)
                           (S
                               (NP-SBJ
                                   (NP (ART~DE l') (NOU~CS atmosfera) (ADJ~QU palpabile))
                                   (PP-LOC (PREP a)
                                       (NP (NOU~PR Tirana))))
                                 (ADVP (ADVB non))
                                 (VP (VMA~RE e')
                                     (ADVP (ADVB certo))
                                     (PP-PRD (PREP ad)
                                         (NP (ADJ~QU alta) (NOU~CS tensione)))))))
                          (NP-SBJ (-NONE- *-1133))
                          (. .)) )


************** FRASE NEWS-506 **************

 ( (S
    (PP-LOC (PREP In)
        (NP (ADJ~DE questa) (NOU~CS vicenda)))
     (VP (VMA~RE tira)
         (NP-EXTPSBJ-533 (ART~IN un')
             (NP (NOU~CS aria))
             (ADJP (ADVB tutta) (ADJ~QU balcanica))))
       (NP-SBJ (-NONE- *-533))
       (. .)) )


************** FRASE NEWS-507 **************

 ( (S
    (VP
        (PP-LOC (PREP Da)
            (NP (ART~IN una) (NOU~CS parte)))
         (NP-LOC (PRO~LO c'))
         (VP (VMA~RE e')
             (NP-EXTPSBJ-633
                 (NP (ART~DE la) (NOU~CS reazione)
                     (PP (PREP di)
                         (NP (NOU~PR Berisha))))
                   (PP
                       (CONJ e)
                       (PP (PREP della)
                           (NP (ART~DE della) (NOU~CS polizia))))))
               (, ,)
               (S
                   (PP-LOC (PREP dall')
                       (NP (ART~DE dall') (PRO~ID altra)))
                    (NP (PRO~RI-1633 si))
                    (VP (VMA~RE tenta)
                        (PP (PREP di)
                            (S
                                (VP (VMA~IN tessere)
                                    (NP
                                        (NP (ART~IN una) (NOU~CS mediazione))
                                        (PP (PREP tra)
                                            (NP
                                                (NP (NOU~CS Governo))
                                                (CONJ e)
                                                (NP (NOU~CS opposizione))))))
                                    (NP-SBJ (-NONE- *-1633)))))
                           (NP-SBJ (-NONE- *-1633))))
                     (NP-SBJ (-NONE- *-633))
                     (. .)) )


************** FRASE NEWS-508 **************

 ( (S
    (VP
        (ADVP-TMP (ADVB |L'_ALTRO_IERI|))
        (NP-433 (PRO~RI si))
        (VP (VAU~RE e')
            (VP (VMA~PA avuto)
                (NP
                    (NP (ART~IN un) (ADJ~OR primo) (NOU~CS incontro))
                    (PP (PREP tra)
                        (NP (ART~DE le) (NOU~CP parti)
                            (PRN
                                (, ,)
                                (SBAR
                                    (NP-1333 (PRO~RE che))
                                    (S
                                        (NP-SBJ (-NONE- *-1333))
                                        (ADVP (ADVB ufficialmente))
                                        (ADVP (ADVB non))
                                        (NP (PRO~RI si))
                                        (VP (VMA~RE parlano)
                                            (ADVP-TMP (ADVB DA_TEMPO)))))
                                   (, ,)))))))
                 (CONJ e)
                 (S
                     (ADVP-TMP (ADVB oggi))
                     (NP-LOC (PRO~LO ce))
                     (NP-2533 (PRO~PE ne))
                     (VP (VMA~FU sara')
                         (ADVP (ADVB probabilmente))
                         (NP (ART~IN un) (-NONE- *-2533)))
                      (NP-SBJ (-NONE- *-2833))))
                (NP-SBJ (-NONE- *-433))
                (. .)) )


************** FRASE NEWS-509 **************

 ( (S
    (PP (PREP per)
        (NP-233
            (NP (PRO~RE quanto))
            (SBAR
                (S
                    (VP (VAU~RE e')
                        (VP (VMA~PA dato)
                            (S
                                (VP (VMA~IN sapere)
                                    (NP (-NONE- *-4.1033)))
                                 (NP-SBJ (-NONE- *)))))
                        (NP-SBJ-4.1033 (-NONE- *-233))))))
            (PP-TMP (PREP negli)
                (NP (ART~DE negli) (ADJ~OR ultimi) (NOU~CP mesi)))
             (NP-SBJ
                 (NP-933
                     (NP (ART~DE il) (NOU~CS Centro)) (-NONE- *-)
                     (PUNCT -)
                     (NP (NOU~CS destra))
                     (PP (PREP al)
                         (NP (ART~DE al) (NOU~CS potere))))
                   (CONJ e)
                   (NP (ART~DE gli) (ADJ~QU ex) (NOU~CP comunisti)))
                (NP (PRO~RI si))
                (VP (VAU~IM erano)
                    (VP (VMA~PA trovati)
                        (PP-LOC (PREP intorno)
                            (PP (PREP a)
                                (NP (ART~IN un) (NOU~CS tavolo))))
                          (PP-LOC (PREP in)
                              (NP (ADVB soltanto)
                                  (NP (NOU~CS zona) (ADJ~QU neutra))))
                            (, ,)
                            (PP-LOC (PREP dentro)
                                (PP (PREP alla)
                                    (NP
                                        (NP (ART~DE alla) (NOU~CS residenza))
                                        (PP (PREP dell')
                                            (NP (ART~DE dell') (NOU~CS ambasciata) (ADJ~QU italiana)))
                                         (PRN
                                             (, ,)
                                             (SBAR
                                                 (S
                                                     (NP-LOC (PRO~LO dove))
                                                     (NP-TMP (ART~IN un) (NOU~CS tempo))
                                                     (VP (VMA~IM aveva)
                                                         (NP (NOU~CS sede))
                                                         (NP-EXTPSBJ-4333 (ART~DE il) (NOU~CS museo)
                                                             (NP (NOU~PR Lenin)
                                                                 (PUNCT -) (NOU~PR Stalin))))
                                                        (NP-SBJ (-NONE- *-4333))))))))))
                                (NP-SBJ (-NONE- *-933))
                                (. .)) )


************** FRASE NEWS-510 **************

 ( (S
    (PP
        (PP (PREP Sulle)
            (NP (ART~DE Sulle)
                (' ') (NOU~CP piramidi)
                (' ') (ADJ~QU albanesi)))
          (CONJ e)
          (PP (PREP sugli)
              (NP (ART~DE sugli)
                  (NP (NOU~CP eventi))
                  (SBAR
                      (NP-9333 (PRO~RE che))
                      (S
                          (NP-SBJ (-NONE- *-9333))
                          (VP (VAU~RE hanno)
                              (VP (VMA~PA preceduto)
                                  (NP
                                      (NP (ART~DE i) (NOU~CP fallimenti))
                                      (CONJ e)
                                      (NP
                                          (NP (ART~DE il) (NOU~CS congelamento))
                                          (PP (PREP dei)
                                              (NP (ART~DE dei) (NOU~CP depositi))))))))))))
                (VP (VMA~RE affiorano)
                    (ADVP-TMP (ADVB intanto))
                    (NP-EXTPSBJ-2233 (ADJ~QU strane) (NOU~CP storie)))
                 (NP-SBJ (-NONE- *-2233))
                 (. .)) )


************** FRASE NEWS-511 **************

 ( (S
    (NP-SBJ (PRO~ID Qualcuno))
    (PRN
        (, ,)
        (ADVP (ADVB provvidenzialmente))
        (, ,))
     (VP (VMA~RE fornisce)
         (ADVP (ADVB anche))
         (NP (NOU~CP dati) (ADJ~QU concreti)))
      (. .)) )


************** FRASE NEWS-512 **************

 ( (NP (ART~DE il)
    (NP (ADVB PER_ESEMPIO)
        (NP (NOU~CS direttore))
        (PP (PREP della)
            (NP
                (NP (ART~DE della) (NOU~CS Banca) (ADJ~QU statale))
                (PP (PREP di)
                    (NP (NOU~CS risparmio)))))
           (PRN
               (, ,)
               (NP (NOU~PR Bedri) (NOU~PR Collaku))))
         (. .)) )


************** FRASE NEWS-513 **************

 ( (S
    (PP-TMP (PREP In)
        (NP (ART~IN un) (ADJ~QU solo) (NOU~CS giorno)))
     (PRN
         (, ,)
         (NP-TMP (NUMR due) (NOU~CP settimane) (ADJ~DI fa))
         (, ,))
      (VP (VAU~RE abbiamo)
          (VP (VMA~PA visto)
              (NP (-NONE- *-1633))
              (S-PRD
                  (VP (VMA~IN arrivare)
                      (PP-LOC (PREP nel)
                          (NP (ART~DE nel) (ADJ~PO nostro) (NOU~CS istituto)))
                       (NP-EXTPSBJ-1633
                           (NP (NOU~CP depositi))
                           (PP (PREP per) (NUMR 800)))
                        (, ,)
                        (NP (ART~IN una)
                            (NP (NOU~CS tendenza))
                            (VP (VMA~PA iniziata)
                                (NP (-NONE- *))
                                (PP-TMP (PREP a)
                                    (NP
                                        (NP (NOU~CA meta'))
                                        (NP (NOU~CS dicembre)))))
                               (SBAR
                                   (NP-2333 (PRO~RE che) (-NONE- *-))
                                   (S
                                       (NP-SBJ-2833 (-NONE- *-2333))
                                       (NP-2933 (PRO~RI si))
                                       (VP (VAU~IM era)
                                           (VP (VMA~PA andata)
                                               (S
                                                   (ADVP (ADVB VIA_VIA))
                                                   (VP (VMA~GE rafforzando)
                                                       (NP (-NONE- *-2933)))
                                                    (NP-SBJ (-NONE- *-2833)))))))))
                               (NP-SBJ (-NONE- *-1633)))))
                      (NP-SBJ (-NONE- *))
                      (. .)) )


************** FRASE NEWS-514 **************

 ( (S
    (S
        (ADVP (ADVB Evidentemente))
        (NP-SBJ-233
            (NP (PRO~ID molti))
            (PP (PREP di)
                (NP
                    (NP (PRO~DE coloro))
                    (SBAR
                        (NP-5333 (PRO~RE che))
                        (S
                            (NP-SBJ (-NONE- *-5333))
                            (VP (VAU~IM avevano)
                                (VP (VMA~PA investito)
                                    (PP-LOC (PREP in)
                                        (NP (ADJ~DE queste) (NOU~CA societa'))))))))))
                (VP (VAU~IM avevano)
                    (VP (VMA~PA ricevuto)
                        (NP
                            (NP (ART~DE il) (NOU~CS pagamento))
                            (PP (PREP degli)
                                (NP (ART~DE degli) (NOU~CP interessi)))))))
                 (CONJ ma)
                 (S
                     (VP (VMA~IM tornavano)
                         (PP (PREP ad)
                             (S
                                 (VP (VMA~IN affidare)
                                     (NP (ART~DE i) (ADJ~PO loro) (NOU~CP soldi))
                                     (PP (PREP a)
                                         (NP (PRO~PE noi))))
                                   (NP-SBJ (-NONE- *-18.1033)))))
                          (NP-SBJ-18.1033 (-NONE- *-233)))
                       (. .)) )


************** FRASE NEWS-515 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~IN Un) (NOU~CS imprenditore) (ADJ~QU edile))
        (PP-LOC (PREP del)
            (NP (ART~DE del) (NOU~PR Centro) (NOU~PR Italia)))
         (, ,)
         (SBAR
             (NP-8333 (PRO~RE che))
             (S
                 (NP-SBJ (-NONE- *-8333))
                 (ADVP-LOC (ADVB qui))
                 (VP (VAU~RE ha)
                     (VP (VMA~PA costruito)
                         (NP (ADJ~IN diversi) (NOU~CP immobili)))))))
          (, ,)
          (VP (VMA~RE afferma)
              (CONJ che)
              (S
                  (PRN
                      (, ,)
                      (PP-TMP (ADVB proprio) (PREP nel)
                          (NP (ART~DE nel)
                              (NP (NOU~CS periodo))
                              (SBAR
                                  (S
                                      (PP (PREP in)
                                          (NP (PRO~RE cui)))
                                       (VP (VMA~IM iniziavano)
                                           (PP (PREP a)
                                               (S
                                                   (VP (VMA~IN circolare))
                                                   (NP-SBJ (-NONE- *-2633))))
                                             (NP-EXTPSBJ-2633
                                                 (NP (NOU~CP voci) (ADJ~QU allarmanti))
                                                 (PP
                                                     (PP (PREP sulla)
                                                         (NP
                                                             (NP (ART~DE sulla) (NOU~CS finanziaria))
                                                             (PP (PREP della)
                                                                 (NP (ART~DE della) (NOU~CS zingara) (NOU~PR Sude))))))))
                                               (NP-SBJ (-NONE- *-2633))))))
                                   (, ,))
                                (VP (VAU~RE ha)
                                    (VP (VMA~PA registrato)
                                        (NP
                                            (NP (ART~IN un') (NOU~CS impennata))
                                            (PP (PREP di)
                                                (NP (NOU~CP vendite))))))
                                    (NP-SBJ (-NONE- *-133))))
                              (. .)) )


************** FRASE NEWS-516 **************

 ( (S
    (CONJ Ma)
    (NP-LOC (PRO~LO c'))
    (VP (VMA~RE e')
        (NP-EXTPSBJ-433 (ART~IN dell') (PRO~ID altro)))
     (NP-SBJ (-NONE- *-433))
     (. .)) )


************** FRASE NEWS-517 **************

 ( (S
    (PP-LOC (PREP A)
        (NP (NOU~PR Tirana)))
     (VP (VMA~RE sono)
         (PP-SBJ (-NONE- *-433))
         (PP-EXTPSBJ-933 (PREP-433 in) (-NONE- *-)
             (NP (PRO~ID molti)))
          (PP (PREP a)
              (VP (VMA~IN sussurrare) (-NONE- *-433)
                  (CONJ che)
                  (S
                      (NP-SBJ
                          (ADJbar-SBJ (ADJ~IN alcune)
                              (NP
                                  (' ') (NOU~CP piramidi)
                                  (' '))))
                         (ADVP (ADVB non))
                         (VP (VAU~FU verranno)
                             (VP (VMA~PA travolte)
                                 (PP-LGS (PREP dal)
                                     (NP (ART~DE dal) (NOU~CA crack)))))))))
                (. .)) )


************** FRASE NEWS-518 **************

 ( (NP (ART~DE I)
    (NP (NOU~CP nomi))
    (. .)) )


************** FRASE NEWS-519 **************

 ( (NP
    (NP (NOU~PR Vefa)
        (, ,)
        (NP
            (NP (PRO~DE quelle))
            (ADVP (ADVB IN_SOSTANZA))
            (ADVP (ADVB piu') (ADVB direttamente))
            (VP (VMA~PA collegate)
                (NP (-NONE- *))
                (PP (PREP al)
                    (NP (ART~DE al) (NOU~CS Partito) (ADJ~QU democratico)))
                 (CONJ mentre)
                 (S
                     (NP-SBJ1
                         (NP-SBJ (PRO~ID altre))
                         (PRN
                             (, ,)
                             (VP
                                 (ADVP-TMP (ADVB gia')) (VMA~PA dichiarate)
                                 (NP (-NONE- *))
                                 (VP
                                     (VP (VMA~PA fallite))
                                     (CONJ o)
                                     (PP (PREP con)
                                         (NP (ART~DE i)
                                             (NP (NOU~CP beni))
                                             (VP (VMA~PA congelati)
                                                 (NP (-NONE- *)))))))
                                  (, ,)))
                            (VP (VAU~IM avevano)
                                (VP (VMA~PA raccolto)
                                    (ADVP (ADVB soprattutto))
                                    (NP
                                        (NP (ART~DE gli) (NOU~CP investimenti))
                                        (PP (PREP di)
                                            (NP (ADJ~QU ex) (NOU~CP comunisti))))))))))
                    (, ,)
                    (NP (NOU~PR Gjallica)
                        (, ,) (NOU~PR Kamberi))
                     (. .)) )


************** FRASE NEWS-520 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (PRO~RE Chi))
        (SBAR
            (S
                (ADVP (ADVB non))
                (VP (VMA~FU chiudera')
                    (NP (ART~DE i) (NOU~CP battenti)))
                 (NP-SBJ (-NONE- *-133)))))
        (VP (VMA~RE e')
            (NP-PRD (ART~DE il)
                (NP (NOU~CS signor))
                (NP (NOU~PR Pellum) (NOU~PR Shehaj))
                (SBAR
                    (NP-1333 (PRO~RE che))
                    (S
                        (NP-SBJ (-NONE- *-1333))
                        (PP (PREP attraverso)
                            (NP-1333 (ART~DE la) (NOU~CS compagnia) (NOU~PR Silva)))
                         (VP (VAU~RE ha)
                             (VP (VMA~PA raccolto)
                                 (NP (NOU~CP fondi))
                                 (PP (PREP per)
                                     (S
                                         (VP (VMA~IN finanziare)
                                             (NP
                                                 (NP (ART~DE i) (ADJ~PO suoi) (NOU~CP investimenti))
                                                 (PP-LOC (PREP nelle)
                                                     (NP
                                                         (NP (ART~DE nelle) (NOU~CP cave))
                                                         (PP (PREP di)
                                                             (NP (NOU~CS bitume)))))))
                                              (NP-SBJ (-NONE- *-1333))))))))))
                      (. .)) )


************** FRASE NEWS-521 **************

 ( (S
    (S
        (NP-SBJ (ART~DE L') (NOU~CS inflazione))
        (VP (VMA~RE e')
            (NP-PRD
                (NP (ART~DE il) (ADJ~QU peggior) (NOU~CS nemico))
                (PP (PREP del)
                    (NP (ART~DE del) (NOU~CS popolo))))))
        (CONJ e)
        (S
            (VP-SBJ (VMA~IN rimettere)
                (PP-LOC+METAPH (PREP in)
                    (NP (NOU~CS circolazione)))
                 (PP-1333 (PREP senza)
                     (NP (NOU~CS controllo)))
                  (NP
                      (NP (ART~IN una) (NOU~CS massa) (ADJ~QU imponente))
                      (PP (PREP di)
                          (NP (NOU~CS denaro)))))
                 (NP-SBJ (-NONE- *)))
              (VP (VMA~RE significa)
                  (S
                      (VP (VMA~IN svalutare)
                          (NP (ART~DE la) (ADJ~PO nostra) (NOU~CS moneta)))
                       (NP-SBJ (-NONE- *))))
                 (. .)) )


************** FRASE NEWS-522 **************

 ( (S
    (NP-SBJ (NOU~PR Berisha))
    (VP (VMA~RE teme)
        (ADVP-TMP (ADVB poi))
        (ADVP (ADVB anche))
        (NP (ART~IN un) (ADJ~DI altro) (NOU~CS fenomeno) (ADJ~QU negativo)))
     (. .)) )


************** FRASE NEWS-523 **************

 ( (NP (ART~DE la)
    (NP
        (NP (NOU~CS scomparsa))
        (PP-LOC (PREP dal)
            (NP (ART~DE dal) (NOU~CS sistema) (ADJ~QU albanese)
                (PRN
                    (, ,)
                    (NP
                        (NP (NOU~CS vittima))
                        (PP (PREP di)
                            (NP
                                (NP (ART~IN un') (NOU~CS ondata))
                                (PP (PREP di)
                                    (NP (NOU~CS sfiducia))))))
                        (, ,))))
               (PP (PREP di)
                   (NP
                       (NP (ART~IN una) (NOU~CS massa) (ADJ~QU imponente))
                       (PP (PREP di)
                           (NP (NOU~CP investimenti))))))
               (. .)) )


************** FRASE NEWS-524 **************

 ( (S
    (PP (PREP Per)
        (NP (PRO~DE questo)))
     (VP (VAU~RE ha)
         (VP (VMA~PA annunciato)
             (NP
                 (NP (ART~DE la) (NOU~CS creazione))
                 (PP (PREP di)
                     (NP
                         (NP (ADJ~QU nuove) (NOU~CP zone) (ADJ~QU franche) (ADJ~QU esentasse))
                         (SBAR
                             (NP-1333 (PRO~RE che) (-NONE- *-))
                             (S
                                 (NP-SBJ-1233 (-NONE- *-1333))
                                 (VP (VMO~FU dovranno)
                                     (S
                                         (VP (VMA~IN attirare)
                                             (NP (ART~DE i)
                                                 (NP (NOU~CP capitali))
                                                 (VP (VMA~PA salvati)
                                                     (NP (-NONE- *))
                                                     (PP (PREP dai)
                                                         (NP (ART~DE dai) (NOU~CP fallimenti))))))
                                             (NP-SBJ (-NONE- *-1233)))))))))))
                  (NP-SBJ (-NONE- *))
                  (. .)) )


************** FRASE NEWS-525 **************

 ( (S
    (CONJ Ma)
    (ADVP (ADVB dove))
    (VP (VMA~FU troveranno)
        (NP (ART~DE i) (NOU~CP soldi))
        (NP-EXTPSBJ-633 (-NONE- *-)
            (NP-633 (ART~DE il) (NOU~CS Governo) (-NONE- *-))
            (CONJ e)
            (NP (ART~DE le) (NOU~CP banche)))
         (PP (PREP per)
             (S
                 (VP (VMA~IN mettere)
                     (NP (PRDT tutta) (ART~DE l') (NOU~CS operazione)))
                  (NP-SBJ (-NONE- *-633)))))
         (NP-SBJ (-NONE- *-633))
         (. ?)) )


************** FRASE NEWS-526 **************

 ( (S
    (PUNCT -)
    (VP (VMA~RE risponde)
        (NP-EXTPSBJ-433 (ADJ~QU Semplice) (NOU~PR Berisha))
        (PUNCT -)
        (S
            (VP (-NONE- *-133))
            (NP-SBJ (-NONE- *))))
      (NP-SBJ (-NONE- *-433))
      (. .)) )


************** FRASE NEWS-527 **************

 ( (S
    (CONJ e)
    (VP
        (ADVP (ADVB non))
        (VP (VMA~RE e')
            (ADJP-PRD (ADJ~QU vero))
            (CONJ che)
            (S
                (VP (VMA~RE rappresentano)
                    (NP
                        (NP (ADVB soltanto) (ART~IN un) (PRO~ID terzo))
                        (PP (PREP di)
                            (NP-1133
                                (NP (PRO~RE quanto))
                                (SBAR
                                    (S
                                        (VP (VAU~RE e')
                                            (VP (VAU~PA stato)
                                                (VP (VMA~PA raccolto))))
                                          (NP-SBJ (-NONE- *-1133))
                                          (PP-LGS (PREP dalle)
                                              (NP (ART~DE dalle) (NOU~CP finanziarie)))))))))
                         (NP-SBJ (-NONE- *))))
                   (, ,)
                   (S
                       (NP-SBJ (ART~DE i) (ADJ~PO nostri) (NOU~CP dati))
                       (VP (VMA~RE smentiscono)
                           (NP (ADJ~DE questa) (NOU~CS affermazione)))))
                  (. .)) )


************** FRASE NEWS-528 **************

 ( (S
    (CONJ Se)
    (S
        (NP-SBJ (ADJ~DE queste) (NOU~CP parole))
        (VP (VAU~FU saranno)
            (VP (VMA~PA confermate))))
      (, ,)
      (ADVP (ADVB allora))
      (NP-SBJ-833
          (NP (ART~DE gli) (NOU~CP esperti))
          (PP
              (PP (PREP del)
                  (NP (ART~DE del) (NOU~CS Fondo) (ADJ~QU monetario)))
               (CONJ e)
               (PP (PREP della)
                   (NP (ART~DE della) (NOU~CS Banca) (ADJ~QU mondiale)))))
          (VP (VMO~FU dovranno)
              (S
                  (VP (VMA~IN rivedere)
                      (PP (PREP in)
                          (NP (NOU~CA velocita')))
                       (NP
                           (NP (ART~DE i) (ADJ~PO loro) (NOU~CP criteri))
                           (PP
                               (PP (PREP di)
                                   (NP (NOU~CS calcolo))))))))
                 (NP-SBJ (-NONE- *-833))
                 (. .)) )


************** FRASE NEWS-529 **************

 ( (S
    (CONJ quando)
    (S
        (NP-SBJ (PRO~RI si))
        (VP (VMA~RE parla)
            (PP (PREP di)
                (NP (NOU~PR Albania)))))
       (PRN
           (, ,)
           (ADVP (ADVB evidentemente))
           (, ,))
        (VP (VMA~RE saltano)
            (NP-EXTPSBJ-1133
                (NP (PRDT tutti) (ART~DE i) (NOU~CP parametri) (ADJ~QU convenzionali))
                (PP
                    (PP (PREP di)
                        (NP (NOU~CS bilancio))))))
            (NP-SBJ (-NONE- *-1133))
            (. .)) )


************** FRASE NEWS-530 **************

 ( (S
    (VP (VMA~RE Siamo)
        (ADJP-PRD (ADJ~QU grati)
            (PP (PREP a)
                (NP-533 (PRO~ID tutti)
                    (NP (PRO~DE coloro)))
                 (SBAR
                     (NP-6333 (PRO~RE che))
                     (S
                         (NP-SBJ (-NONE- *-6333))
                         (VP (VMA~RE offrono)
                             (NP
                                 (NP (NOU~CS aiuto))
                                 (CONJ ed)
                                 (NP (NOU~CS assistenza) (ADJ~QU tecnica))))))))
               (, ,)
               (PP (PREP senza)
                   (S
                       (VP (VMA~IN aggiungere)
                           (NP (PRO~ID nulla) (ADVB DI_PIÙ)))
                        (NP-SBJ (-NONE- *-533)))))
               (NP-SBJ (-NONE- *))
               (. .)) )


************** FRASE NEWS-531 **************

 ( (S
    (CONJ Eppure)
    (NP-SBJ-233
        (NP (ART~DE gli) (NOU~CP esperti))
        (PP
            (PP (PREP della)
                (NP (ART~DE della) (NOU~CS Banca)))
             (CONJ e)
             (PP (PREP del)
                 (NP (ART~DE del) (NOU~CS Fondo)))))
        (VP (VMA~RE sono)
            (PP-PRD (PREP al)
                (NP (ART~DE al) (NOU~CS lavoro)))
             (PP (PREP da)
                 (NP (NOU~CP giorni)))
              (PP (PREP per)
                  (S
                      (VP (VMA~IN studiare)
                          (NP (ART~IN una)
                              (NP (NOU~CS soluzione))
                              (SBAR
                                  (NP-1333 (PRO~RE che))
                                  (S
                                      (NP-SBJ (-NONE- *-1333))
                                      (VP (VMA~FU coinvolgera')
                                          (NP
                                              (NP (ART~DE i) (NOU~CA partner) (ADJ~QU economici))
                                              (ADJP (ADVB piu') (ADJ~QU importanti))
                                              (PP (PREP di)
                                                  (NP (NOU~PR Tirana)))))))))
                             (NP-SBJ (-NONE- *-233)))))
                    (. .)) )


************** FRASE NEWS-532 **************

 ( (S
    (CONJ quando)
    (S
        (NP-SBJ-233 (ART~DE la) (NOU~CS gente))
        (NP (PRO~RI si))
        (VP (VAU~RE e')
            (VP (VMA~PA riversata)
                (PP-LOC (PREP in)
                    (NP (NOU~CS strada)))
                 (PP (PREP per)
                     (S
                         (VP (VMA~IN protestare)
                             (ADVP (ADVB rabbiosamente))
                             (PP-TMP (PREP dopo)
                                 (NP
                                     (NP (ART~DE il) (NOU~CS congelamento))
                                     (PP (PREP dei)
                                         (NP
                                             (NP (ART~DE dei) (NOU~CP fondi))
                                             (PP (PREP di)
                                                 (NP
                                                     (NP (PRO~ID alcune))
                                                     (PP (PREP delle)
                                                         (NP (ART~DE delle)
                                                             (' ') (NOU~CP piramidi)
                                                             (' '))))))))))
                                  (NP-SBJ (-NONE- *-233)))))))
                   (, ,)
                   (VP (VMA~IM correva)
                       (NP-EXTPSBJ (NOU~CS voce) (-NONE- *-))
                       (CONJ che)
                       (S
                           (NP-SBJ (ART~DE la) (NOU~CS bancarotta))
                           (VP (VAU~IM era)
                               (VP (VMA~PA stata)
                                   (NP-PRD (ART~IN un)
                                       (NP (NOU~CS complotto))
                                       (VP (VMA~PA ordito)
                                           (NP (-NONE- *))
                                           (PP (PREP tra)
                                               (NP
                                                   (NP-3533 (NOU~CS Governo))
                                                   (CONJ e)
                                                   (NP (NOU~PR Fondo) (ADJ~QU monetario))))
                                             (PP (PREP per)
                                                 (S
                                                     (VP (VMA~IN incamerare)
                                                         (NP
                                                             (NP (ART~DE i)
                                                                 (NP (NUMR 400)) (ADJ~QU sudati) (NOU~CP risparmi))
                                                              (CONJ e)
                                                              (NP
                                                                  (NP (ART~DE gli) (NOU~CP interessi))
                                                                  (PP (PREP da)
                                                                      (NP (NOU~CS favola)))
                                                                   (VP (VMA~PA promessi)
                                                                       (NP (-NONE- *))
                                                                       (PP-LGS (PREP da)
                                                                           (NP
                                                                               (NP (NOU~CP finanzieri))
                                                                               (PP (PREP senza)
                                                                                   (NP (NOU~CP scrupoli)))))))))
                                                              (NP-SBJ (-NONE- *-3533))))))))))
                                      (NP-SBJ (-NONE- *-2533))
                                      (. .)) )


************** FRASE NEWS-533 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Le) (NOU~CP pietre))
        (PP (PREP dei)
            (NP (ART~DE dei) (NOU~CP manifestanti))))
      (VP
          (VP (VAU~IM avevano)
              (ADVP-TMP (ADVB allora))) (VMA~PA preso)
           (PP (PREP di)
               (NP (NOU~CS mira)))
            (NP
                (NP (ART~DE i)
                    (NP (NOU~CP palazzi))
                    (PP (PREP del)
                        (NP (ART~DE del) (NOU~CS potere))))
                  (CONJ ma)
                  (NP
                      (NP (ADVB anche) (ART~DE le) (NOU~CP vetrate))
                      (PP (PREP degli)
                          (NP
                              (NP (ART~DE degli) (NOU~CP uffici))
                              (PP-LOC (PREP di)
                                  (NP (NOU~PR Tirana)))
                               (PP (PREP del)
                                   (NP (ART~DE del) (NOU~CS Fondo) (ADJ~QU monetario))))))))
                 (. .)) )


************** FRASE NEWS-534 **************

 ( (S
    (PP (PREP Alla)
        (NP (ART~DE Alla) (NOU~CS VOX_POPULI)))
     (NP-SBJ-433 (NOU~PR Berisha))
     (VP (VMA~RE risponde)
         (ADVP-TMP (ADVB adesso))
         (S
             (VP (VMA~GE evocando)
                 (NP
                     (NP (ART~DE lo) (NOU~CS spettro))
                     (PP (PREP della)
                         (NP (ART~DE della) (NOU~PR Segurimi)
                             (, ,)
                             (NP
                                 (NP (ART~DE la) (NOU~CS polizia) (ADJ~QU segreta))
                                 (PP (PREP del)
                                     (NP (ART~DE del) (ADJ~QU defunto) (NOU~CS regime) (ADJ~QU comunista)))
                                  (SBAR
                                      (NP-2333 (PRO~RE che))
                                      (S
                                          (NP-SBJ (-NONE- *-2333))
                                          (PP-TMP (PREP al)
                                              (NP
                                                  (NP (ART~DE al) (NOU~CS tempo))
                                                  (PP (PREP dello)
                                                      (NP
                                                          (NP (ART~DE dello) (NOU~CS stalinismo) (ADJ~QU ferreo))
                                                          (PP (PREP di)
                                                              (NP (NOU~PR Enver) (NOU~PR Hoxha)))))))
                                               (VP (VMA~IM aveva)
                                                   (PP-LOC (PREP al)
                                                       (NP (ART~DE al) (NOU~CS servizio)))
                                                    (NP
                                                        (NP (NUMR 5.000) (NOU~CP delatori))
                                                        (PP (PREP su)
                                                            (NP
                                                                (NP (NUMR tre) (NOU~CP milioni))
                                                                (PP (PREP di)
                                                                    (NP (NOU~CP albanesi))))))))))))))))
                          (NP-SBJ (-NONE- *-433))
                          (. .)) )


************** FRASE NEWS-535 **************

 ( (S
    (NP-133 (ART~DE I) (NOU~CP disordini))
    (PUNCT -)
    (VP (VAU~RE ha)
        (VP (VMA~PA detto)
            (PUNCT -6-)
            (S
                (NP-SBJ (-NONE- *-133))
                (VP (VAU~RE sono)
                    (VP (VAU~PA stati)
                        (VP (VMA~PA fomentati))))
                  (PP (PREP con)
                      (NP
                          (NP (NOU~CP metodi))
                          (CONJ e)
                          (NP
                              (NP (NOU~CP schemi))
                              (PP (PREP della)
                                  (NP (ART~DE della)
                                      (VP (VMA~PA disciolta)
                                          (NP (-NONE- *)))
                                       (NP (NOU~CS polizia) (ADJ~QU segreta))))))))))
               (NP-SBJ (-NONE- *))
               (. .)) )


************** FRASE NEWS-536 **************

 ( (S
    (PP (PREP Alla)
        (NP
            (NP (ART~DE Alla) (ADJ~PO sua) (NOU~CA ipotesi))
            (PP (PREP di)
                (NP (NOU~CS complotto)))))
       (NP-SBJ (ART~DE il) (NOU~CS Presidente))
       (VP (VAU~RE ha)
           (VP (VMA~PA fatto)
               (S
                   (VP (VMA~IN seguire)
                       (ADVP-TMP (ADVB subito))
                       (NP-1233 (NOU~CP fatti) (ADJ~QU concreti)))
                    (NP-SBJ (-NONE- *-1233)))))
           (. .)) )


************** FRASE NEWS-537 **************

 ( (S
    (VP
        (PP-LOC (PREP Nel)
            (NP
                (NP (ART~DE Nel) (NOU~CS distretto))
                (PP-LOC (PREP di)
                    (NP (NOU~PR Berat)))))
           (VP (VAU~RE-533 sono)
               (VP (VAU~PA-633 state)
                   (VP (VMA~PA-733 arrestate))))
             (NP-EXTPSBJ-833 (NUMR 150) (NOU~CP-933 persone))
             (, ,)
             (S
                 (VP (-NONE- *-533)
                     (VP (-NONE- *-633)
                         (VP (-NONE- *-733))))
                   (NP-SBJ (-NONE- *-1133))
                   (NP-EXTPSBJ-1133
                       (NP (PRO~ID altre))
                       (NP (NUMR 70) (-NONE- *-933)))
                    (PP-LOC (PREP nella)
                        (NP
                            (NP (ART~DE nella) (NOU~CS regione))
                            (PP-LOC (PREP di)
                                (NP (NOU~PR Valona)))
                             (, ,)
                             (NP (ART~DE il)
                                 (' ')
                                 (NP (NOU~CS vivaio))
                                 (' ')
                                 (SBAR
                                     (S
                                         (PP-LOC (PREP in)
                                             (NP (PRO~RE cui)))
                                          (VP (VAU~IM avevano)
                                              (VP (VMA~PA prosperato)
                                                  (NP-EXTPSBJ-2633
                                                      (NP (PRO~ID alcuni))
                                                      (PP (PREP dei)
                                                          (NP
                                                              (ADJP (ADVB piu') (ADJ~QU noti))
                                                              (NP (ART~DE dei) (NOU~CP finanzieri) (ADJ~QU albanesi))
                                                              (PP (PREP d')
                                                                  (NP (NOU~CS assalto))))))))
                                                (NP-SBJ (-NONE- *-2633)))))))))
                           (NP-SBJ (-NONE- *-833))
                           (. .)) )


************** FRASE NEWS-538 **************

 ( (S
    (PP-LOC (PREP Nella)
        (NP (ART~DE Nella) (NOU~CS rete)))
     (VP (VAU~RE sono)
         (VP (VMA~PA caduti)
             (NP-EXTPSBJ-533
                 (NP (ADJ~IN diversi) (NOU~CP dirigenti))
                 (PP (PREP dell')
                     (NP (ART~DE dell') (NOU~CS opposizione)))
                  (, ,)
                  (SBAR
                      (S
                          (PP (PREP tra)
                              (NP (PRO~RE cui)))
                           (VP (-NONE- *)
                               (NP-LOC (-NONE- *))
                               (NP-EXTPSBJ-1333
                                   (NP (ADVB anche) (ART~DE il) (NOU~CS segretario))
                                   (PP (PREP del)
                                       (NP
                                           (NP (ART~DE del) (NOU~CS Partito) (ADJ~QU socialista))
                                           (PP-LOC (PREP di)
                                               (NP (NOU~PR Valona)))))))
                                (NP-SBJ (-NONE- *-1333)))))))
                 (NP-SBJ (-NONE- *-533))
                 (. .)) )


************** FRASE NEWS-539 **************

 ( (S
    (CONJ Mentre)
    (S
        (PP-TMP (PREP a)
            (NP (NOU~CS ottobre)))
         (NP-SBJ-433
             (NP (NOU~CS Fondo) (ADJ~QU monetario))
             (CONJ e)
             (NP (NOU~CS Banca) (ADJ~QU mondiale)))
          (VP (VMA~IM lanciavano)
              (NP
                  (NP (ART~DE l') (NOU~CS allarme))
                  (PP (PREP per)
                      (NP
                          (NP (ART~DE la)
                              (' ') (NOU~CS bolla)
                              (' ') (ADJ~QU finanziaria))
                           (PP-LOC (PREP di)
                               (NP (NOU~PR Tirana))))))
                   (PRN
                       (PUNCT -)
                       (S
                           (VP (VMA~GE mettendo)
                               (PP (PREP in)
                                   (NP (NOU~CS guardia)))
                                (NP (ART~DE il) (NOU~CS Governo))
                                (PP (PREP dalle)
                                    (NP (ART~DE dalle)
                                        (NP (NOU~CA societa'))
                                        (SBAR
                                            (NP-2333 (PRO~RE che))
                                            (S
                                                (NP-SBJ (-NONE- *-2333))
                                                (VP (VMA~IM promettevano)
                                                    (PP
                                                        (PP (PREP a)
                                                            (NP (ADJ~QU ingenui) (NOU~CP risparmiatori)))
                                                         (CONJ ma)
                                                         (PP (PREP a)
                                                             (NP (ADVB anche)
                                                                 (NP (NOU~CP profittatori))
                                                                 (PP (PREP di)
                                                                     (NP (ADJ~IN ogni) (NOU~CS genere))))))
                                                         (NP
                                                             (NP (NOU~CP tassi) (ADJ~QU DA_CAPOGIRO))
                                                             (PP (PREP di)
                                                                 (NP (NOU~CS interesse))))))))))
                                         (NP-SBJ (-NONE- *-433)))
                                      (PUNCT -))))
                             (NP-SBJ-4633 (ART~DE gli) (ADJ~QU ex) (NOU~CP comunisti))
                             (NP (PRO~RI si))
                             (VP (VMA~IM leccavano)
                                 (NP
                                     (NP (ART~DE le) (NOU~CP ferite))
                                     (PP (PREP della)
                                         (NP (ART~DE della) (NOU~CS sconfitta) (ADJ~QU elettorale))))
                                   (, ,)
                                   (S
                                       (VP (VMA~GE disinteressandosi)
                                           (NP (PRO~RI disinteressandosi))
                                           (PP (PREP di)
                                               (NP (ART~IN un)
                                                   (NP (NOU~CS problema))
                                                   (VP (VMA~PE incombente)
                                                       (NP (-NONE- *))))))))
                                     (NP-SBJ (-NONE- *-4633))
                                     (. .)) )


************** FRASE NEWS-540 **************

 ( (S
    (S
        (PP-LOC (PREP A)
            (NP (NOU~PR Tirana)))
         (NP-SBJ-333
             (NP (ART~DE il) (NOU~CA Forum))
             (PP (PREP dell')
                 (NP (ART~DE dell') (NOU~CS opposizione)))
              (, ,)
              (SBAR
                  (NP-8333 (PRO~RE che))
                  (S
                      (NP-SBJ (-NONE- *-8333))
                      (VP (VMA~RE riunisce)
                          (NP
                              (NP (ART~DE i) (NOU~CP partiti))
                              (PP (PREP anti)
                                  (PUNCT -)
                                  (NP (NOU~PR Berisha))))))))
                (, ,)
                (VP (VAU~RE ha)
                    (VP (VMA~PA convocato)
                        (NP (ART~IN delle) (NOU~CP manifestazioni)))))
               (CONJ ma)
               (S
                   (PP
                       (PP (ADVB |UN_PO'|) (PREP per)
                           (NP (ART~DE la) (NOU~CS repressione)))
                        (CONJ e)
                        (PP (PREP per)
                            (NP (ADVB |UN_PO'|)
                                (NP (NOU~CP difetti))
                                (PP (PREP di)
                                    (NP (NOU~CS organizzazione))))))
                        (ADVP (ADVB non))
                        (VP (VAU~RE e')
                            (VP (VMA~PA riuscito)
                                (PRN
                                    (, ,)
                                    (ADVP-TMP (ADVB finora))
                                    (, ,))
                                 (PP (PREP a)
                                     (S
                                         (VP (VMA~IN ottenere)
                                             (NP (NOU~CP risultati) (ADJ~QU politici) (ADJ~QU concreti)))
                                          (NP-SBJ (-NONE- *-35.1033))))))
                              (NP-SBJ-35.1033 (-NONE- *-333)))
                           (. .)) )


************** FRASE NEWS-541 **************

 ( (S
    (S
        (VP (VMA~PA Rimasta)
            (PP (PREP senza)
                (NP (NOU~CS lavoro)))
             (PP-TMP (PREP dopo)
                 (NP
                     (NP (ART~DE la) (NOU~CS fine))
                     (PP (PREP del)
                         (NP (ART~DE del) (NOU~CS regime) (ADJ~QU comunista))))))
             (NP-SBJ (-NONE- *-12.1033)))
          (, ,)
          (VP (VAU~IM era)
              (VP (VMA~PA riuscita)
                  (PP (PREP a)
                      (S
                          (VP (VMA~IN mettere)
                              (ADVP (ADVB IN_PIEDI))
                              (NP (ART~IN una)
                                  (NP (NOU~CS finanziaria))
                                  (SBAR
                                      (NP-1333 (PRO~RE che))
                                      (S
                                          (NP-SBJ (-NONE- *-1333))
                                          (VP (VMA~IM pagava)
                                              (NP
                                                  (NP (NOU~CP interessi))
                                                  (PP (PREP del)
                                                      (NP
                                                          (NP (ART~DE del) (NUMR 50) (SPECIAL %))
                                                          (PP (PREP al)
                                                              (NP (ART~DE al) (NOU~CS mese)))))))))))
                                   (NP-SBJ (-NONE- *-12.1033))))))
                       (NP-SBJ-12.1033 (-NONE- *))
                       (. .)) )


************** FRASE NEWS-542 **************

 ( (PP
    (PP (ADVB Ovviamente) (PREP con)
        (NP
            (NP (ART~DE i) (NOU~CP denari))
            (PP (PREP di)
                (NP (ADJ~QU nuovi) (NOU~CP sottoscrittori)))))
       (. .)) )


************** FRASE NEWS-543 **************

 ( (S
    (NP-SBJ (ART~DE Il) (PRO~ID tutto))
    (VP (VMA~RE regge)
        (PP (PREP fino)
            (PP (PREP a)
                (NP-633 (PRO~RE quando)
                    (S
                        (VP (VMA~RE sono)
                            (NP-TMP (-NONE- *-633))
                            (ADJP-PRD
                                (ADJP-1133
                                    (ADVP
                                        (ADVbar (ADVB molto))) (ADVB piu') (ADJ~QU consistenti)
                                     (NP (ART~DE i) (NOU~CP versamenti)
                                         (PRN
                                             (-LRB- -LRB-)
                                             (SBAR
                                                 (S
                                                     (NP-1433 (PRO~RE che))
                                                     (NP-SBJ-1533
                                                         (NP (ART~DE i) (NOU~CP gestori))
                                                         (PP (PREP di)
                                                             (NP (ADJ~DE queste) (NOU~CP imprese))))
                                                       (VP (VMA~RE provvedono)
                                                           (ADVP (ADVB comunque))
                                                           (PP (PREP a)
                                                               (S
                                                                   (VP (VMA~IN scremare)
                                                                       (NP (-NONE- *-1433))
                                                                       (PP (PREP a) (ADJ~PO proprio) (NOU~CS vantaggio)))
                                                                    (NP-SBJ (-NONE- *-1533)))))))
                                                     (-RRB- -RRB-))))
                                            (, ,)
                                            (PP (PREP delle)
                                                (NP
                                                    (NP (ART~DE delle) (NOU~CP richieste))
                                                    (PP (PREP di)
                                                        (NP (NOU~CS rimborso)))))))
                                         (NP-SBJ (-NONE- *-1133)))))))
                          (. .)) )


************** FRASE NEWS-544 **************

 ( (S
    (CONJ Quando)
    (S
        (NP-SBJ (ART~DE il) (NOU~CS meccanismo))
        (NP (PRO~RI si))
        (VP (VMA~RE inceppa)))
     (, ,)
     (VP (VMA~RE e')
         (NP-PRD (ART~DE il) (NOU~CS disastro)))
      (NP-SBJ (-NONE- *))
      (. .)) )


************** FRASE NEWS-545 **************

 ( (S
    (NP-SBJ-133 (NOU~PR Sudja))
    (VP (VAU~IM era)
        (VP (VMA~PA riuscita)
            (PP (PREP ad)
                (S
                    (VP (VMA~IN accreditarsi)
                        (NP (PRO~RI accreditarsi))
                        (PP (PREP come)
                            (NP
                                (NP (NOU~CS LONGA_MANUS))
                                (PP (PREP di)
                                    (NP
                                        (VP
                                            (VP (VMA~PA presunti))
                                            (, ,)
                                            (ADJP
                                                (ADJP (ADJ~QU inesistenti))
                                                (CONJ e)
                                                (ADJP (ADJ~QU ricchissimi))))
                                          (NP (NOU~CP finanzieri) (ADJ~QU arabi))
                                          (SBAR
                                              (S
                                                  (PP-1733 (PREP dei)
                                                      (NP (ART~DE dei) (PRO~RE quali)))
                                                   (VP (VAU~CO sarebbe)
                                                       (VP (VMA~PA stata)
                                                           (ADVP (ADVB IN_REALTÀ))
                                                           (PRN
                                                               (, ,)
                                                               (ADVP (ADVB A_SUO_DIRE))
                                                               (, ,))
                                                            (NP-PRD
                                                                (NP (NOU~CP prestanome))
                                                                (PP (-NONE- *-1733)))))
                                                       (NP-SBJ (-NONE- *-133)))))))))
                                  (NP-SBJ (-NONE- *-133))))))
                      (. .)) )


************** FRASE NEWS-546 **************

 ( (S
    (NP-SBJ
        (ADVP (ADVB Oltre)) (NUMR 100))
     (NP (PRO~PE le))
     (VP (VAU~RE hanno)
         (VP (VMA~PA creduto)))
      (. .)) )


************** FRASE NEWS-547 **************

 ( (S
    (NP-TMP (ADVB Solo) (ADJ~IN poche)
        (NP (NOU~CP settimane) (ADJ~DI fa)))
     (VP (VAU~IM aveva)
         (VP (VMA~PA organizzato)
             (NP (ADVB anche) (ART~IN una)
                 (NP (NOU~CS lotteria))
                 (SBAR
                     (NP-1333 (PRO~RE che))
                     (S
                         (NP-SBJ (-NONE- *-1333))
                         (NP (PRO~PE le))
                         (VP (VAU~CO avrebbe)
                             (VP (VMA~PA fruttato)
                                 (NP
                                     (NP (ADVB circa) (NUMR 6) (NOU~CP miliardi))
                                     (PP (PREP di)
                                         (NP (NOU~CS incasso)))))))))))
              (NP-SBJ (-NONE- *))
              (. .)) )


************** FRASE NEWS-548 **************

 ( (S
    (NP-SBJ (ART~IN Un) (NOU~CA crack) (ADJ~QU finanziario))
    (VP (VMA~RE scatena)
        (NP (ART~DE l') (NOU~CS opposizione)))
     (. .)) )


************** FRASE NEWS-549 **************

 ( (S
    (PP-LOC (ADVB Anche) (PREP sull')
        (NP (ART~DE sull') (NOU~PR Albania)))
     (VP (VMA~RE soffia)
         (NP-EXTPSBJ-533
             (NP (ART~DE il) (NOU~CS vento))
             (PP (PREP della)
                 (NP (ART~DE della) (NOU~CS protesta)))))
        (NP-SBJ (-NONE- *-533))
        (. .)) )


************** FRASE NEWS-550 **************

 ( (S
    (VP
        (S
            (VP (VMA~RE Parto)
                (PP (PREP per)
                    (NP (ART~DE le) (NOU~CP vacanze))))
              (NP-SBJ (-NONE- *-1433)))
           (, ,)
           (VP (VAU~IM aveva)
               (VP (VMA~PA dichiarato)
                   (ADVP (ADVB allegramente))
                   (NP-TMP
                       (NP (ART~IN una) (NOU~CS decina))
                       (PP (PREP di)
                           (NP (NOU~CP giorni) (ADJ~DI fa))))
                     (NP-EXTPSBJ-1433 (NOU~PR Sudja))))
               (, ,)
               (CONJ e)
               (S
                   (NP-SBJ (ART~DE la) (NOU~CS notizia))
                   (VP (VAU~IM aveva)
                       (VP (VMA~PA avuto)
                           (PP-LOC (PREP su)
                               (NP (NOU~PR Tirana)))
                            (NP
                                (NP (ART~DE l') (NOU~CS effetto))
                                (PP (PREP di)
                                    (NP (ART~IN una) (NOU~CS bomba))))))))
                  (NP-SBJ (-NONE- *-1433))
                  (. .)) )


************** FRASE NEWS-551 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Le)
            (' ') (NOU~CP vacanze)
            (' '))
         (VP (VMA~PA annunciate)
             (NP (-NONE- *)))
          (PP (PREP di)
              (NP (NOU~PR Sudja) (NOU~PR Kademi))))
        (VP (VMA~IM erano)
            (NP-PRD (ART~DE il)
                (NP (NOU~CS segnale))
                (PP (PREP in)
                    (NP (NOU~CS codice)))
                 (CONJ che)
                 (S
                     (VP (VMA~IM stava)
                         (PP (PREP per)
                             (S
                                 (VP (VMA~IN esplodere)
                                     (PP (PREP come)
                                         (NP
                                             (NP (ART~IN una) (NOU~CS bolla))
                                             (PP (PREP di)
                                                 (NP (NOU~CS sapone))))))
                                     (NP-SBJ (-NONE- *-2333))))
                               (NP-433 (ART~DE il) (NOU~CS gruppo) (NOU~PR Gjallica)
                                   (, ,)
                                   (NP
                                       (NP (PRO~ID una))
                                       (PP (PREP delle)
                                           (NP (ART~DE delle)
                                               (NP (ADJ~IN molte))
                                               (' ')
                                               (NP (NOU~CP piramidi) (ADJ~QU finanziarie))
                                               (' ')
                                               (SBAR
                                                   (NP-3333 (PRO~RE che))
                                                   (S
                                                       (NP-SBJ (-NONE- *-3333))
                                                       (PP-TMP (PREP dopo)
                                                           (NP
                                                               (NP (ART~DE il) (NOU~CS crollo))
                                                               (PP (PREP del)
                                                                   (NP (ART~DE del) (NOU~CS comunismo)))))
                                                          (VP (VAU~RE hanno)
                                                              (VP (VMA~PA calamitato)
                                                                  (NP (ART~DE gli) (NOU~CP investimenti) (ADJ~QU nazionali)))))))))))
                                       (NP-SBJ (-NONE- *-2333)))))
                              (. .)) )


************** FRASE NEWS-552 **************

 ( (S
    (PP-SBJ (PREP In) (NUMR 500))
    (, ,)
    (VP (VAU~RE hanno)
        (VP (VMA~PA scommesso)
            (PP (PREP su)
                (NP (ADJ~DE questa) (NOU~CS pesca) (ADJ~QU miracolosa)))
             (PP (PREP con)
                 (NP
                     (NP (ART~DE la) (NOU~CS promessa))
                     (PP (PREP di)
                         (NP
                             (NP (NOU~CP rendimenti) (ADJ~QU mensili))
                             (PP (PREP sul)
                                 (NP (ART~DE sul)
                                     (NP (NOU~CS capitale))
                                     (VP (VMA~PA versato)
                                         (NP (-NONE- *)))))
                                (PP (PREP dal)
                                    (NP (ART~DE dal) (NUMR 30) (SPECIAL %))
                                    (PP (PREP al)
                                        (NP (ART~DE al) (NUMR 50) (SPECIAL %))))))))
                      (, ,)
                      (PP-LOC (PREP in)
                          (NP (ART~IN un)
                              (NP (NOU~CS Paese))
                              (S
                                  (S
                                      (S
                                          (PP-LOC (PREP in)
                                              (NP (PRO~RE cui)))
                                           (NP-SBJ (ART~DE l') (NOU~CS inflazione) (ADJ~QU ufficiale))
                                           (VP (VMA~RE e')
                                               (PP-PRD (PREP del)
                                                   (NP (ART~DE del) (NUMR 20) (SPECIAL %)
                                                       (NP (ART~DE l') (NOU~CS anno)))))))
                                        (CONJ e)
                                        (S
                                            (NP-SBJ (ART~DE il) (NOU~CS reddito) (ADJ~QU medio) (ADJ~QU PRO_CAPITE))
                                            (ADVP (ADVB non))
                                            (VP (VMA~RE supera)
                                                (NP (ART~DE i)
                                                    (NP (NUMR 700)) (NOU~CP dollari)))))))))
                            (. .)) )


************** FRASE NEWS-553 **************

 ( (S
    (S
        (NP-SBJ-133
            (NP (ART~DE Il) (NOU~CS crollo))
            (PP (PREP di)
                (NP (ADJ~DE questo) (NOU~CS sistema) (ADJ~QU finanziario) (ADJ~QU parallelo)
                    (PRN
                        (, ,)
                        (VP (VMA~PA drogato)
                            (NP (-NONE- *))
                            (PP (PREP con)
                                (NP
                                    (NP (NOU~CP interessi))
                                    (PP (PREP da)
                                        (NP (NOU~CS usuraio))))))
                            (, ,)))))
                (VP (VMA~RE frantuma)
                    (NP
                        (NP (ART~DE i) (NOU~CP sogni))
                        (PP (PREP di)
                            (NP (NOU~CS ricchezza)))
                         (PP (PREP della)
                             (NP
                                 (NP (ART~DE della) (NOU~CS nazione))
                                 (ADJP (ADVB piu') (ADJ~QU povera))
                                 (PP (PREP d')
                                     (NP (NOU~PR Europa))))))))
                   (CONJ e)
                   (S
                       (VP (VMA~RE rischia)
                           (PP (PREP di)
                               (S
                                   (VP (VMA~IN assestare)
                                       (NP (ART~IN un) (ADJ~QU duro) (NOU~CS colpo))
                                       (PP
                                           (PP (PREP al)
                                               (NP-3433
                                                   (NP (ART~DE al) (NOU~CS Governo))
                                                   (PP (PREP del)
                                                       (NP (ART~DE del) (ADJ~OR primo) (NOU~CS ministro)
                                                           (NP (NOU~PR Aleksander) (NOU~PR Meksi))))))
                                               (CONJ e)
                                               (PP (PREP al)
                                                   (NP
                                                       (NP (ART~DE al) (NOU~CS prestigio))
                                                       (PRN
                                                           (, ,)
                                                           (PP (PREP per)
                                                               (NP (ART~DE la) (NOU~CA verita')))
                                                            (ADVP-TMP (ADVB ormai))
                                                            (VP (VMA~PA offuscato)
                                                                (NP (-NONE- *))
                                                                (PP-LGS (PREP dai)
                                                                    (NP (ART~DE dai) (NOU~CP brogli) (ADJ~QU elettorali))))
                                                              (, ,))
                                                           (PP (PREP del)
                                                               (NP (ART~DE del) (NOU~CS presidente)
                                                                   (NP5 (NOU~PR Sali) (NOU~PR Berisha)
                                                                       (, ,)
                                                                       (VP (VMA~PA accusati)
                                                                           (NP (-NONE- *))
                                                                           (PP-LGS (PREP dalla)
                                                                               (NP (ART~DE dalla) (NOU~CS rabbia) (ADJ~QU popolare)))
                                                                            (PP (PREP di)
                                                                                (S
                                                                                    (ADVP (ADVB non))
                                                                                    (VP (VAU~IN essere)
                                                                                        (VP (VMA~PA intervenuti)
                                                                                            (PP (PREP in)
                                                                                                (NP (NOU~CS tempo)))
                                                                                             (PP (PREP per)
                                                                                                 (S
                                                                                                     (VP (VMA~IN frenare)
                                                                                                         (NP
                                                                                                             (NP (ART~DE la) (NOU~CS corsa))
                                                                                                             (PP (PREP alla)
                                                                                                                 (NP (ART~DE alla) (NOU~CS speculazione)))))
                                                                                                        (NP-SBJ (-NONE- *-3433))))))
                                                                                            (NP-SBJ (-NONE- *-3433))))))))))))
                                                              (NP-SBJ (-NONE- *-27.1033)))))
                                                     (NP-SBJ-27.1033 (-NONE- *-133)))
                                                  (. .)) )


************** FRASE NEWS-554 **************

 ( (S
    (NP-SBJ-133 (ART~DE I)
        (NP (NOU~CP risparmiatori) (ADJ~QU albanesi))
        (S
            (S
                (NP-4333 (PRO~RE che) (-NONE- *-))
                (S
                    (NP-SBJ-433 (-NONE- *-4333))
                    (VP
                        (ADVP-TMP (ADVB oggi)) (VMA~RE scendono)
                        (PP-LOC (PREP in)
                            (NP (NOU~CS piazza)))
                         (VP (VMA~GE scontrandosi)
                             (NP (PRO~RI scontrandosi))
                             (PP (PREP con)
                                 (NP (ART~DE la) (NOU~CS polizia)))))))
                  (CONJ e)
                  (S
                      (VP (VMA~RE prendono)
                          (PP (PREP a)
                              (NP (NOU~CP sassate)))
                           (NP
                               (NP (ART~DE le) (NOU~CP vetrate))
                               (PP
                                   (PP (PREP di)
                                       (NP (NOU~CP municipi)))
                                    (CONJ e)
                                    (PP (PREP delle)
                                        (NP
                                            (NP (ART~DE delle) (NOU~CP sedi))
                                            (PP (PREP del)
                                                (NP (ART~DE del) (NOU~CS Partito) (ADJ~QU democratico))))))))
                              (NP-SBJ (-NONE- *-433)))))
                     (, ,)
                     (ADVP-TMP (ADVB presto))
                     (VP (VMA~FU andranno)
                         (PP (PREP a)
                             (S
                                 (VP (VMA~IN ingrossare)
                                     (PP (PREP come)
                                         (PP
                                             (PP (PREP a)
                                                 (NP (NOU~PR Belgrado)))
                                              (CONJ e)
                                              (PP (PREP a)
                                                  (NP (NOU~PR Sofia)))))
                                         (NP
                                             (NP (ART~DE i) (NOU~CP cortei))
                                             (PP (PREP degli)
                                                 (NP (ART~DE degli) (NOU~CP scontenti)))))
                                        (NP-SBJ (-NONE- *-133)))))
                               (. .)) )


************** FRASE NEWS-555 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE L') (NOU~CS opposizione))
        (PP (PREP a)
            (NP (NOU~PR Berisha)))
         (PRN
             (, ,)
             (VP (VMA~PA rappresentata)
                 (NP (-NONE- *))
                 (PP-LGS
                     (PP (ADVB soprattutto) (PREP dal)
                         (NP (ART~DE dal) (NOU~CS Partito) (ADJ~QU socialista)))
                      (, ,)
                      (CONJ cioe')
                      (PP (PREP dagli)
                          (NP (ART~DE dagli) (ADJ~QU ex) (NOU~CP comunisti)))))
                 (, ,)))
           (VP
               (VP (VAU~RE ha)
                   (ADVP-TMP (ADVB gia'))) (VMA~PA annunciato)
                (PP-TMP (PREP per) (ADVB domani))
                (NP
                    (NP (ART~IN una) (ADJ~QU grande) (NOU~CS manifestazione))
                    (PP-LOC (PREP a)
                        (NP (NOU~PR Tirana)))
                     (PP (PREP contro)
                         (NP (ART~DE il) (NOU~CS Governo)))))
                (. .)) )


************** FRASE NEWS-556 **************

 ( (S
    (VP
        (PP-LOC (PREP In)
            (NP (NOU~PR Serbia)
                (CONJ e) (NOU~PR Bulgaria)))
          (VP (VMA~RE-533 protestano)
              (PP (PREP contro)
                  (NP (ART~DE gli) (ADJ~QU ex) (NOU~CP comunisti))))
            (, ,)
            (S
                (PP-LOC (PREP a)
                    (NP (NOU~PR Tirana)))
                 (VP (-NONE- *-533)
                     (PP (PREP contro)
                         (NP
                             (NP (ART~IN un) (NOU~CS Governo))
                             (PP (PREP di)
                                 (NP (NOU~CA centrodestra)))
                              (, ,)
                              (NP
                                  (NP (PRO~ID uno))
                                  (PP (PREP dei)
                                      (NP (ART~DE dei)
                                          (NP (PRO~ID pochi))
                                          (VP (VMA~PA rimasti)
                                              (NP (-NONE- *))
                                              (PP-LOC (PREP al)
                                                  (NP (ART~DE al) (NOU~CS potere)))
                                               (PP-LOC (PREP nei)
                                                   (NP (ART~DE nei) (NOU~PR Balcani)))
                                                (PP-TMP (PREP dopo)
                                                    (NP (ART~DE le) (NOU~CP consultazioni) (ADJ~QU elettorali))))))))))
                            (NP-SBJ (-NONE- *-5.1033))))
                      (NP-SBJ (-NONE- *-5.1033))
                      (. .)) )


************** FRASE NEWS-557 **************

 ( (S
    (CONJ Ma)
    (NP-SBJ-233 (ART~DE le) (NOU~CP etichette))
    (ADVP (ADVB non))
    (VP (VMO~RE devono)
        (S
            (VP (VMA~IN trarre)
                (NP (-NONE- *))
                (PP (PREP in)
                    (NP (NOU~CS inganno))))
              (NP-SBJ (-NONE- *-233))))
        (. .)) )


************** FRASE NEWS-558 **************

 ( (S
    (VP
        (ADVP-LOC (ADVB Quasi) (ADVB ovunque)
            (PP-LOC (PREP all')
                (NP (ART~DE all') (NOU~CS Est))))
          (VP (VMA~RE comandano)
              (NP-EXTPSBJ-733
                  (NP (ADJ~QU ex) (NOU~CP comunisti))
                  (PP (PREP di)
                      (NP (VMA~PA provata)
                          (NP (NOU~CS fede))))))
              (, ,)
              (S
                  (ADVP (ADVB PER_ESEMPIO))
                  (NP-SBJ (NOU~PR Sali) (NOU~PR Berisha))
                  (PP-TMP (PREP negli)
                      (NP (ART~DE negli) (NOU~CP anni)
                          (NP (NUMR 80))))
                    (VP (VMA~IM era)
                        (NP-PRD
                            (NP (ART~DE il) (NOU~CS capo))
                            (NP (NOU~CS cellula))
                            (PP (PREP del)
                                (NP (ART~DE del) (NOU~PR Pc) (ADJ~QU albanese)))
                             (PP-LOC (PREP al)
                                 (NP
                                     (NP (ART~DE al) (NOU~CS Policlinico))
                                     (PP-LOC (PREP di)
                                         (NP (NOU~PR Tirana)))))))))
                    (NP-SBJ (-NONE- *-733))
                    (. .)) )


************** FRASE NEWS-559 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (PRO~ID Nessuno))
        (PP (PREP di)
            (NP (ADJ~DE questi) (ADJ~QU ex) (NOU~CP comunisti))))
      (VP (VMA~RE fa)
          (PP
              (PP (PREP del)
                  (NP (ART~DE del) (NOU~CS socialismo)))
               (CONJ o)
               (PRN
                   (, ,)
                   (PP-1133 (PREP all')
                       (NP (ART~DE all') (NOU~CS opposto)))
                    (, ,))
                 (PP (PREP del)
                     (NP (ART~DE del) (NOU~CS capitalismo))))
               (, ,)
               (NP (ART~IN delle) (ADJ~QU autentiche) (NOU~CP bandiere) (ADJ~QU ideologiche)))
            (. .)) )


************** FRASE NEWS-560 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (PRO~DE Cio'))
        (SBAR
            (NP-2333 (PRO~RE che))
            (S
                (NP-SBJ (-NONE- *-2333))
                (VP (VMA~RE distingue)
                    (NP (ART~DE l') (NOU~PR Albania))
                    (PP (PREP dallo)
                        (NP (ART~DE dallo) (NOU~PR Zaire)))))))
         (VP (VMA~RE e')
             (ADVP (ADVB soprattutto))
             (NP-PRD (ART~DE la) (NOU~CS vegetazione)))
          (. .)) )


************** FRASE NEWS-561 **************

 ( (S
    (PP-133 (PREP In)
        (NP (NOU~CS fondo)))
     (, ,)
     (VP (VMO~RE devono)
         (S
             (VP (VAU~IN aver)
                 (VP (VMA~PA pensato)
                     (NP-733 (ART~DE i) (NOU~CP dirigenti) (ADJ~QU albanesi))
                     (, ,)
                     (S
                         (VP-11.1133 (VMA~RE aiuta)
                             (NP
                                 (NP (ART~DE l') (NOU~CS economia))
                                 (PP (PREP del)
                                     (NP (ART~DE del) (NOU~CS Paese))))
                               (PP (-NONE- *-11.1133)))
                            (NP-SBJ (-NONE- *)))))
                   (NP-SBJ (-NONE- *-733))))
             (NP-SBJ (-NONE- *-733))
             (. .)) )


************** FRASE NEWS-562 **************

 ( (S
    (NP-TMP
        (NP (ADVB Neppure) (ART~IN un) (NOU~CS paio))
        (PP (PREP di)
            (NP (NOU~CP mesi) (ADJ~DI fa))))
      (, ,)
      (CONJ quando)
      (S
          (ADVP-TMP (ADVB gia'))
          (NP-SBJ-1033
              (NP (ADJ~IN alcuni) (NOU~CP fondi))
              (PP (PREP di)
                  (NP (NOU~CS investimento) (ADJ~QU spericolati))))
            (VP (VMA~IM faticavano)
                (PP (PREP a)
                    (S
                        (VP (VMA~IN pagare)
                            (NP (ART~DE gli) (NOU~CP interessi))))))
                (NP-SBJ (-NONE- *-1033)))
             (, ,)
             (NP-SBJ (ART~DE il) (NOU~CA lek)
                 (PRN
                     (, ,)
                     (NP (ART~DE la) (NOU~CS moneta) (ADJ~QU albanese))
                     (, ,)))
               (VP (VAU~IM aveva)
                   (VP (VMA~PA toccato)
                       (NP
                           (NP (ART~DE i) (NOU~CP massimi))
                           (PP (PREP sul)
                               (NP (ART~DE sul) (NOU~CS dollaro))))))
                   (. .)) )


************** FRASE NEWS-563 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE I) (NOU~CP risparmiatori)
            (PRN
                (, ,)
                (ADVP (ADVB quasi))
                (VP (VMA~PA impazziti)
                    (NP (-NONE- *))
                    (PP (PREP dalle)
                        (NP
                            (NP (ART~DE dalle) (NOU~CP prospettive))
                            (PP (PREP di)
                                (NP (NOU~CS guadagno))))))
                    (, ,)))
              (VP (VMA~IM continuavano)
                  (PP (PREP a)
                      (S
                          (VP (VMA~IN versare)
                              (PP (PREP a)
                                  (NP (NOU~PR Sudja)))
                               (NP (NOU~CP somme) (ADJ~QU stratosferiche)))
                            (NP-SBJ (-NONE- *-133)))))
                   (NP-SBJ (-NONE- *-133)))
                (CONJ e)
                (S
                    (VP (VMA~IM vendevano)
                        (NP
                            (NP (NOU~CP montagne))
                            (PP (PREP di)
                                (NP (NOU~CS valuta) (ADJ~QU pregiata))))
                          (CONJ PUR_DI)
                          (S
                              (VP (VMA~IN partecipare)
                                  (PP (PREP alla)
                                      (NP
                                          (NP (ART~DE alla) (NOU~CS costruzione))
                                          (PP (PREP della)
                                              (NP (ART~DE della)
                                                  (' ') (NOU~CS piramide) (ADJ~QU finanziaria)
                                                  (' '))))))
                                   (NP-SBJ (-NONE- *-133))))
                             (NP-SBJ (-NONE- *-133)))
                          (. .)) )


************** FRASE NEWS-564 **************

 ( (S
    (ADVP (ADVB Insomma))
    (, ,)
    (NP-SBJ (ART~DE la) (NOU~CS zingara))
    (VP (VAU~IM era)
        (VP (VMA~PA diventata)
            (NP-PRD-733
                (NP (ART~IN una) (ADJ~QU potente) (NOU~CS calamita))
                (PP (PREP per)
                    (S
                        (VP (VMA~IN rastrellare)
                            (NP
                                (NP (NOU~CP dollari))
                                (, ,)
                                (NP
                                    (NP (NOU~CP marchi))
                                    (, ,)
                                    (NP
                                        (NP (NOU~CP lire))
                                        (, ,)
                                        (NP
                                            (NP (PRO~DE quello))
                                            (SBAR
                                                (NP-1333 (PRO~RE che) (-NONE- *-))
                                                (S
                                                    (NP-SBJ-1933 (-NONE- *-1333))
                                                    (VP (VMA~RE serve)
                                                        (PP (PREP per)
                                                            (S
                                                                (VP (VMA~IN pagare)
                                                                    (NP (ART~DE le) (NOU~CP importazioni)))
                                                                 (NP-SBJ (-NONE- *-1933))))))))))))
                                   (NP-SBJ (-NONE- *-733)))))))
                    (. .)) )


************** FRASE NEWS-565 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Il) (NOU~CA deficit))
        (PP (PREP della)
            (NP
                (NP (ART~DE della) (NOU~CS bilancia) (ADJ~QU commerciale))
                (PP-LOC (PREP di)
                    (NP (NOU~PR Tirana))))))
        (VP (VMA~RE sfiora)
            (ADVP-TMP (ADVB ormai))
            (NP
                (NP (ART~DE il) (ADJ~QU mezzo) (NOU~CS miliardo))
                (PP (PREP di)
                    (NP (NOU~CP dollari)))))
           (. .)) )


************** FRASE NEWS-566 **************

 ( (S
    (NP-SBJ
        (NP-SBJ
            (NP (ART~DE La) (NOU~CS piramide))
            (PP (PREP di)
                (NP (NOU~PR Sudja))))
          (CONJ e)
          (NP (ADJ~DI altre) (NOU~CP iniziative) (ADJ~QU simili)))
       (VP (VAU~RE hanno)
           (VP (VMA~PA contribuito)
               (PP (PREP alla)
                   (NP
                       (NP (ART~DE alla) (NOU~CA deregulation))
                       (PP (PREP della)
                           (NP
                               (NP (ART~DE della)
                                   (' ') (NOU~CS terra)
                                   (' '))
                                (PP (PREP delle)
                                    (NP (ART~DE delle) (NOU~CP aquile)))
                                 (, ,)
                                 (NP (ART~IN un)
                                     (NP (NOU~CS Paese))
                                     (S
                                         (S
                                             (NP-2333 (PRO~RE che))
                                             (S
                                                 (NP-SBJ (-NONE- *-2333))
                                                 (ADVP (ADVB-2333 non))
                                                 (VP (VMA~RE-2433 ha)
                                                     (ADVP-TMP (ADVB piu'))
                                                     (NP (ART~IN una) (NOU~CS dittatura)))))
                                            (CONJ ma)
                                            (VP (-NONE- *-2433)
                                                (ADVP (-NONE- *-2333))
                                                (ADVP (ADVB neppure))
                                                (NP (ART~IN una)
                                                    (NP (ADJ~QU vera) (NOU~CS democrazia))
                                                    (VP (VMA~PA accompagnata)
                                                        (NP (-NONE- *))
                                                        (PP-LGS (PREP da)
                                                            (NP (ART~IN un') (NOU~CS economia) (ADJ~QU decente))))))))))))))
                        (. .)) )


************** FRASE NEWS-567 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~PR Albania))
    (NP (PRO~RI si))
    (VP (VAU~RE e')
        (VP (VMA~PA dimenticata)
            (CONJ che)
            (S
                (PP (PREP per)
                    (S
                        (VP (VMA~IN vivere))
                        (NP-SBJ (-NONE- *))))
                  (VP (VMA~RE bisogna)
                      (ADVP (ADVB anche))
                      (S
                          (VP (VMA~IN produrre)
                              (NP (-NONE- *)))
                           (NP-SBJ (-NONE- *))))
                     (NP-SBJ (-NONE- *)))))
            (. .)) )


************** FRASE NEWS-568 **************

 ( (S
    (S
        (NP-SBJ (ART~DE L') (NOU~CS agricoltura)
            (PRN
                (, ,)
                (SBAR
                    (S
                        (PP-LOC (PREP nella)
                            (NP (ART~DE nella) (PRO~RE quale)))
                         (VP (VAU~RE e')
                             (VP (VMA~PA impegnato)
                                 (ADVP-TMP (ADVB ancora))
                                 (NP-EXTPSBJ-933 (ART~DE il) (NUMR 50) (SPECIAL %)
                                     (PP (PREP della)
                                         (NP (ART~DE della) (NOU~CS popolazione) (ADJ~QU attiva))))))
                             (NP-SBJ (-NONE- *-933))))
                       (, ,)))
                 (VP (VMA~RE boccheggia)
                     (PP (PREP nonostante)
                         (NP (ART~DE le) (NOU~CP riforme)))))
                (CONJ e)
                (S
                    (ADVP-TMP (ADVB oggi))
                    (NP-SBJ-2233 (NOU~PR Tirana)
                        (, ,)
                        (SBAR
                            (NP-2333 (PRO~RE che))
                            (S
                                (NP-SBJ (-NONE- *-2333))
                                (NP-TMP (ART~IN una) (NOU~CS volta))
                                (VP (VMA~IM vantava)
                                    (NP (ART~DE l') (NOU~CS autosufficienza) (ADJ~QU alimentare))))))
                        (, ,)
                        (VP (VAU~RE e')
                            (VP (VMA~PA costretta)
                                (PP (PREP a)
                                    (S
                                        (VP (VMA~IN importare)
                                            (NP (ART~DE il) (NOU~CS grano)))))
                                   (CONJ perche')
                                   (S
                                       (NP-SBJ (ART~DE le) (NOU~CP colture) (ADJ~QU intensive))
                                       (VP
                                           (VP (VAU~RE sono)
                                               (ADVP (ADVB praticamente))) (VMA~PA azzerate)
                                            (PP-LGS (PREP dalla)
                                                (NP
                                                    (NP (ART~DE dalla) (NOU~CS frammentazione))
                                                    (PP (PREP delle)
                                                        (NP (ART~DE delle) (NOU~CP terre)))))))))
                                   (NP-SBJ (-NONE- *-2233)))
                                (. .)) )


************** FRASE NEWS-569 **************

 ( (S
    (PP (PREP Invece)
        (PP (PREP dei)
            (NP (ART~DE dei) (NOU~CP cereali))))
      (VP (VMA~RE fiorisce)
          (NP-EXTPSBJ-533 (ART~DE la)
              (NP (NOU~CA marijuana))
              (, ,)
              (SBAR
                  (S
                      (PP-833 (PREP di)
                          (NP (PRO~RE cui)))
                       (NP-SBJ (ART~DE l') (NOU~PR Albania))
                       (VP (VAU~RE e')
                           (VP (VMA~PA diventato)
                               (NP-PRD
                                   (ADJP (ADVB piu') (ADJ~QU importante))
                                   (NP (ART~DE il) (NOU~CS produttore) (ADJ~QU europeo))
                                   (PP (-NONE- *-833)))))))))
              (NP-SBJ (-NONE- *-533))
              (. .)) )


************** FRASE NEWS-570 **************

 ( (S
    (PP (PREP A)
        (NP
            (NP (NUMR 800) (NOU~CP dollari))
            (PP (PREP al)
                (NP (ART~DE al) (NOU~CS chilo)))))
       (VP (VMA~RE rende)
           (ADVP (ADVB certamente))
           (ADVP (ADVB DI_PIÙ))
           (NP-EXTPSBJ-1033 (ART~DE la) (NOU~CS canapa) (ADJ~QU indiana))
           (PP (PREP del)
               (NP (ART~DE del) (NOU~CS frumento))))
         (NP-SBJ (-NONE- *-1033))
         (. .)) )


************** FRASE NEWS-571 **************

 ( (S
    (NP-SBJ (ART~DE Il) (NOU~CS regime) (ADJ~QU serbo))
    (VP (VAU~RE ha)
        (VP (VMA~PA scelto)
            (NP (ART~DE la) (NOU~CS linea) (ADJ~QU dura))))
      (. .)) )


************** FRASE NEWS-572 **************

 ( (S
    (S
        (VP (VMA~GE Ignorando)
            (NP
                (NP (ART~DE le) (NOU~CP raccomandazioni))
                (PP (PREP dell')
                    (NP
                        (NP (ART~DE dell') (NOU~CS Organizzazione))
                        (PP (PREP per)
                            (NP
                                (NP (ART~DE la) (NOU~CS sicurezza))
                                (CONJ e)
                                (NP
                                    (NP (ART~DE la) (NOU~CS cooperazione))
                                    (PP-LOC (PREP in)
                                        (NP (NOU~PR Europa))))))))))
                (NP-SBJ (-NONE- *-1633)))
             (, ,)
             (ADVP-TMP (ADVB ieri))
             (NP-SBJ-1633 (ART~DE il) (NOU~CS Governo) (ADJ~QU serbo))
             (VP (VAU~RE ha)
                 (VP (VMA~PA proclamato)
                     (NP
                         (NP (ART~DE la) (NOU~CA regolarita'))
                         (PP (PREP della)
                             (NP
                                 (NP (ART~DE della) (NOU~CS vittoria))
                                 (PP (PREP dell')
                                     (NP
                                         (NP (ART~DE dell') (NOU~CS alleanza))
                                         (PP (PREP di)
                                             (NP (NOU~CS sinistra))))))))
                           (PP-LOC (PREP in)
                               (NP
                                   (NP (NUMR 8) (-NONE- *-3333))
                                   (PP (PREP delle)
                                       (NP (ART~DE delle)
                                           (NP (NUMR 14))
                                           (NP (NOU~CA-3333 citta'))
                                           (SBAR
                                               (NP-3333 (PRO~RE che))
                                               (S
                                                   (NP-SBJ (-NONE- *-3333))
                                                   (VP (VAU~IM erano)
                                                       (VP (VAU~PA state)
                                                           (VP (VMA~PA conquistate))))
                                                     (PP-LGS (PREP dal)
                                                         (NP
                                                             (NP (ART~DE dal) (NOU~CS cartello))
                                                             (PP (PREP dei)
                                                                 (NP
                                                                     (NP (ART~DE dei) (NOU~CP partiti))
                                                                     (PP (PREP di)
                                                                         (NP (NOU~CS opposizione))))) (NOU~PR Zajedno)))
                                                          (PP-TMP (PREP al)
                                                              (NP
                                                                  (NP (ART~DE al) (ADJ~OR primo) (NOU~CS turno))
                                                                  (PP (PREP delle)
                                                                      (NP (ART~DE delle)
                                                                          (NP (NOU~CP elezioni))
                                                                          (ADVP-TMP (ADVB poi))
                                                                          (VP (VMA~PA annullate)
                                                                              (NP (-NONE- *))
                                                                              (PP-LGS (PREP dal)
                                                                                  (NP
                                                                                      (NP (ART~DE dal) (NOU~CS regime))
                                                                                      (PP (PREP di)
                                                                                          (NP (NOU~PR Milosevic))))))))))))))))))
                                          (. .)) )


************** FRASE NEWS-573 **************

 ( (S
    (NP-SBJ (ART~DE Il) (NOU~CS partito) (ADJ~QU socialista))
    (VP
        (VP (VAU~RE ha)
            (ADVP-TMP (ADVB intanto))) (VMA~PA presentato)
         (PP (PREP alla)
             (NP (ART~DE alla) (NOU~CS Corte) (ADJ~QU suprema)))
          (NP
              (NP (ART~IN una) (NOU~CS denuncia))
              (PP (PREP contro)
                  (NP (ART~DE la)
                      (NP (NOU~CS Commissione) (ADJ~QU elettorale))
                      (SBAR
                          (NP-1333 (PRO~RE che))
                          (S
                              (NP-SBJ (-NONE- *-1333))
                              (VP (VAU~IM aveva)
                                  (VP (VMA~PA proclamato)
                                      (PP-TMP (PREP nei)
                                          (NP (ART~DE nei) (NOU~CP giorni) (ADJ~DI scorsi)))
                                       (NP
                                           (NP (ART~DE la) (NOU~CS vittoria))
                                           (PP (PREP di)
                                               (NP (NOU~PR Zajedno)))
                                            (PP-LOC (PREP al)
                                                (NP
                                                    (NP (ART~DE al) (NOU~CS Comune))
                                                    (PP-LOC (PREP di)
                                                        (NP (NOU~PR Belgrado))))))))))))))
                    (. .)) )


************** FRASE NEWS-574 **************

 ( (S
    (CONJ E)
    (NP-SBJ
        (NP (ADVB anche) (ART~DE il) (NOU~CS ministero))
        (PP (PREP degli)
            (NP (ART~DE degli) (NOU~CP Interni))))
      (VP (VMA~RE mostra)
          (NP (ART~DE i) (NOU~CP muscoli)))
       (. .)) )


************** FRASE NEWS-575 **************

 ( (S
    (PP-TMP (PREP Dopo)
        (NP
            (NP (NOU~CP settimane))
            (PP (PREP di)
                (NP (NOU~CP tentennamenti)))))
       (, ,)
       (NP-TMP
           (NP (NOU~CA lunedi'))
           (NP-TMP (NOU~CS notte)))
        (NP-SBJ-833 (ART~DE la) (NOU~CS polizia) (ADJ~QU speciale) (ADJ~QU antisommossa))
        (VP (VAU~RE ha)
            (VP (VMA~PA usato)
                (NP (ART~DE la) (NOU~CS forza))
                (PP (PREP contro)
                    (NP-1733
                        (NP (ADJ~IN alcuni) (NOU~CP gruppi))
                        (PP (PREP di)
                            (NP (NOU~CP manifestanti)))))
                   (PP (PREP per)
                       (S
                           (VP (VMA~IN impedire)
                               (CONJ che)
                               (S
                                   (NP (PRO~RI si))
                                   (VP (VMA~IM unissero)
                                       (PP (PREP agli)
                                           (NP (ART~DE agli)
                                               (NP (NOU~CP studenti))
                                               (SBAR
                                                   (NP-2333 (PRO~RE che))
                                                   (S
                                                       (NP-SBJ (-NONE- *-2333))
                                                       (PP-TMP (PREP da)
                                                           (NP (NUMR due) (NOU~CP giorni)))
                                                        (VP (VAU~RE stanno)
                                                            (VP (VMA~GE fronteggiando)
                                                                (NP (ART~DE i) (NOU~CP poliziotti))
                                                                (PP-LOC (PREP al)
                                                                    (NP
                                                                        (NP (ART~DE al) (NOU~CS limitare))
                                                                        (PP (PREP della)
                                                                            (NP
                                                                                (NP (ART~DE della) (NOU~CS zona) (ADJ~QU pedonale))
                                                                                (PP (PREP della)
                                                                                    (NP (ART~DE della) (NOU~PR Kneza)
                                                                                        (, ,)
                                                                                        (NP
                                                                                            (NP (ART~DE il) (NOU~CS cuore))
                                                                                            (PP (PREP di)
                                                                                                (NP (NOU~PR Belgrado)))))))))))))))))
                                                   (NP-SBJ (-NONE- *-1733))))))))
                                 (NP-SBJ (-NONE- *-833))
                                 (. .)) )


************** FRASE NEWS-576 **************

 ( (S
    (NP-PRD (ART~IN Una) (NOU~CS decina))
    (VP (-NONE- *)
        (NP-EXTPSBJ-333 (ART~DE i) (NOU~CP feriti)))
     (NP-SBJ (-NONE- *-333))
     (. .)) )


************** FRASE NEWS-577 **************

 ( (S
    (NP-SBJ (ART~DE I) (NOU~CP reparti) (ADJ~QU speciali))
    (VP
        (ADVP (ADVB non))
        (VP (VAU~IM erano)
            (ADVP-TMP (ADVB piu'))) (VMA~PA entrati)
         (PP-LOC (PREP in)
             (NP (NOU~CS azione)))
          (PP-TMP (PREP dopo)
              (NP
                  (NP (ART~DE i) (ADJ~QU sanguinosi) (NOU~CP scontri))
                  (PP-TMP
                      (PP (PREP del)
                          (NP (ART~DE del) (NUMR 25) (-NONE- *-1933)))
                       (CONJ e)
                       (PP (PREP del)
                           (NP-1933 (ART~DE del) (NUMR 26) (NOU~CS dicembre)))))))
            (. .)) )


************** FRASE NEWS-578 **************

 ( (S
    (NP-SBJ (ART~DE Il) (NOU~CS quotidiano) (ADJ~QU belgradese) (NOU~PR Telegraph))
    (ADVP-TMP (ADVB ieri))
    (VP (VMA~IM scriveva)
        (CONJ che)
        (S
            (NP-SBJ-833 (NOU~PR Milosevic))
            (VP (VMA~RE e')
                (ADVP-TMP (ADVB ormai))
                (ADJP-PRD (ADJ~QU deciso)
                    (PP (PREP a)
                        (S
                            (VP (VMA~IN proclamare)
                                (NP
                                    (NP (ART~DE lo) (NOU~CS stato))
                                    (PP (PREP di)
                                        (NP (NOU~CS emergenza)))))
                               (NP-SBJ (-NONE- *-833))))))))
             (. .)) )


************** FRASE NEWS-579 **************

 ( (S
    (CONJ Ma)
    (PP-LOC (PREP sulla)
        (NP (ART~DE sulla) (NOU~PR Serbia)))
     (VP (VMA~RE pesa)
         (ADVP (ADVB anche))
         (NP-EXTPSBJ-633 (ART~IN un') (ADJ~DI altra) (NOU~CS minaccia)))
      (NP-SBJ (-NONE- *-633))
      (. .)) )


************** FRASE NEWS-580 **************

 ( (S
    (VP
        (PP-LOC (PREP Nei)
            (NP (ART~DE Nei) (NOU~PR Balcani)))
         (ADVP-TMP (ADVB oggi))
         (ADVP (ADVB non))
         (NP-433 (PRO~RI-533 si))
         (VP (VMA~RE-633 governa)
             (PP
                 (PP (PREP IN_NOME_DI)
                     (NP (NOU~PR Marx)))
                  (CONJ oppure)
                  (PP (PREP IN_NOME_DI)
                      (NP (ART~IN un)
                          (PUNCT -)
                          (NP (ADJ~QU neo) (NOU~CS capitalismo))
                          (ADJP
                              (ADJP (ADJ~QU libero))
                              (CONJ e)
                              (ADJP (ADJ~QU selvaggio)))))))
               (, ,)
               (CONJ ma)
               (S
                   (NP-SBJ-21.1033 (-NONE- *-533))
                   (VP (-NONE- *-633)
                       (ADVP (ADVB semplicemente))
                       (PP (PREP per)
                           (S
                               (S
                                   (VP (VMA~IN-2433 mantenere)
                                       (PP-LOC (PREP al)
                                           (NP (ART~DE al) (NOU~CS potere)))
                                        (NP (ART~IN un) (NOU~CA-2833 clan))
                                        (PP (PREP contro)
                                            (NP (ART~IN un) (ADJ~DI altro) (-NONE- *-2833))))
                                      (NP-SBJ (-NONE- *-21.1033)))
                                   (, ,)
                                   (S
                                       (VP (-NONE- *-2433)
                                           (NP
                                               (NP (ART~IN un) (NOU~CS partito)
                                                   (PUNCT -)
                                                   (NP (NOU~CS mafia)))
                                                (CONJ e)
                                                (NP (ART~IN un)
                                                    (NP (NOU~CS-3933 gruppo))
                                                    (ADJP
                                                        (ADJP (ADJ~QU politico))
                                                        (PUNCT -)
                                                        (ADJP (ADJ~QU affaristico)))))
                                               (PP (PREP AL_POSTO_DI)
                                                   (NP (ART~IN un) (ADJ~DI altro) (-NONE- *-3933))))
                                             (NP-SBJ (-NONE- *-21.1033)))))
                                    (, ,)
                                    (ADJP-PRD (ADVB cinicamente) (ADJ~QU consapevoli)
                                        (CONJ che)
                                        (S
                                            (NP-SBJ (ART~DE la) (NOU~CS democrazia))
                                            (VP (VMA~RE e')
                                                (ADVP (ADVB soltanto))
                                                (NP-PRD
                                                    (NP (ART~IN una) (NOU~CS facciata) (ADJ~QU cosmetica))
                                                    (PP (PREP per)
                                                        (S
                                                            (VP (VMA~IN ottenere)
                                                                (NP
                                                                    (NP (NOU~CP finanziamenti))
                                                                    (CONJ e)
                                                                    (NP (NOU~CP crediti)))
                                                                 (PP (PREP dalle)
                                                                     (NP (ART~DE dalle)
                                                                         (NP (NOU~CP istituzioni))
                                                                         (ADJP
                                                                             (ADJP (ADJ~QU internazionali))
                                                                             (CONJ ed)
                                                                             (ADJP (ADJ~QU europee))))))
                                                                 (NP-SBJ (-NONE- *-21.1033)))))))))))
                                      (NP-SBJ (-NONE- *-533))
                                      (. .)) )


************** FRASE NEWS-581 **************

 ( (S
    (NP (ADJ~DI-SBJ Altre) (NOU~CP fonti))
    (VP (VMA~RE riferiscono)
        (PP (PREP di)
            (NP-533 (ART~IN un)
                (NP (NOU~CS convoglio))
                (SBAR
                    (S
                        (VP (VMA~PA diretto)
                            (PP-LOC (PREP a)
                                (NP (NOU~PR Valona))))
                          (NP-SBJ (-NONE- *-533))))
                    (, ,)
                    (SBAR
                        (NP-1333 (PRO~RE che))
                        (S
                            (NP-SBJ (-NONE- *-1333))
                            (ADVP-TMP (ADVB ieri)
                                (NP-TMP (NOU~CS mattina)))
                             (VP (VAU~CO sarebbe)
                                 (VP (VAU~PA stato)
                                     (VP (VMA~PA preso))))
                               (PP (PREP d')
                                   (NP (NOU~CS assalto))))))))
                 (. .)) )


************** FRASE NEWS-582 **************

 ( (S
    (CONJ Dopo)
    (S
        (VP (VAU~IN aver)
            (VP (VMA~PA fatto)
                (S
                    (VP (VMA~IN scendere)
                        (NP-533 (ART~DE i) (NOU~CP passeggeri)))
                     (NP-SBJ (-NONE- *-533)))))
            (NP-SBJ (-NONE- *-833)))
         (, ,)
         (NP-SBJ-833 (ART~DE i) (NOU~CP rivoltosi))
         (VP (VAU~CO avrebbero)
             (VP (VMA~PA rovesciato)
                 (NP (ART~DE le) (NOU~CP carrozze))))
           (. .)) )


************** FRASE NEWS-583 **************

 ( (S
    (NP (NOU~CP Disordini))
    (NP (PRO~RI si))
    (VP (VMA~RE segnalano)
        (PP-LOC (ADVB anche) (PREP in)
            (NP (ADJ~IN numerose) (ADJ~DI altre) (NOU~CA citta'))))
      (. .)) )


************** FRASE NEWS-584 **************

 ( (PP
    (PP
        (PP (PREP Nel)
            (NP
                (NP (ART~DE Nel) (NOU~CS centro) (ADJ~QU industriale))
                (PP (PREP di)
                    (NP (NOU~PR Elbasan))))))
        (, ,)
        (PP
            (PP (PREP a)
                (NP (NOU~PR Librazhd)))
             (, ,)
             (PP (PREP a)
                 (NP
                     (NP (NOU~PR Lac)
                         (PRN
                             (-LRB- -LRB-)
                             (S
                                 (ADVP-LOC (ADVB anche) (ADVB qui))
                                 (NP-PRD
                                     (NP (NOU~CS obiettivo))
                                     (PP (PREP dei)
                                         (NP (ART~DE dei) (NOU~CP manifestanti))))
                                   (VP (VAU~RE e')
                                       (VP (VMA~PA stato)
                                           (NP-EXTPSBJ-2033
                                               (NP (ART~DE il) (NOU~CS commissariato))
                                               (PP (PREP di)
                                                   (NP (NOU~CS polizia))))))
                                       (NP-SBJ (-NONE- *-2033)))
                                    (-RRB- -RRB-)))
                              (, ,)
                              (NP (NOU~PR Kuchova)
                                  (, ,)
                                  (NP (NOU~PR Memaljai)
                                      (, ,)
                                      (NP (NOU~PR Tepelene)
                                          (PRN
                                              (-LRB- -LRB-)
                                              (S
                                                  (PP-LOC (PREP nel)
                                                      (NP
                                                          (NP (ART~DE nel) (NOU~CS carcere))
                                                          (PP (PREP di)
                                                              (NP (ADJ~DE questa) (NOU~CA citta')))))
                                                     (VP (VAU~RE e')
                                                         (VP (VMA~PA detenuto)
                                                             (NP-EXTPSBJ-3933
                                                                 (NP (ART~DE il) (NOU~CA leader))
                                                                 (PP (PREP dell')
                                                                     (NP (ART~DE dell') (NOU~CS opposizione) (ADJ~QU socialista)))
                                                                  (, ,)
                                                                  (NP (NOU~PR Fatos) (NOU~PR Nano))
                                                                  (, ,)
                                                                  (SBAR
                                                                      (NP-4333 (PRO~RE che))
                                                                      (S
                                                                          (NP-SBJ (-NONE- *-4333))
                                                                          (VP (VAU~RE sta)
                                                                              (VP (VMA~GE cavalcando)
                                                                                  (NP (ART~DE la) (NOU~CS rivolta)))))))))
                                                             (NP-SBJ (-NONE- *-3933)))
                                                          (-RRB- -RRB-))))))))
                                     (. .)) )


************** FRASE NEWS-585 **************

 ( (S
    (PP (PREP Per)
        (NP
            (NP (NOU~CP motivi))
            (PP (PREP di)
                (NP (NOU~CS sicurezza)))))
       (, ,)
       (NP-SBJ (ART~DE la) (NOU~CS Federazione) (ADJ~QU nazionale)
           (NP (NOU~CS calcio)))
        (VP (VAU~RE ha)
            (VP (VMA~PA sospeso)
                (PRN
                    (, ,)
                    (ADVP (ADVB FINO_A_NUOVO_ORDINE))
                    (, ,))
                 (NP (ART~DE il)
                     (NP (NOU~CS campionato))
                     (, ,)
                     (SBAR
                         (NP-2333 (PRO~RE che))
                         (S
                             (NP-SBJ (-NONE- *-2333))
                             (PP-LOC (PREP in)
                                 (NP (NOU~PR Albania)))
                              (NP (PRO~RI si))
                              (VP (VMA~RE disputa)
                                  (NP-TMP (ART~DE il) (NOU~CS sabato))))))))
                (. .)) )


************** FRASE NEWS-586 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE L') (NOU~CS ambasciata) (ADJ~QU americana))
        (PP-LOC (PREP a)
            (NP (NOU~PR Tirana))))
      (VP (VAU~RE ha)
          (VP (VMA~PA avvisato)
              (NP-833 (ART~DE i) (NOU~CP cittadini) (NOU~PR Usa))
              (PP
                  (PP (PREP di)
                      (S
                          (VP (VMA~IN muoversi)
                              (NP-12.133 (PRO~RI muoversi))
                              (PP (PREP con)
                                  (NP (ADJ~QU estrema) (NOU~CS cautela)))
                               (PP-LOC (PREP nel)
                                   (NP (ART~DE nel) (NOU~CS Paese))))
                             (NP-SBJ (-NONE- *-833))))
                       (CONJ e)
                       (PP (PREP di)
                           (S
                               (VP (VMA~IN evitare)
                                   (NP (ART~DE gli) (NOU~CP assembramenti)))
                                (NP-SBJ (-NONE- *-12.133)))))))
                 (. .)) )


************** FRASE NEWS-587 **************

 ( (S
    (S
        (NP-SBJ-133
            (NP (ART~DE I) (NOU~CP partiti))
            (PP (PREP d')
                (NP (NOU~CS opposizione))
                (PP (PREP al)
                    (NP
                        (NP (ART~DE al) (NOU~CS Governo))
                        (PP (PREP di)
                            (NP (NOU~CS destra)))
                         (PP (PREP del)
                             (NP (ART~DE del) (NOU~CS presidente) (NOU~PR Berisha)))))))
              (VP (VAU~RE stanno)
                  (VP (VMA~GE soffiando)
                      (PP-LOC (PREP sul)
                          (NP
                              (NP (ART~DE sul) (NOU~CS fuoco))
                              (PP (PREP delle)
                                  (NP (ART~DE delle) (NOU~CP proteste))))))))
                (CONJ e)
                (S
                    (VP (VAU~RE hanno)
                        (VP (VMA~PA indetto)
                            (NP (ART~IN una) (NOU~CS manifestazione))
                            (PP-TMP (PREP per) (ADVB oggi))
                            (PP-LOC (PREP nella)
                                (NP (ART~DE nella) (NOU~CS capitale)))))
                       (NP-SBJ (-NONE- *-133)))
                    (. .)) )


************** FRASE NEWS-588 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Gli) (NOU~CP investimenti))
        (PP (PREP a)
            (NP (NOU~CS piramide)))
         (, ,)
         (SBAR
             (NP-6333 (PRO~RE che))
             (S
                 (NP-SBJ (-NONE- *-6333))
                 (VP (VAU~IM venivano)
                     (VP (VMA~PA gestiti)
                         (PP-LGS (PREP da)
                             (NP (NUMR dieci) (ADJ~QU diverse) (NOU~CA societa') (ADJ~QU finanziarie)))
                          (S
                              (VP (VMA~GE promettendo)
                                  (NP (NOU~CP rendimenti) (ADJ~QU elevatissimi)))
                               (NP-SBJ (-NONE- *))))))))
             (, ,)
             (VP (VAU~RE sono)
                 (VP (VMA~PA crollati)
                     (CONJ quando)
                     (S
                         (ADVP (ADVB non))
                         (VP (VAU~RE sono)
                             (VP (VAU~PA stati)
                                 (ADVP-TMP (ADVB piu'))
                                 (VP (VMA~PA raccolti))))
                           (NP-SBJ (-NONE- *-2633))
                           (NP-EXTPSBJ-2633
                               (NP (NOU~CP azionisti))
                               (ADJP (ADJ~QU disposti)
                                   (PP (PREP ad)
                                       (S
                                           (VP (VMA~IN alimentare)
                                               (NP
                                                   (NP (ART~DE la) (NOU~CS base))
                                                   (PP (PREP della)
                                                       (NP (ART~DE della) (NOU~CS piramide)))))
                                              (NP-SBJ (-NONE- *-2633)))))))))
                         (. .)) )


************** FRASE NEWS-589 **************

 ( (S
    (S
        (VP (VMA~GE Affrontando)
            (NP
                (NP (PRO~ID una))
                (PP (PREP delle)
                    (NP (ART~DE delle)
                        (ADJP (ADVB piu') (ADJ~QU gravi))
                        (NP (NOU~CA crisi)
                            (PP (PREP del)
                                (NP (ART~DE del) (ADJ~PO proprio) (NOU~CS Governo)))
                             (PP-1033 (PREP da)
                                 (NP-1133 (PRO~RE quando)
                                     (S
                                         (VP (VAU~RE hanno)
                                             (VP (VMA~PA sconfitto)
                                                 (NP-13.1133 (-NONE- *-1133))
                                                 (NP-TMP (-NONE- *-13.1133))
                                                 (NP (ART~DE gli) (ADJ~QU ex) (NOU~CP comunisti))
                                                 (PP-TMP (PREP nel)
                                                     (NP (ART~DE nel) (NUMR 1992)))))
                                            (NP-SBJ (-NONE- *-2033))))))))))
                    (NP-SBJ (-NONE- *-2033)))
                 (, ,)
                 (NP-SBJ-2033
                     (NP (ART~DE i) (NOU~CP Democratici))
                     (PP (PREP di)
                         (NP (NOU~PR Sali) (NOU~PR Berisha))))
                   (VP (VAU~RE hanno)
                       (VP (VMA~PA tentato)
                           (PP (PREP di)
                               (S
                                   (VP (VMA~IN calmare)
                                       (NP
                                           (NP (ART~DE gli) (NOU~CP animi))
                                           (PP (PREP della)
                                               (NP-31.133 (ART~DE della) (NOU~CS popolazione)
                                                   (PRN
                                                       (, ,)
                                                       (SBAR
                                                           (NP-3333 (PRO~RE che))
                                                           (S
                                                               (NP-SBJ (-NONE- *-3333))
                                                               (VP (VMA~RE rischia)
                                                                   (PP (PREP di)
                                                                       (S
                                                                           (VP (VMA~IN perdere)
                                                                               (NP
                                                                                   (NP (ART~DE i) (NOU~CP risparmi))
                                                                                   (PP (PREP di)
                                                                                       (NP (ART~IN un') (ADJ~QU intera) (NOU~CS vita)))))
                                                                              (NP-SBJ (-NONE- *-31.133)))))))
                                                               (, ,))))))
                                                (NP-SBJ (-NONE- *-2033))))
                                          (S
                                              (S
                                                  (VP (VMA~GE vietando)
                                                      (NP
                                                          (NP (ART~DE gli) (NOU~CP schemi))
                                                          (PP (PREP d')
                                                              (NP (NOU~CS investimento)))
                                                           (PP (PREP a)
                                                               (NP (NOU~CS piramide)))))
                                                      (NP-SBJ (-NONE- *-2033)))
                                                   (, ,)
                                                   (S
                                                       (S
                                                           (VP (VMA~GE prevedendo)
                                                               (NP
                                                                   (NP (NOU~CP pene) (ADJ~QU detentive))
                                                                   (PP-TMP (PREP fino)
                                                                       (PP (PREP a)
                                                                           (NP (NUMR vent') (NOU~CP anni)))))
                                                                  (PP (PREP per)
                                                                      (NP (ART~DE i) (NOU~CP responsabili))))
                                                                (NP-SBJ (-NONE- *-2033)))
                                                             (CONJ e)
                                                             (S
                                                                 (VP (VMA~GE congelando)
                                                                     (NP (ART~DE i) (NOU~CP fondi))))))))
                                                   (NP-SBJ (-NONE- *-2033))
                                                   (. .)) )


************** FRASE NEWS-590 **************

 ( (S
    (VP
        (PP (PREP Per)
            (NP
                (NP (PRO~ID molti))
                (PP (PREP degli)
                    (NP
                        (NP (ART~DE degli) (NOU~CP organizzatori))
                        (PP (PREP della)
                            (NP (ART~DE della) (NOU~CS truffa)))))))
             (VP (VAU~RE sono)
                 (VP (VMA~PA scattate)
                     (NP-EXTPSBJ-933 (ART~DE le) (NOU~CP manette))))
               (, ,)
               (CONJ ma)
               (S
                   (NP-SBJ-1333 (ART~DE il) (NOU~CS Governo))
                   (VP (VAU~RE e')
                       (VP (VMA~PA finito)
                           (ADVP (ADVB LO_STESSO))
                           (PP-LOC+METAPH (PREP nell')
                               (NP
                                   (NP (ART~DE nell') (NOU~CS occhio))
                                   (PP (PREP del)
                                       (NP (ART~DE del) (NOU~CS ciclone)))))
                              (PP (PREP con)
                                  (NP (ART~DE l') (NOU~CS accusa)
                                      (PP (PREP di)
                                          (S
                                              (VP
                                                  (VP (VAU~IN esserne)
                                                      (NP-27.133 (PRO~PE esserne))) (VMA~PA stato)
                                                   (NP-PRD
                                                       (PRN
                                                           (, ,)
                                                           (CONJ se)
                                                           (NP
                                                               (NP (ADVB non) (NOU~CS complice))
                                                               (NP (-NONE- *-27.133)))
                                                            (, ,))
                                                         (NP (ADVB PER_LO_MENO) (NOU~CS convivente))))
                                                   (NP-SBJ (-NONE- *-1333))))))))))
                           (NP-SBJ (-NONE- *-933))
                           (. .)) )


************** FRASE NEWS-591 **************

 ( (S
    (CONJ Ma)
    (NP-SBJ
        (NP (ADVB proprio) (ART~DE il) (NOU~CS congelamento))
        (PP (PREP dei)
            (NP
                (NP (ART~DE dei) (NOU~CP patrimoni))
                (PP (PREP dei)
                    (NP (ART~DE dei) (NOU~CP fondi))))))
        (VP (VAU~RE ha)
            (VP (VMA~PA fatto)
                (S
                    (VP (VMA~IN salire)
                        (ADVP (ADVB AL_MASSIMO))
                        (NP-1433 (ART~DE la) (NOU~CS tensione)))
                     (NP-SBJ (-NONE- *-1433)))
                  (, ,)
                  (CONJ DATO_CHE)
                  (S
                      (NP-SBJ-1933 (ADJ~IN molti) (NOU~CP investitori))
                      (VP (VMA~RE temono)
                          (PP (PREP di)
                              (S
                                  (ADVP (ADVB non))
                                  (VP (VMA~IN vedere)
                                      (ADVP-TMP (ADVB piu'))
                                      (NP (ART~DE i) (ADJ~PO loro) (NOU~CP soldi)))
                                   (NP-SBJ (-NONE- *-1933))))))))
                 (. .)) )


************** FRASE NEWS-592 **************

 ( (S
    (NP
        (NP (ART~IN Un) (NOU~CS miliardo))
        (PP (PREP di)
            (NP (NOU~CP dollari))))
      (PUNCT -)
      (VP (VMA~RE dice)
          (NP-EXTPSBJ-733 (NOU~PR John) (NOU~PR King)
              (, ,)
              (NP
                  (NP (NOU~CS rappresentante))
                  (PP-LOC (PREP a)
                      (NP (NOU~PR Tirana)))
                   (PP (PREP del)
                       (NP (ART~DE del) (NOU~CS Fondo) (ADJ~QU monetario) (ADJ~QU internazionale))))))
           (NP-SBJ (-NONE- *-733))
           (PUNCT -)
           (. .)) )


************** FRASE NEWS-593 **************

 ( (S
    (NP-SBJ (PRO~DE Questa))
    (VP (VMA~RE e')
        (NP-PRD
            (NP (ART~DE la) (ADJ~PO nostra) (NOU~CS stima))
            (PRN
                (, ,)
                (ADVP (ADVB PER_DIFETTO))
                (, ,))
             (PP (PREP dei)
                 (NP (ART~DE dei)
                     (NP (NOU~CP soldi))
                     (VP (VMA~PA investiti)
                         (NP (-NONE- *))
                         (PP-LOC (PREP nelle)
                             (NP (ART~DE nelle)
                                 (NP (NOU~CA societa'))
                                 (SBAR
                                     (NP-1333 (PRO~RE che))
                                     (S
                                         (NP-SBJ (-NONE- *-1333))
                                         (VP (VMA~IM costituivano)
                                             (NP (ART~DE il) (NOU~PR Ponzi) (NOU~CA scheme) (ADJ~QU albanese))))))))))))
               (. .)) )


************** FRASE NEWS-594 **************

 ( (S
    (VP (VMA~RA Fu)
        (NP-EXTPSBJ-233 (ART~DE l'))
        (NP-EXTPSBJ-633
            (ADJP
                (ADJP (ADJ~QU italo))
                (PUNCT -)
                (ADJP (ADJ~QU americano))) (NOU~PR Tom) (NOU~PR Ponzi))
          (PP (PREP a)
              (S
                  (VP (VMA~IN inventare)
                      (PP-LOC (PREP nella)
                          (NP
                              (NP (ART~DE nella) (NOU~PR Chicago))
                              (PP-TMP (PREP di)
                                  (NP (NOU~PR Al) (NOU~PR Capone)))))
                         (NP-1633 (ART~DE il)
                             (NP (NOU~CS meccanismo) (ADJ~QU infernale))
                             (SBAR
                                 (NP-1333 (PRO~RE che))
                                 (S
                                     (NP-SBJ (-NONE- *-1333))
                                     (VP
                                         (PP-LOC (PREP nella)
                                             (NP
                                                 (NP (ART~DE nella) (NOU~PR Milano) (ADJ~QU rampante))
                                                 (PP-TMP (PREP degli)
                                                     (NP (ART~DE degli) (NOU~CP anni)
                                                         (NP (DATE '80))))))
                                             (VP (VAU~IM era)) (VMA~PA diventato)
                                             (PRN
                                                 (, ,)
                                                 (S
                                                     (ADVP (ADVB leggermente))
                                                     (VP-2933 (VMA~PA corretto))
                                                     (NP-SBJ (-NONE- *-1633)))
                                                  (, ,))
                                               (NP-PRD
                                                   (NP (ART~IN un) (NOU~CS gioco))
                                                   (PP (PREP di)
                                                       (NP (NOU~CA società))))
                                                 (VP-PRD (-NONE- *-2933)))))))
                                  (NP-SBJ (-NONE- *-233)))))
                         (NP-SBJ (-NONE- *-233))
                         (. .)) )


************** FRASE NEWS-595 **************

 ( (S
    (NP (PRO~RI Si))
    (VP (VMA~IM chiamava)
        (NP-PRD (ART~DE l')
            (" ") (NOU~PR Aeroplano)
            (" ")))
      (NP-SBJ (-NONE- *))
      (. .)) )


************** FRASE NEWS-596 **************

 ( (S
    (S
        (NP-SBJ (PRO~RI Si))
        (' ')
        (VP (VMA~IM scuciva)
            (' ')
            (NP (ART~IN un) (NOU~CS milione))))
      (CONJ e)
      (S
          (S
              (NP-SBJ-833 (PRO~RI se))
              (NP-933 (PRO~PE ne))
              (VP (VMA~IM riceveva)
                  (PP-PRD (PREP in)
                      (NP (NOU~CS regalo)))
                   (NP (ART~IN un) (-NONE- *-933))))
             (, ,)
             (S
                 (NP-PRD (ART~DE l') (ADJ~QU importante))
                 (VP (VMA~IM era)
                     (S-EXTPSBJ-433
                         (VP-1933 (VMA~IN trovare)
                             (ADVP-TMP (ADVB sempre))
                             (NP
                                 (NP (ADJ~IN qualche) (ADJ~QU nuovo) (NOU~CS passeggero))
                                 (PP (PREP da)
                                     (S
                                         (VP (VMA~IN infilare)
                                             (NP (-NONE- *-2333))
                                             (PP-LOC (PREP nella)
                                                 (NP (ART~DE nella) (NOU~CA WAITING_LIST))))
                                           (NP-SBJ (-NONE- *-833))))
                                     (PP (PREP per)
                                         (NP (ART~DE il)
                                             (" ") (NOU~CS volo)
                                             (" ") (ADJ~QU milionario))))
                                    (, ,)
                                    (PP-TMP (PREP fino)
                                        (PP (PREP a)
                                            (CONJ quando)
                                            (S
                                                (S
                                                    (NP-SBJ-3933 (ART~DE i)
                                                        (ADJP (ADVB piu') (ADJ~QU sfortunati)))
                                                     (VP (VMA~IM restavano)
                                                         (ADVP (ADVB immancabilmente))
                                                         (PP-LOC (PREP a)
                                                             (NP (NOU~CS terra)))))
                                                    (, ,)
                                                    (CONJ cioe')
                                                    (S
                                                        (NP-LOC (PRO~LO ci))
                                                        (VP (VMA~IM rimettevano)
                                                            (NP (ART~DE i) (NOU~CP soldi)))
                                                         (NP-SBJ (-NONE- *-3933)))))))
                                          (NP-SBJ (-NONE- *))))
                                    (VP-SBJ (-NONE- *-1933))))
                              (. .)) )


************** FRASE NEWS-597 **************

 ( (S
    (PP-TMP (PREP Negli)
        (NP (ART~DE Negli) (NOU~CP anni)
            (NP (NUMR 20))))
      (NP-SBJ-433 (NOU~PR Ponzi))
      (VP (VMA~IM prometteva)
          (NP
              (NP (NOU~CP interessi))
              (PP (PREP da)
                  (NP (NOU~CS brivido)))
               (PP-TMP (PREP in)
                   (NP (ADJ~IN poche) (NOU~CP settimane)))
                (SBAR
                    (S
                        (NP (PRO~RE che))
                        (VP (VMA~IM ripagava)
                            (PP (PREP ai)
                                (NP (ART~DE ai) (ADJ~OR primi) (NOU~CP clienti)))
                             (PP (PREP con)
                                 (NP
                                     (NP (ART~DE i) (NOU~CP soldi))
                                     (PP (PREP dei)
                                         (NP (ART~DE dei) (ADJ~QU nuovi) (NOU~CP sottoscrittori))))))))))
                 (NP-SBJ (-NONE- *-433))
                 (. .)) )


************** FRASE NEWS-598 **************

 ( (S
    (NP-SBJ (ART~DE Gli) (PRO~OR ultimi))
    (VP (VMA~RA finirono)
        (PRN
            (, ,)
            (ADVP (ADVB ovviamente))
            (, ,))
         (ADJP-PRD (ADJ~QU AL_VERDE)))
      (. .)) )


************** FRASE NEWS-599 **************

 ( (NP
    (NP
        (NP (PRO~ID Niente))
        (PP (PREP di) (ADJ~QU nuovo))
        (PRN
            (, ,)
            (ADVP (ADVB IN_SOSTANZA))
            (, ,))
         (PP-LOC (PREP sotto)
             (NP
                 (NP (ART~DE il) (NOU~CS cielo))
                 (PP (PREP della)
                     (NP
                         (NP (ART~DE della)
                             (' ') (NOU~CS terra)
                             (' '))
                          (PP (PREP delle)
                              (NP (ART~DE delle) (NOU~CP aquile))))))))
            (, ,)
            (CONJ ma)
            (S
                (NP-SBJ
                    (NP (ART~DE le) (NOU~CP dimensioni))
                    (PP (PREP della)
                        (NP (ART~DE della) (NOU~CS stangata))))
                  (NP-TMP (ADJ~DE questa) (NOU~CS volta))
                  (VP (VMA~RE sono)
                      (ADJP-PRD (ADJ~QU colossali))))
                (. .)) )


************** FRASE NEWS-600 **************

 ( (S
    (S-TMP
        (VP (VMA~PA Placata)
            (NP-EXTPSBJ-233
                (NP (ART~DE la) (NOU~CS rivolta))
                (PP (PREP di)
                    (NP (NOU~CS piazza)))))
           (NP-SBJ (-NONE- *-233)))
        (VP (VMA~RE restano)
            (NP-EXTPSBJ-733 (-NONE- *-)
                (NP-733 (ART~DE la) (NOU~CS rabbia) (-NONE- *-) (ADJ~QU popolare))
                (CONJ e)
                (NP (ART~DE i)
                    (NP (NUMR mille)) (NOU~CP interrogativi)
                    (PP (PREP sul)
                        (NP
                            (NP (ART~DE sul) (NOU~CS disastro))
                            (PP (PREP da)
                                (NP
                                    (NP (ART~IN un) (NOU~CS miliardo))
                                    (PP (PREP di)
                                        (NP (NOU~CP dollari))))))))))
                (NP-SBJ (-NONE- *-733))
                (. .)) )


************** FRASE NEWS-601 **************

 ( (S
    (NP-SBJ
        (NP (ART~IN Una) (NOU~CS truffa))
        (PP (PREP AI_DANNI_DI)
            (NP (ART~DE dell') (NOU~PR UNIONE_EUROPEA))))
      (VP (VAU~RE è)
          (VP (VAU~PA stata)
              (VP (VMA~PA scoperta))))
        (PP-LGS (PREP da)
            (NP
                (NP (NOU~CP carabinieri))
                (CONJ e)
                (NP
                    (NP (NOU~CS GUARDIA_DI_FINANZA))
                    (SBAR
                        (NP-1333 (PRO~RE che))
                        (S
                            (NP-SBJ (-NONE- *-1333))
                            (VP (VAU~RE stanno)
                                (VP (VMA~GE eseguendo)
                                    (PP-LOC (PREP in)
                                        (NP (NOU~PR Calabria)
                                            (, ,)
                                            (NP (NOU~PR Lazio)
                                                (, ,)
                                                (NP (NOU~PR Toscana)
                                                    (CONJ e) (NOU~PR Piemonte)))))
                                        (NP
                                            (NP (NUMR 45) (NOU~CP ordinanze))
                                            (PP (PREP di)
                                                (NP
                                                    (NP (NOU~CS custodia) (ADJ~QU cautelare))
                                                    (PP-LOC (PREP in)
                                                        (NP (NOU~CS carcere)))))))))))))
                       (. .)) )


************** FRASE NEWS-602 **************

 ( (S
    (PP (PREP Tra)
        (NP (ART~DE gli) (NOU~CP arrestati)))
     (VP (VMA~RE figurano)
         (NP-EXTPSBJ-733
             (NP
                 (NP-533
                     (NP (NOU~CP dirigenti))
                     (PP-LOC (PREP nel)
                         (NP
                             (NP (ART~DE nel) (NOU~CS settore))
                             (PP (PREP dell')
                                 (NP (ART~DE dell') (NOU~CS ortofrutta))))))
                     (CONJ e)
                     (NP (NOU~CP funzionari) (ADJ~QU regionali))) (-NONE- *-)
                  (, ,)
                  (NP
                      (NP
                          (NP (NOU~CP presidenti))
                          (PP (PREP di)
                              (NP (NOU~CP cooperative))))
                        (, ,)
                        (NP
                            (NP (NOU~CP amministratori))
                            (CONJ e)
                            (NP
                                (NP (NOU~CP soci))
                                (PP (PREP di)
                                    (NP
                                        (NP (NOU~CP organizzazioni))
                                        (CONJ ed)
                                        (NP
                                            (NP (NOU~CP unioni))
                                            (PP (PREP di)
                                                (NP (NOU~CP produttori)))))))))))
                     (NP-SBJ (-NONE- *-533))
                     (. .)) )


************** FRASE NEWS-603 **************

 ( (S
    (NP-SBJ (ART~DE Le) (NOU~CP accuse))
    (VP (VMA~RE variano)
        (PP (PREP dall')
            (NP (ART~DE dall')
                (NP (NOU~CS ASSOCIAZIONE_A_DELINQUERE))
                (VP (VMA~PA finalizzata)
                    (NP-EXTPSBJ-733 (NOU~CS ASSOCIAZIONE_A_DELINQUERE) (-NONE- *-))
                    (NP (-NONE- *))))
              (PP (PREP alla)
                  (NP (ART~DE alla)
                      (NP
                          (NP (NOU~CS truffa) (ADJ~QU aggravata)) (S+REDUC
                              (S
                                  (S
                                      (VP (VMA~PA consumata))
                                      (NP-SBJ-12.1033 (-NONE- *-11.1033))))
                                (CONJ e)
                                (S
                                    (VP (VMA~PA tentata))
                                    (NP-SBJ (-NONE- *-12.1033))))
                              (PP (PREP all')
                                  (NP (ART~DE all') (NOU~PR Ue))))
                            (, ,)
                            (NP
                                (NP
                                    (NP (NOU~CS corruzione))
                                    (VP (VMA~PA commesse)
                                        (NP (-NONE- *))
                                        (PP-LGS (PREP da)
                                            (NP
                                                (NP (ADJ~QU pubblici) (NOU~CP ufficiali))
                                                (CONJ e)
                                                (NP (NOU~CP privati))))))
                                    (CONJ e)
                                    (NP
                                        (NP (NOU~CA falsità))
                                        (PP-LOC (PREP in)
                                            (NP (NOU~CS atto) (ADJ~QU pubblico)))))))))
                       (. .)) )


************** FRASE NEWS-604 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Il) (NOU~CS valore) (ADJ~QU complessivo))
        (PP (PREP dei)
            (NP
                (NP (ART~DE dei) (NOU~CP contributi))
                (PP (PREP dell')
                    (NP (ART~DE dell') (NOU~PR UNIONE_EUROPEA)))
                 (VP (VMA~PA percepiti)
                     (NP (-NONE- *))
                     (ADVP (ADVB illegalmente))
                     (PP-LGS (PREP dagli)
                         (NP (ART~DE dagli) (NOU~CP indagati)))))))
          (PRN
              (, ,)
              (PP (PREP secondo)
                  (NP (ART~DE gli) (NOU~CP inquirenti)))
               (, ,))
            (VP (VMA~RE ammonta)
                (PP (PREP a)
                    (NP
                        (NP (NUMR 50) (NOU~CP milioni))
                        (PP (PREP di)
                            (NP (NOU~CA euro))))))
                (. .)) )


************** FRASE NEWS-605 **************

 ( (S
    (NP-SBJ (ART~DE La) (NOU~CS truffa))
    (VP (VMA~IM riguardava)
        (NP (ART~DE i)
            (NP (NOU~CP finanziamenti))
            (VP (VMA~PA erogati)
                (NP (-NONE- *))
                (PP (PREP per)
                    (NP
                        (NP (ART~DE il) (NOU~CS ritiro))
                        (PP-LOC (PREP dal)
                            (NP (ART~DE dal) (NOU~CS mercato)))
                         (PP (PREP delle)
                             (NP
                                 (NP (ART~DE delle) (NOU~CP produzioni))
                                 (VP (VMA~PE eccedenti)
                                     (NP (-NONE- *)))
                                  (PP-LOC (PREP nel)
                                      (NP (ART~DE nel) (NOU~CS settore) (ADJ~QU agricolo))))))))))
              (. .)) )


************** FRASE NEWS-606 **************

 ( (S
    (NP-SBJ (ART~DE Gli) (NOU~CP indagati))
    (PRN
        (, ,)
        (PP (PREP secondo)
            (NP (ART~DE le) (NOU~CP accuse)))
         (, ,))
      (VP (VMA~IM gonfiavano)
          (NP (ART~DE le)
              (NP (NOU~CP cifre))
              (ADJP (ADJ~QU relative)
                  (PP
                      (PP (PREP alla)
                          (NP (ART~DE alla) (NOU~CS produzione)))
                       (CONJ e)
                       (PP (PREP alla)
                           (NP
                               (NP (ART~DE alla) (NOU~CS vendita))
                               (PP (PREP dei)
                                   (NP (ART~DE dei)
                                       (NP (NOU~CP prodotti))
                                       (S
                                           (S
                                               (S
                                                   (PP (PREP su)
                                                       (NP (PRO~RE cui)))
                                                    (VP (VAU~IM venivano)
                                                        (VP (VMA~PA chiesti)))
                                                     (NP-SBJ (-NONE- *-2533))))
                                               (CONJ ed)
                                               (S
                                                   (VP (VMA~PA erogati)
                                                       (NP-EXTPSBJ-2533 (ART~DE i) (NOU~CP finanziamenti)))
                                                    (NP-SBJ (-NONE- *-2533))))))))))))
                      (. .)) )


************** FRASE NEWS-607 **************

 ( (S
    (NP-SBJ (ART~DE Le)
        (NP (NOU~CP indagini))
        (, ,)
        (VP (VMA~PA condotte)
            (NP (-NONE- *))
            (PP-LGS
                (PP (PREP dal)
                    (NP
                        (NP (ART~DE dal) (NOU~CS Comando))
                        (NP (NOU~CP carabinieri))
                        (NP (NOU~CP politiche) (ADJ~QU agricole))
                        (PP-LOC (PREP di)
                            (NP (NOU~PR Roma)))))
                   (CONJ e)
                   (PP (PREP dai)
                       (NP
                           (NP (ART~DE dai) (NOU~CP Comandi) (ADJ~QU provinciali))
                           (PP (PREP della)
                               (NP
                                   (NP (ART~DE della) (NOU~CS GUARDIA_DI_FINANZA))
                                   (PP-LOC (PREP di)
                                       (NP (NOU~PR Catanzaro)
                                           (CONJ e) (NOU~PR REGGIO_CALABRIA))))))))))
                (VP (VAU~RE sono)
                    (VP (VAU~PA state)
                        (VP (VMA~PA coordinate))))
                  (PP-LGS (PREP dalla)
                      (NP
                          (NP (ART~DE dalla) (NOU~CS Procura))
                          (PP (PREP della)
                              (NP (ART~DE della) (NOU~CS Repubblica)))
                           (PP-LOC (PREP di)
                               (NP (NOU~PR Palmi)))))
                      (. .)) )


************** FRASE NEWS-608 **************

 ( (S
    (NP-SBJ
        (NP-SBJ (NOU~CP Carabinieri))
        (CONJ e)
        (NP (NOU~CS GUARDIA_DI_FINANZA)))
     (VP
         (VP (VAU~RE stanno)
             (ADVP (ADVB anche))) (VMA~GE eseguendo)
          (NP (ART~IN dei) (NOU~CP sequestri) (ADJ~QU patrimoniali)))
       (. .)) )


************** FRASE NEWS-609 **************

 ( (S
    (NP (PRO~RI Si))
    (VP (VMA~RE apre)
        (NP-EXTPSBJ-333
            (NP (ART~DE il) (NOU~CS confronto))
            (PP (PREP sulle)
                (NP (ART~DE sulle) (NOU~CP pensioni)))))
       (NP-SBJ (-NONE- *-333))
       (. .)) )


************** FRASE NEWS-610 **************

 ( (S
    (PP-TMP (PREP A)
        (NP (NOU~CS maggio)))
     (, ,)
     (PP-TMP (ADVB subito) (PREP dopo)
         (NP
             (NP (ART~DE la) (NOU~CS festa))
             (PP (PREP dei)
                 (NP (ART~DE dei) (NOU~CP lavoratori)))))
        (, ,)
        (NP-SBJ (ART~DE il) (NOU~CS governo))
        (VP (VMA~FU presenterà)
            (PP-LOC (PREP al)
                (NP
                    (NP (ART~DE al) (NOU~CS tavolo))
                    (PP (PREP del)
                        (NP (ART~DE del) (NOU~CA welfare)))))
               (NP (ART~DE le) (ADJ~PO sue) (NOU~CP proposte)))
            (. .)) )


************** FRASE NEWS-611 **************

 ( (S
    (" ")
    (PP-233 (PREP Per)
        (NP (PRO~PE noi)))
     (PUNCT -)
     (VP (VMA~RE precisa)
         (NP-EXTPSBJ-633
             (NP (ART~DE il) (NOU~CS ministro))
             (PP (PREP del)
                 (NP (ART~DE del) (NOU~CS Lavoro)))
              (, ,)
              (NP (NOU~PR Cesare) (NOU~PR Damiano)))
           (PUNCT -)
           (S
               (NP-SBJ (ART~DE la) (NOU~CA priorità))
               (VP (VAU~RE è)
                   (VP (VMA~PA costituita)
                       (PP-17.1033 (-NONE- *-233))
                       (PP-LGS (PREP dalla)
                           (NP
                               (NP (ART~DE dalla) (NOU~CS rivalutazione))
                               (PP (PREP delle)
                                   (NP (ART~DE delle)
                                       (NP (NOU~CP pensioni))
                                       (ADJP (ADVB più) (ADJ~QU basse))
                                       (, ,)
                                       (VP (VMA~PA calcolate)
                                           (NP (-NONE- *))
                                           (PP (PREP sulla)
                                               (NP
                                                   (NP (ART~DE sulla) (NOU~CS base))
                                                   (PP (PREP dei)
                                                       (NP (ART~DE dei)
                                                           (NP (NOU~CP contributi))
                                                           (VP (VMA~PA versati)
                                                               (NP (-NONE- *))
                                                               (NP (-NONE- *))))))))))))
                                 (PP (-NONE- *-17.1033))))))
                     (NP-SBJ (-NONE- *-633))
                     (" ")
                     (. .)) )


************** FRASE NEWS-612 **************

 ( (S
    (S
        (NP-SBJ-133 (NOU~PR Padoa-Schioppa))
        (VP (VAU~RE ha)
            (VP (VMA~PA ottenuto)
                (NP
                    (NP (ART~DE il) (NOU~CA VIA_LIBERA))
                    (PP (PREP dell')
                        (NP (ART~DE dell') (NOU~PR Ecofin)))
                     (PP (PREP sul)
                         (NP (ART~DE sul) (ADJ~PO suo) (NOU~CS piano)))))))
          (, ,)
          (CONJ ma)
          (S
              (ADVP-TMP (ADVB ora))
              (VP (VMO~FU dovrà)
                  (S
                      (VP (VMA~IN fare)
                          (NP (ART~DE i) (NOU~CP conti))
                          (PP (PREP con)
                              (NP (ART~DE le)
                                  (NP (NOU~CP richieste))
                                  (VP (VMA~PE provenienti)
                                      (NP (-NONE- *))
                                      (PP-LOC (PREP dalla)
                                          (NP
                                              (NP (ART~DE dalla) (NOU~CS sinistra))
                                              (PP (PREP della)
                                                  (NP (ART~DE della) (NOU~CS maggioranza)))))))))
                             (NP-SBJ (-NONE- *-15.1033))))
                       (NP-SBJ-15.1033 (-NONE- *-133)))
                    (. .)) )


************** FRASE NEWS-613 **************

 ( (S
    (ADVP-TMP (ADVB Ieri))
    (NP-SBJ (NOU~PR Rifondazione)
        (CONJ e) (NOU~PR Verdi))
     (VP (VAU~RE sono)
         (VP (VMA~PA tornati)
             (PP (PREP all')
                 (NP (ART~DE all') (NOU~CS attacco)))))
        (NP-SBJ (-NONE- *-233))
        (. .)) )


************** FRASE NEWS-614 **************

 ( (S
    (PP-LOC (PREP Da) (ADVB qui))
    (VP (-NONE- *)
        (NP-EXTPSBJ-333
            (NP (ART~DE l') (NOU~CS annuncio))
            (PP (PREP di)
                (NP
                    (" ") (ART~IN un)
                    (NP (NOU~CS confronto))
                    (ADJP
                        (ADJP (ADVB molto) (ADJ~QU duro)
                            (CONJ perché)
                            (S
                                (VP (VAU~RE è)
                                    (VP (VMA~PA arrivata)
                                        (NP-EXTPSBJ-1633
                                            (NP (ART~DE la) (NOU~CS stagione))
                                            (PP (PREP del)
                                                (NP (ART~DE del) (NOU~CS risarcimento) (ADJ~QU sociale))))))
                                    (NP-SBJ (-NONE- *-1633))))
                              (CONJ e)
                              (ADJP (ADJ~QU determinato)))
                           (" ")))))
               (NP-SBJ (-NONE- *-333))
               (. .)) )


************** FRASE NEWS-615 **************

 ( (S
    (NP-SBJ
        (NP (ADVB Pure) (ART~DE i) (NOU~PR Verdi))
        (, ,)
        (PP (PREP con)
            (NP
                (NP (ART~DE il) (NOU~CS capogruppo))
                (PP (PREP alla)
                    (NP (ART~DE alla) (NOU~PR Camera)))
                 (PRN
                     (, ,)
                     (NP (NOU~PR Angelo) (NOU~PR Bonelli))
                     (, ,)))))
         (VP (VMA~RE chiedono)
             (NP (-NONE- *))
             (NP (ART~IN un) (NOU~CS chiarimento))
             (" ")
             (CONJ perché)
             (VP-20.1033
                 (ADVP (ADVB non)) (VMO~RE può)
                 (VP-21.1033 (VMA~IN essere)
                     (ADVP (ADVB certo))
                     (NP-PRD-CLEFT (ART~DE l') (NOU~PR Ue))
                     (PP-2533 (PREP a)
                         (S
                             (VP (VMA~IN condizionare)
                                 (NP
                                     (NP (ART~DE le) (NOU~CP politiche))
                                     (ADJP
                                         (ADJP (ADJ~QU economiche))
                                         (, ,)
                                         (ADJP
                                             (ADJP (ADJ~QU sociali))
                                             (, ,)
                                             (ADJP (ADJ~QU ambientali))))
                                       (PP (PREP del)
                                           (NP (ART~DE del) (ADJ~PO nostro) (NOU~CS paese)))))
                                  (NP-SBJ (-NONE- *-21.1033))))))
                      (" "))
                   (. .)) )


************** FRASE NEWS-616 **************

 ( (S
    (PP-133 (PREP A)
        (NP (ADJ~DE quel) (NOU~CS punto)))
     (NP-SBJ-433
         (NP (ART~DE le) (NOU~CP risorse))
         (PP (PREP a)
             (NP (NOU~CS disposizione))))
       (VP (VMO~CO potrebbero)
           (ADVP (ADVB anche))
           (S
               (VP (VMA~IN essere)
                   (PP-TMP)
                   (ADJP-PRD (ADJ~QU superiori)
                       (PRN
                           (-LRB- -LRB-)
                           (S
                               (PP (PREP tra)
                                   (NP (ART~DE i) (NOU~CP tecnici)))
                                (NP-LOC (PRO~LO c'))
                                (VP (VMA~RE è)
                                    (NP-EXTPSBJ-1833
                                        (NP (PRO~RE chi))
                                        (SBAR
                                            (S
                                                (VP (VMA~RE stima)
                                                    (NP
                                                        (NP (ART~IN una) (NOU~CS cifra))
                                                        (PP (PREP intorno)
                                                            (PP (PREP ai)
                                                                (NP (ART~DE ai)
                                                                    (NP (NUMR 4)
                                                                        (PUNCT -)
                                                                        (NP (NUMR 5))) (NOU~CP miliardi))))))
                                                      (NP-SBJ (-NONE- *-1833))))))
                                          (NP-SBJ (-NONE- *-1833)))
                                       (-RRB- -RRB-))))
                              (NP-SBJ (-NONE- *-433))))
                        (. .)) )


************** FRASE NEWS-617 **************

 ( (S
    (PP-LOC (PREP Sul)
        (NP (ART~DE Sul) (NOU~CS tappeto)))
     (VP (-NONE- *)
         (NP-EXTPSBJ-333
             (NP (ART~DE l') (NOU~CA ipotesi))
             (PP (PREP di)
                 (NP (ART~IN un) (NOU~CS DECRETO_LEGGE))))
           (, ,)
           (S
               (VP (VMA~GE seguendo)
                   (NP (ART~DE le)
                       (NP (NOU~CA priorità))
                       (VP (VMA~PA indicate)
                           (NP (-NONE- *))
                           (PP-LGS (PREP da)
                               (NP (NOU~PR Damiano))))))
                   (NP-SBJ (-NONE- *))))
             (NP-SBJ (-NONE- *-333))
             (. .)) )


************** FRASE NEWS-618 **************

 ( (S
    (NP-SBJ-133
        (NP (ART~DE L') (NOU~CS intervento))
        (PP (PREP sull')
            (NP (ART~DE sull') (NOU~PR Ici))))
      (, ,)
      (ADVP (ADVB invece))
      (, ,)
      (VP (VAU~RE è)
          (VP (VMA~PA destinato)
              (PP (PREP a)
                  (S
                      (VP (VMA~IN slittare))
                      (NP-SBJ (-NONE- *-133))))))
          (. .)) )


************** FRASE NEWS-619 **************

 ( (S
    (CONJ Ed)
    (VP (VMA~RE è)
        (ADJP-PRD (ADJ~QU chiaro))
        (CONJ che)
        (VP (VMA~FU saranno) (-NONE- *-933)
            (NP-PRD-CLEFT (ADVB proprio) (ART~DE le) (NOU~CP risorse) (-NONE- *-))
            (PP-EXTPSBJ-933 (PREP a)
                (S
                    (VP (VMA~IN fissare)
                        (NP
                            (NP (ART~DE i) (NOU~CP confini))
                            (PP (PREP della)
                                (NP
                                    (NP (ART~DE della) (NOU~CS platea))
                                    (PP (PREP dei)
                                        (NP (ART~DE dei) (NOU~CP beneficiari)))))))
                         (NP-SBJ (-NONE- *-733))))))
             (. .)) )


************** FRASE NEWS-620 **************

 ( (S
    (NP-SBJ (ART~IN Un) (ADJ~DI altro) (NOU~CS miliardo))
    (VP (VMA~FU servirà)
        (PP (PREP a)
            (S
                (VP (VMA~IN innalzare)
                    (NP
                        (NP (ART~DE l') (NOU~CA indennità))
                        (PP (PREP di)
                            (NP (NOU~CS disoccupazione))))
                      (PP (PREP dall')
                          (NP
                              (NP (ART~DE dall') (ADJ~QU attuale) (NUMR 50)
                                  (PP (PREP per)
                                      (NP (NUMR cento))))
                                (PP (PREP dell')
                                    (NP (ART~DE dell') (ADJ~OR ultima) (NOU~CS retribuzione)))))
                           (PP (PREP al)))
                        (NP-SBJ (-NONE- *)))))
               (. .)) )


************** FRASE NEWS-621 **************

 ( (S
    (NP-SBJ-133 (ART~DE Il)
        (S
            (VP (VMA~PE restante))
            (NP-SBJ (-NONE- *))))
      (PRN
          (PUNCT -)
          (PP-LOC (PREP nel)
              (NP
                  (NP (ART~DE nel) (NOU~CS piano))
                  (PP (PREP del)
                      (NP (ART~DE del) (NOU~CS governo)))))
             (PUNCT -))
          (VP (VMO~FU dovrà)
              (S
                  (VP (VMA~IN servire)
                      (PP (PREP a)
                          (S
                              (VP (VMA~IN incentivare)
                                  (PRN
                                      (-LRB- -LRB-)
                                      (PP (ADVB probabilmente) (PREP con)
                                          (NP (ART~DE la) (NOU~CS leva) (ADJ~QU fiscale)))
                                       (-RRB- -RRB-))
                                    (NP
                                        (NP (ART~DE la) (NOU~CS contrattazione))
                                        (PP (PREP di)
                                            (NP
                                                (NP (ADJ~OR secondo) (NOU~CS livello))
                                                (PRN
                                                    (-LRB- -LRB-)
                                                    (ADJP
                                                        (ADJP (ADJ~QU aziendale))
                                                        (CONJ o)
                                                        (ADJP (ADJ~QU territoriale)))
                                                     (-RRB- -RRB-))))
                                            (, ,)
                                            (VP (VMA~PA legata)
                                                (NP (-NONE- *))
                                                (PP (PREP alla)
                                                    (NP (ART~DE alla) (NOU~CA produttività))))))
                                        (NP-SBJ (-NONE- *)))))
                               (NP-SBJ (-NONE- *-133))))
                         (. .)) )


************** FRASE NEWS-622 **************

 ( (S
    (NP-SBJ-133 (ART~DE L') (NOU~CS approccio) (ADJ~QU soft))
    (VP (VMO~CO dovrebbe)
        (S
            (VP (VMA~IN portare)
                (PP (ADVB anche) (PREP a)
                    (S
                        (VP (VMA~IN sostituire)
                            (NP (ART~DE lo)
                                (NP (NOU~CS scalone))
                                (SBAR
                                    (NP-1333 (PRO~RE che))
                                    (S
                                        (NP-SBJ (-NONE- *-1333))
                                        (PP (PREP dal)
                                            (NP
                                                (NP (ART~DE dal) (ADJ~OR primo) (NOU~CS gennaio))
                                                (PP (PREP del)
                                                    (NP (ART~DE del) (NUMR 2008)))))
                                           (VP (VMA~RE innalza)
                                               (NP
                                                   (NP (ART~DE l') (NOU~CA età) (ADJ~QU minima))
                                                   (PP (PREP per)
                                                       (NP
                                                           (NP (ART~DE la) (NOU~CS pensione))
                                                           (PP (PREP di)
                                                               (NP (NOU~CS anzianità))))))
                                                   (PP (PREP dagli)
                                                       (NP (ART~DE dagli) (ADJ~QU attuali)
                                                           (NP (NUMR 57)) (NOU~CP anni)))
                                                     (PP (PREP a)
                                                         (NP (NUMR 60))))))))
                                       (NP-SBJ (-NONE- *)))))
                              (NP-SBJ (-NONE- *-133))))
                        (. .)) )


************** FRASE NEWS-623 **************

 ( (S
    (VP (VMA~FU Arriveranno)
        (NP-EXTPSBJ-233 (ADJ~IN alcuni)
            (NP (NOU~CP scalini))
            (SBAR
                (NP-4333 (PRO~RE che))
                (S
                    (NP-SBJ (-NONE- *-4333))
                    (ADVP (ADVB progressivamente))
                    (PRN
                        (-LRB- -LRB-)
                        (PP (PREP da) (NUMR 58)
                            (NP
                                (PP (PREP in) (ADVB su))))
                          (-RRB- -RRB-))
                       (VP (VMA~FU alzeranno)
                           (NP (ART~DE l') (NOU~CA età))
                           (PP
                               (PP
                                   (CONJ o) (PREP di)
                                   (NP (ART~IN un) (NOU~CS anno)))
                                (, ,)
                                (CONJ oppure)
                                (PP (PREP di)
                                    (NP (ART~IN un) (NOU~CS anno)))))))))
               (NP-SBJ (-NONE- *-233))
               (. .)) )


************** FRASE NEWS-624 **************

 ( (S
    (VP (VMA~RE Tende)
        (PP (PREP a)
            (S
                (VP (VMA~IN stemperarsi)
                    (NP (PRO~RI stemperarsi))
                    (, ,)
                    (ADVP (ADVB infine)))
                 (NP-SBJ (-NONE- *-733))))
           (, ,)
           (NP-EXTPSBJ-733
               (NP (ART~DE lo) (NOU~CS scontro))
               (PP (PREP sui)
                   (NP
                       (NP (ART~DE sui) (NOU~CP coefficienti))
                       (PP (PREP di)
                           (NP (NOU~CS trasformazione)))))))
            (NP-SBJ (-NONE- *-733))
            (: :)) )


************** FRASE NEWS-625 **************

 ( (S
    (S
        (PP-TMP (PREP fino)
            (PP (PREP al)
                (NP (ART~DE al) (NUMR 2015))))
          (ADVP (ADVB non))
          (VP (VMA~FU avranno)
              (NP (NOU~CP effetti)))
           (NP-SBJ (-NONE- *)))
        (CONJ e)
        (S
            (NP (PRO~RI si))
            (VP (VMA~RE rafforza)
                (NP-EXTPSBJ-1033
                    (NP (ART~DE la) (NOU~CA tesi))
                    (PP (PREP di)
                        (NP-1333
                            (NP (PRO~RE chi))
                            (SBAR
                                (S
                                    (VP (VMA~RE propone)
                                        (PP (PREP di)
                                            (S
                                                (VP (VMA~IN congelare)
                                                    (PP (PREP per) (ADVB |UN_PO'|))
                                                    (NP (ART~DE l') (NOU~CS argomento)))
                                                 (NP-SBJ (-NONE- *)))))
                                        (NP-SBJ (-NONE- *-1333))))))))
                      (NP-SBJ (-NONE- *-1033)))
                   (. .)) )


************** FRASE NEWS-626 **************

 ( (S
    (NP-SBJ (ART~DE Il) (NOU~CS conservatore) (NOU~PR Sarkozy))
    (VP (VMA~RE riparte)
        (PP-TMP (PREP da)
            (NP (ADJ~DE questa) (NOU~CS sera)))
         (PP-LOC (PREP da)
             (NP (NOU~PR Digione)))
          (, ,)
          (NP
              (NP (NOU~CS comizio))
              (PP-TMP (PREP alle)
                  (NP (ART~DE alle) (NUMR 18.30)))))
         (. .)) )


************** FRASE NEWS-627 **************

 ( (S
    (NP-SBJ (ART~DE La) (ADJ~QU socialista) (NOU~PR Royal)
        (PRN
            (, ,)
            (NP
                (NP (ART~DE la) (ADJ~OR prima) (NOU~CS donna))
                (PP (PREP a)
                    (S
                        (VP (VMA~IN raggiungere)
                            (NP (ART~IN un) (NOU~CS ballottaggio))
                            (PP-LOC (PREP in)
                                (NP (NOU~PR Francia))))
                          (NP-SBJ (-NONE- *-733)))))
                 (, ,)))
           (VP (VMA~FU sarà)
               (ADVP (ADVB invece))
               (PP-LOC (PREP a)
                   (NP (NOU~PR Valence))))
             (. .)) )


************** FRASE NEWS-628 **************

 ( (S
    (CONJ E)
    (ADVP-TMP (ADVB già))
    (NP (PRO~RI si))
    (VP (VMA~RE annuncia)
        (NP (ADVB almeno) (ART~IN un)
            (NP (NOU~CA FACCIA_A_FACCIA) (ADJ~QU televisivo)))
         (, ,)
         (PP-LOC (PREP su)
             (NP (NOU~PR Tf1))))
       (. .)) )


************** FRASE NEWS-629 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE I) (NOU~CP risultati) (ADJ~QU definitivi))
        (PP (PREP del)
            (NP (ART~DE del) (ADJ~OR primo) (NOU~CS turno))))
      (VP (VMA~RE danno)
          (PP (PREP a)
              (NP (NOU~PR Sarkozy)))
           (NP (ART~IN un) (NOU~CS punteggio) (ADJ~QU eccellente))
           (PP (PREP con)
               (NP (ART~DE il) (NUMR 31,11) (SPECIAL %)
                   (PP (PREP dei)
                       (NP (ART~DE dei) (NOU~CP voti))))))
           (. .)) )


************** FRASE NEWS-630 **************

 ( (S
    (VP (VMA~RE Manca)
        (ADVP-TMP (ADVB ancora))
        (NP-EXTPSBJ-333
            (NP (ART~DE il) (ADVB quasi) (NOU~CS milione))
            (PP (PREP di)
                (NP
                    (NP (NOU~CP schede))
                    (PP (PREP degli)
                        (NP
                            (NP (ART~DE degli) (NOU~CP elettori))
                            (PP-LOC (PREP all')
                                (NP (ART~DE all') (NOU~CS estero)))))))))
           (NP-SBJ (-NONE- *-333))
           (. .)) )


************** FRASE NEWS-631 **************

 ( (S
    (ADJP-PRD (ADJ~QU Cruciale))
    (VP (VMA~RE è)
        (NP-EXTPSBJ-333 (ART~DE il)
            (NP (NUMR 18,55) (SPECIAL %))
            (VP (VMA~PA raccolto)
                (NP (-NONE- *))
                (PP-LGS (PREP dal)
                    (NP
                        (NP (ART~DE dal) (NOU~CS candidato) (ADJ~QU centrista))
                        (PP (PREP dell')
                            (NP (ART~DE dell') (NOU~PR Udf)))
                         (, ,)
                         (NP (NOU~PR Francois) (NOU~PR Bayrou)))))))
          (NP-SBJ (-NONE- *-333))
          (. .)) )


************** FRASE NEWS-632 **************

 ( (S
    (NP-SBJ
        (ADJP-PRD (ADJ~QU Deluso))
        (PRN
            (PUNCT -)
            (S
                (VP (VMA~IM sognava)
                    (NP
                        (NP (ART~IN una) (NOU~CS volata))
                        (PP (PREP al)
                            (NP (ART~DE al) (NOU~CS ballottaggio)))))
                   (NP-SBJ (-NONE- *-933)))
                (PUNCT -)) (NOU~PR Bayrou))
          (VP
              (NP (PRO~RI si))
              (VP (VAU~RE è)
                  (ADVP (ADVB comunque))) (VMA~PA congratulato)
               (PP (PREP con)
                   (NP-1533 (ART~DE gli) (NOU~CP elettori)))
                (PP (PREP per)
                    (S
                        (VP (VAU~IN aver)
                            (VP (VMA~PA fatto)
                                (S
                                    (VP (VMA~IN nascere)
                                        (NP-2233
                                            (" ") (ART~IN un) (ADJ~QU grande) (NOU~CS centro)
                                            (" "))
                                         (PP-LOC (PREP in)
                                             (NP (NOU~PR Francia))))
                                       (NP-SBJ (-NONE- *-2233)))))
                              (NP-SBJ (-NONE- *-1533)))))
                     (. .)) )


************** FRASE NEWS-633 **************

 ( (S
    (VP (VMO~CO Potrebbero)
        (ADVP (ADVB però))
        (S
            (VP (VMA~IN essere)
                (NP-PRD
                    (NP (NOU~CP voti))
                    (VP (VMA~PA legati)
                        (NP (-NONE- *))
                        (ADVP (ADVB PIÙ_CHE_ALTRO))
                        (PP (PREP alla)
                            (NP (ART~DE alla) (ADJ~PO sua) (NOU~CA personalità) (ADJ~QU rassicurante))))))
                (NP-SBJ (-NONE- *-1.1033))))
          (NP-SBJ-1.1033 (-NONE- *))
          (. .)) )


************** FRASE NEWS-634 **************

 ( (S
    (PP (PREP Secondo)
        (NP (ART~IN un') (NOU~CA analisi) (NOU~PR Ipsos)))
     (, ,)
     (NP-SBJ (ART~DE i) (ADJ~PO suoi) (NOU~CP elettori))
     (PP-TMP (PREP nel)
         (NP (ART~DE nel) (NUMR 2002)))
      (VP (VAU~IM avevano)
          (VP (VMA~PA votato)
              (NP
                  (NP (NOU~CS socialista))
                  (, ,)
                  (NP
                      (NP (NOU~CP verdi))
                      (CONJ o)
                      (NP (ADJ~QU estrema) (NOU~CS sinistra))))))
          (ADVP (ADVB IN_GRAN_PARTE))
          (. .)) )


************** FRASE NEWS-635 **************

 ( (S
    (NP-SBJ-133 (PRO~PE Lui)
        (, ,)
        (NP (ART~DE il) (NOU~CS centrista)))
     (, ,)
     (VP
         (ADVP-TMP (ADVB PER_ORA))
         (NP (PRO~RI si))
         (VP (VAU~RE è)
             (ADVP (ADVB ben))) (VMA~PA guardato)
          (PP (PREP dal)
              (NP (ART~DE dal)
                  (S
                      (VP (VMA~IN dare)
                          (NP (-NONE- *))
                          (NP
                              (NP (NOU~CP indicazioni))
                              (PP (PREP di)
                                  (NP (NOU~CS voto)))))
                         (NP-SBJ (-NONE- *-133))))))
             (. .)) )


************** FRASE NEWS-636 **************

 ( (S
    (NP-SBJ (ART~DE Il) (ADJ~PO suo) (NOU~CS partito) (NOU~PR Udf))
    (VP (VAU~RE è)
        (NP-PRD (ADVB però)
            (NP (NOU~CS alleato) (ADJ~QU tradizionale))
            (PP (PREP dell')
                (NP
                    (NP (ART~DE dell') (NOU~PR Ump))
                    (PP (PREP di)
                        (NP (NOU~PR Sarkozy)))))))
         (. .)) )


************** FRASE NEWS-637 **************

 ( (S
    (NP-SBJ-133 (ART~DE Il) (NOU~CS presidente)
        (NP (NOU~PR Jacques) (NOU~PR Chirac)))
     (VP (VAU~RE ha)
         (VP (VMA~PA ricevuto)
             (NP-TMP (ADJ~DE questa) (NOU~CS mattina))
             (PP-LOC (PREP all')
                 (NP (ART~DE all') (NOU~PR Eliseo)))
              (NP
                  (NP (ART~DE il) (NOU~CS candidato))
                  (PP (PREP dell')
                      (NP (ART~DE dell') (NOU~PR Ump)))
                   (NP (NOU~PR Nicolas) (NOU~PR Sarkozy))
                   (, ,)
                   (SBAR
                       (S
                           (PP (PREP con)
                               (NP (ART~DE il) (PRO~RE quale)))
                            (NP (PRO~RI si))
                            (VP (VAU~RE è)
                                (VP (VMA~PA congratulato)
                                    (PP
                                        (" ") (PREP per)
                                        (NP
                                            (NP (ART~DE il) (NOU~CS risultato))
                                            (PP (PREP del)
                                                (NP
                                                    (NP (ART~DE del) (ADJ~OR primo) (NOU~CS turno))
                                                    (PP (-NONE- *-3533)))))
                                           (" "))
                                        (PP-3533 (PREP delle)
                                            (NP (ART~DE delle) (ADJ~QU presidenziali)))))
                                   (ADVP (ADVB calorosamente))
                                   (NP-SBJ (-NONE- *-133)))))))
                    (. .)) )


************** FRASE NEWS-638 **************

 ( (S
    (NP (PRO~PE Lo))
    (VP (VAU~RE hanno)
        (VP (VMA~PA riferito)
            (NP (-NONE- *))
            (NP-EXTPSBJ-433
                (NP (ART~DE i) (NOU~CP collaboratori))
                (PP (PREP del)
                    (NP
                        (NP (ART~DE del) (NOU~CS capo))
                        (PP (PREP dello)
                            (NP (ART~DE dello) (NOU~CS Stato))))))))
          (NP-SBJ (-NONE- *-433))
          (. .)) )


************** FRASE NEWS-639 **************

 ( (S
    (NP-133 (NOU~PR Chirac)
        (PRN
            (, ,)
            (SBAR
                (NP-3333 (PRO~RE che))
                (S
                    (NP-SBJ (-NONE- *-3333))
                    (VP
                        (ADVP-TMP (ADVB ieri)
                            (NP-TMP (NOU~CS sera)))
                         (VP (VAU~IM aveva)
                             (ADVP-TMP (ADVB già))) (VMA~PA telefonato)
                          (PP (PREP a)
                              (NP (NOU~PR Sarkozy)))
                           (PP (PREP per)
                               (S
                                   (VP (VMA~IN complimentarsi)
                                       (NP (PRO~RI complimentarsi)))
                                    (NP-SBJ (-NONE- *-133)))))))
                     (, ,)))
               (S
                   (S
                       (NP (PRO~PE lo))
                       (VP (VAU~RE ha)
                           (VP (VMA~PA incoraggiato)))
                        (NP-SBJ (-NONE- *-133)))
                     (CONJ e)
                     (S
                         (NP (PRO~PE gli))
                         (VP (VAU~RE ha)
                             (VP (VMA~PA confermato)
                                 (NP
                                     (NP (ART~DE il) (ADJ~PO suo) (NOU~CS sostegno))
                                     (PP (PREP al)
                                         (NP (ART~DE al) (ADJ~OR secondo) (NOU~CS turno))))))
                             (NP-SBJ (-NONE- *-133))))
                       (, ,)
                       (VP (VAU~RE hanno)
                           (VP (VMA~PA aggiunto)
                               (NP-EXTPSBJ-3233 (ART~DE le) (ADJ~DI stesse) (NOU~CP fonti))))
                         (NP-SBJ (-NONE- *-3233))
                         (. .)) )


************** FRASE NEWS-640 **************

 ( (S
    (NP-SBJ-133 (NOU~PR Nicolas)
        (NP (NOU~PR Sarkozy) (S+REDUC
                (VP (-NONE- *-1433)))))
       (VP (VAU~RE ha)
           (VP (VMA~PA ottenuto)
               (NP (ART~DE il) (NUMR 31,11) (SPECIAL %)
                   (PP (PREP dei)
                       (NP (ART~DE dei) (NOU~CP voti))))
                 (PP (PREP al)
                     (NP (ART~DE al) (ADJ~OR primo) (NOU~CS turno)))
                  (, ,)
                  (S
                      (VP-1433 (VMA~PA seguito)
                          (PP-LGS (PREP dalla)
                              (NP (ART~DE dalla) (NOU~PR Segolene)
                                  (NP (ADJ~QU socialista) (NOU~PR Royal))
                                  (SBAR
                                      (NP-1333 (PRO~RE che))
                                      (S
                                          (NP-SBJ (-NONE- *-1333))
                                          (VP (VAU~RE ha)
                                              (VP (VMA~PA preso)
                                                  (NP (ART~DE il) (NUMR 25,84) (SPECIAL %)))))))))
                             (NP-SBJ (-NONE- *-133)))))
                    (. .)) )


************** FRASE NEWS-641 **************

 ( (S
    (VP (VMA~RE è)
        (PP-PRD (PREP di)
            (NP
                (NP (ADVB almeno) (NUMR 30) (NOU~CP morti))
                (CONJ e)
                (NP (NUMR 59) (NOU~CP feriti))))
          (NP-EXTPSBJ-933
              (NP (ART~DE l') (ADJ~OR ultimo) (NOU~CS bilancio))
              (PP (PREP delle)
                  (NP
                      (NP (ART~DE delle) (NOU~CP vittime))
                      (PP (PREP dei)
                          (NP (ART~DE dei)
                              (NP (NUMR quattro))
                              (NP (NOU~CP attentati) (ADJ~QU suicidi))
                              (VP (VMA~PA compiuti)
                                  (NP (-NONE- *))
                                  (ADVP-TMP (ADVB oggi))
                                  (PP-LOC (PREP nelle)
                                      (NP
                                          (NP (ART~DE nelle) (NOU~CA città))
                                          (PP (PREP di)
                                              (NP (NOU~PR Baghdad)
                                                  (, ,)
                                                  (NP (NOU~PR Baquba)
                                                      (CONJ e) (NOU~PR Mosul)))))))))))
                        (, ,)
                        (VP (VMA~PA riferito)
                            (NP (-NONE- *))
                            (NP (-NONE- *))
                            (PP-LGS (PREP dalle)
                                (NP (ART~DE dalle) (NOU~CA autorità) (ADJ~QU irachene))))))
                    (NP-SBJ (-NONE- *-933))
                    (. .)) )


************** FRASE NEWS-642 **************

 ( (S
    (NP-SBJ-133 (ART~IN Un) (ADJ~DI altro) (NOU~CA kamikaze))
    (VP (VAU~RE ha)
        (VP (VMA~PA preso)
            (PP (PREP di)
                (NP (NOU~CS mira)))
             (NP
                 (NP (ART~IN una) (NOU~CS stazione))
                 (PP (PREP di)
                     (NP (NOU~CS polizia))))
               (PP-LOC (PREP a)
                   (NP (NOU~PR Baquba)
                       (PRN
                           (, ,)
                           (NP (NUMR 60)
                               (NP (NOU~CP chilometri)))
                            (PP-LOC (PREP a)
                                (NP
                                    (NP (NOU~CA nord-est))
                                    (PP (PREP di)
                                        (NP (NOU~PR Baghdad)))))
                               (, ,))))
                      (S
                          (S
                              (VP (VMA~GE uccidendo)
                                  (NP (NUMR 10) (NOU~CP persone)))
                               (NP-SBJ-22.1033 (-NONE- *-133)))
                            (CONJ e)
                            (S
                                (VP (VMA~GE ferendone)
                                    (NP-26.133 (PRO~PE ferendone))
                                    (NP (ADJ~DI altre) (NUMR 23) (-NONE- *-26.133)))
                                 (NP-SBJ (-NONE- *-22.1033))))))
                     (. .)) )


************** FRASE NEWS-643 **************

 ( (S
    (NP-SBJ-133 (ART~DE Il) (ADJ~OR terzo) (NOU~CS attentatore))
    (NP-433 (PRO~RI si))
    (VP (VAU~RE è)
        (VP (VMA~PA fatto)
            (S
                (VP (VMA~IN saltare)
                    (PP-LOC (PREP in)
                        (NP
                            (NP (ART~IN un) (NOU~CS ristorante))
                            (PP-LOC (PREP nel)
                                (NP
                                    (NP (ART~DE nel) (NOU~CS centro))
                                    (PP (PREP di)
                                        (NP (NOU~PR Baghdad)))))))
                         (, ,)
                         (PP-LOC (PREP a)
                             (NP (NOU~PR Karradah)))
                          (, ,)
                          (S
                              (S
                                  (VP (VMA~GE uccidendo)
                                      (NP (ADVB almeno) (NUMR sette) (NOU~CP persone)))
                                   (NP-SBJ-19.1033 (-NONE- *-133)))
                                (CONJ e)
                                (S
                                    (VP (VMA~GE ferendone)
                                        (NP-24.133 (PRO~PE ferendone))
                                        (NP (ADJ~DI altre) (NUMR 16) (-NONE- *-24.133)))
                                     (NP-SBJ (-NONE- *-19.1033)))))
                            (NP-SBJ (-NONE- *-433)))))
                   (. .)) )


************** FRASE NEWS-644 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~CS attacco))
    (VP (VAU~RE è)
        (VP (VMA~PA avvenuto)
            (PP (PREP attorno)
                (PP (PREP alle)
                    (NP-TMP (ART~DE alle) (NUMR 11) (NOU~CS ora) (ADJ~QU locale))))
              (, ,)
              (PP-LOC (PREP A_MENO_DI)
                  (NP (NUMR 100) (NOU~CP metri)))
               (PP-LOC (PREP dalla)
                   (NP (ART~DE dalla) (NOU~CS Zona) (ADJ~QU verde)
                       (, ,)
                       (NP
                           (NP (ART~DE l') (NOU~CS area))
                           (VP (VMA~PA blindata)
                               (NP (-NONE- *)))
                            (PP (PREP della)
                                (NP (ART~DE della)
                                    (NP (NOU~CS capitale))
                                    (SBAR
                                        (S
                                            (NP-LOC (PRO~LO dove))
                                            (NP (PRO~RI si))
                                            (VP (VMA~RE trovano)
                                                (NP-EXTPSBJ-2933 (-NONE- *-)
                                                    (NP-2933 (ART~DE gli) (NOU~CP uffici) (-NONE- *-) (ADJ~QU governativi))
                                                    (CONJ e)
                                                    (NP (ART~DE l') (NOU~CS ambasciata))))
                                              (NP-SBJ (-NONE- *-2933)))))))))))
                   (. .)) )


************** FRASE NEWS-645 **************

 ( (NP (ART~IN Una)
    (NP
        (NP (ADJ~OR seconda) (NOU~CS esplosione))
        (PP-LOC (PREP a)
            (NP
                (NP (ADJ~IN pochi) (NOU~CP metri))
                (PP-LOC (PREP dall')
                    (NP
                        (NP (ART~DE dall') (NOU~CS ambasciata))
                        (PP (PREP d')
                            (NP (NOU~PR Iran))))))))
          (: :)) )


************** FRASE NEWS-646 **************

 ( (S
    (NP-SBJ (ART~DE la)
        (NP (NOU~CS vettura))
        (VP (VMA~PA imbottita)
            (NP (-NONE- *))
            (PP (PREP di)
                (NP (NOU~CS esplosivo)))))
       (VP (VAU~IM era)
           (VP (VAU~PA stata)
               (VP (VMA~PA piazzata))))
         (PP-LOC (PREP in)
             (NP (ART~IN un)
                 (NP (NOU~CS parcheggio))
                 (VP (VMA~PA situato)
                     (NP (-NONE- *))
                     (PP-LOC (PREP DI_FRONTE_A)
                         (NP (ART~DE alla) (NOU~CS rappresentanza) (ADJ~QU diplomatica)))
                      (, ,)
                      (PP-LOC (PREP sul)
                          (NP
                              (NP (ART~DE sul) (NOU~CS lato) (ADJ~QU opposto))
                              (PP (PREP della)
                                  (NP (ART~DE della) (ADJ~DI stessa) (NOU~CS strada))))))))
                (. .)) )


************** FRASE NEWS-647 **************

 ( (S
    (S
        (NP-SBJ (ART~DE Il) (NOU~CS bilancio))
        (VP (VMA~RE è)
            (PP-PRD (PREP di)
                (NP
                    (NP (ADVB almeno) (ART~IN un) (NOU~CS morto))
                    (CONJ e)
                    (NP (NUMR quattro) (NOU~CP feriti))))))
        (, ,)
        (S
            (NP-SBJ (ADJ~IN nessun) (NOU~CS danno))
            (VP (VAU~RE è)
                (VP (VAU~PA stato)
                    (VP (VMA~PA inferto))))
              (PP (PREP alla)
                  (NP (ART~DE alla) (NOU~CS legazione) (ADJ~QU iraniana))))
            (. .)) )


************** FRASE NEWS-648 **************

 ( (S
    (NP-LOC (PRO~LO Ci))
    (VP (VAU~RE ha)
        (VP (VMA~PA messo)
            (NP (NOU~CS rabbia))
            (PP-LOC (PREP nello)
                (NP (ART~DE nello)
                    (S
                        (VP (VMA~IN scaraventare)
                            (NP
                                (NP (ART~DE il) (NOU~CS pallone))
                                (PP (PREP dell')))
                             (PP (PREP con)
                                 (NP
                                     (NP (ART~DE il) (NOU~CS rischio))
                                     (PP (PREP di)
                                         (S
                                             (VP (VMA~IN mandare)
                                                 (PP-LOC (PREP oltre)
                                                     (NP
                                                         (NP (ART~DE la) (NOU~CS linea))
                                                         (PP (PREP di)
                                                             (NP (NOU~CS porta)))))
                                                    (NP
                                                        (NP (ADVB pure) (ART~DE la) (NOU~CS caviglia))
                                                        (PP (PREP di)
                                                            (NP-2733 (NOU~PR Ibrahimovic)
                                                                (, ,)
                                                                (SBAR
                                                                    (NP-2333 (PRO~RE che))
                                                                    (S
                                                                        (NP-SBJ (-NONE- *-2333))
                                                                        (VP (VAU~IM aveva)
                                                                            (VP (VMA~PA allungato)
                                                                                (NP (ART~DE la) (NOU~CS gamba))
                                                                                (S
                                                                                    (VP (VMA~GE cercando)
                                                                                        (NP (ART~DE la) (NOU~CS deviazione) (ADJ~QU decisiva)))
                                                                                     (NP-SBJ (-NONE- *-2733)))))))))))
                                                          (NP-SBJ (-NONE- *-6.1033)))))))
                                           (NP-SBJ-6.1033 (-NONE- *-3.1033)))))))
                            (NP-SBJ-3.1033 (-NONE- *))
                            (. .)) )


************** FRASE NEWS-649 **************

 ( (S
    (NP-LOC (PRO~LO Ci))
    (VP (VAU~RE ha)
        (VP (VMA~PA messo)
            (NP (NOU~CS freddezza))
            (PP-LOC (PREP nel)
                (NP (ART~DE nel)
                    (S
                        (VP (VMA~IN realizzare)
                            (NP
                                (NP (ART~DE il) (NOU~CS rigore))
                                (PP (PREP del)))
                             (, ,)
                             (S
                                 (VP (VMA~GE tirandolo)
                                     (NP (PRO~PE tirandolo))
                                     (PP-LOC
                                         (PP (PREP sulla)
                                             (NP
                                                 (NP (ART~DE sulla) (NOU~CS sinistra))
                                                 (PP (PREP del)
                                                     (NP (ART~DE del) (NOU~CS portiere) (NOU~PR Manninger)))))
                                            (, ,)
                                            (PP (ADVB poi) (PREP sulla)
                                                (NP (ART~DE sulla) (NOU~CS destra))))
                                          (, ,)
                                          (PP (PREP nella)
                                              (NP (ART~DE nella)
                                                  (NP (NOU~CS ripetizione))
                                                  (VP (VMA~PA imposta)
                                                      (NP (-NONE- *))
                                                      (NP (-NONE- *))
                                                      (CONJ perché)
                                                      (S
                                                          (NP-SBJ (ADJ~IN troppa) (NOU~CS gente))
                                                          (VP (VAU~IM era)
                                                              (VP (VMA~PA entrata)
                                                                  (PP-LOC (PREP in)
                                                                      (NP (NOU~CS area))))))))))
                                              (NP-SBJ (-NONE- *-6.1033))))
                                        (NP-SBJ-6.1033 (-NONE- *-3.1033)))))))
                         (NP-SBJ-3.1033 (-NONE- *))
                         (. .)) )


************** FRASE NEWS-650 **************

 ( (S
    (VP (VMA~IM Era)
        (NP-EXTPSBJ-233
            (NP (ART~DE il) (NOU~CS |QUARTO_D'ORA|))
            (PP (PREP del)
                (NP (ART~DE del)
                    (NP (ADJ~OR secondo) (NOU~CS tempo))
                    (VP (VMA~PA iniziato)
                        (NP (-NONE- *))
                        (PP-TMP (PREP in)
                            (NP (NOU~CS anticipo)))
                         (, ,)
                         (CONJ quasi)
                         (S
                             (NP-LOC (PRO~LO ci))
                             (VP (VMA~IM fosse)
                                 (NP-EXTPSBJ-1633
                                     (NP (ART~DE la) (NOU~CS fretta))
                                     (PP
                                         (PP (PREP di)
                                             (S
                                                 (VP (VMA~IN chiudere)
                                                     (NP (ART~DE la) (NOU~CS pratica)))
                                                  (NP-SBJ (-NONE- *))))
                                            (CONJ e)
                                            (CONJ che)
                                            (S
                                                (ADVP (ADVB non))
                                                (NP (PRO~PE ci))
                                                (NP (PRO~RI si))
                                                (VP (VMA~IM pensasse)
                                                    (ADVP-TMP (ADVB più)))))))
                                     (NP-SBJ (-NONE- *-1633))))))))
                   (NP-SBJ (-NONE- *-233))
                   (. .)) )


************** FRASE NEWS-651 **************

 ( (S
    (NP-SBJ (NOU~PR Materazzi))
    (ADVP (ADVB non))
    (VP (VMA~FU vincerà)
        (ADVP-TMP (ADVB mai))
        (NP (ART~DE il) (NOU~PR |PALLONE_D'_ORO|)))
     (: :)) )


************** FRASE NEWS-652 **************

 ( (S
    (NP-SBJ (PRO~ID Ciascuno))
    (NP (PRO~PE ne))
    (VP (VMA~CG tragga)
        (NP
            (NP (ART~DE il) (NOU~CS significato))
            (SBAR
                (S
                    (NP (PRO~RE che))
                    (VP (VMA~RE crede))
                    (NP-SBJ (-NONE- *-7333)))
                 (NP-7333 (-NONE- *)))
              (PP
                  (PP (PREP sullo)
                      (NP
                          (NP (ART~DE sullo) (NOU~CS stato))
                          (PP (PREP del)
                              (NP (ART~DE del) (NOU~CS pallone))))))))
            (. .)) )


************** FRASE NEWS-653 **************

 ( (S
    (ADVP (ADVB Non))
    (NP (PRO~RI si))
    (VP (VAU~RE è)
        (VP (VMA~PA vista)
            (NP (ART~IN una) (ADJ~QU bella) (NOU~CS partita))))
      (. .)) )


************** FRASE NEWS-654 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE Gli) (NOU~CP appuntamenti))
        (PP (PREP con)
            (NP (ART~DE lo) (NOU~CS scudetto))))
      (ADVP (ADVB non))
      (NP-PRD (PRO~PE lo))
      (VP (VMA~RE sono)
          (ADVP-TMP (ADVB mai)))
       (. .)) )


************** FRASE NEWS-655 **************

 ( (S
    (S
        (NP-SBJ-133 (ART~DE L') (NOU~PR Inter))
        (NP (PRO~RI si))
        (VP (VMA~IM portava)
            (ADVP-LOC (ADVB dentro))
            (NP
                (NP (ART~DE la) (NOU~CS delusione))
                (PP (PREP di)
                    (S
                        (ADVP (ADVB non))
                        (VP (VAU~IN aver)
                            (VP (VMA~PA chiuso)
                                (NP (ART~DE il) (NOU~CS campionato))
                                (PP-LOC (PREP sul)
                                    (NP (ART~DE sul)
                                        (NP (NOU~CS palcoscenico))
                                        (ADJP (ADVB più) (ADJ~QU ambito))))
                                  (PRN
                                      (, ,)
                                      (PP-LOC (PREP a)
                                          (NP (NOU~PR San) (NOU~PR Siro)))
                                       (, ,))))
                              (NP-SBJ (-NONE- *-133)))))))
               (CONJ ed)
               (S
                   (VP (VAU~RE è)
                       (VP (VMA~PA scesa)
                           (PP-LOC (PREP in)
                               (NP (NOU~CS provincia)))
                            (PP (PREP con)
                                (NP
                                    (NP (ART~DE la) (NOU~CA necessità))
                                    (PP (PREP di)
                                        (S
                                            (ADVP (ADVB non))
                                            (VP (VMA~IN iniziare)
                                                (PP (PREP ad)
                                                    (NP (NOU~CA handicap)))
                                                 (PP (PREP come)
                                                     (PP (PREP nelle)
                                                         (NP (ART~DE nelle) (ADJ~OR ultime)
                                                             (NP (NUMR due)) (NOU~CP partite)))))
                                                 (NP-SBJ (-NONE- *-25.1033))))))))
                               (NP-SBJ-25.1033 (-NONE- *-133)))
                            (. .)) )


************** FRASE NEWS-656 **************

 ( (S
    (NP-SBJ (ART~DE Il) (NOU~CS colombiano))
    (NP-333 (PRO~PE ne))
    (VP (VAU~RE ha)
        (VP (VMA~PA spizzicati)
            (NP
                (NP (PRO~ID tanti))
                (NP (-NONE- *-333))
                (PP (PREP di)
                    (NP (NOU~CP palloni))))))
        (. .)) )


************** FRASE NEWS-657 **************

 ( (S
    (PP-LOC (PREP Sul)
        (NP (ART~DE Sul) (PRO~OR primo)))
     (PRN
         (, ,)
         (PP-TMP (PREP al)
             (NP (ART~DE al) (NUMR 17')))
          (, ,))
       (NP-SBJ (NOU~PR Manninger))
       (NP-LOC (PRO~LO ci))
       (VP (VAU~RE ha)
           (VP (VMA~PA messo)
               (NP (ART~DE la) (NOU~CS pezza))))
         (. .)) )


************** FRASE NEWS-658 **************

 ( (S
    (CONJ Ma)
    (VP
        (VP (VAU~RE è)
            (VP (VMA~PA stato)
                (NP-PRD
                    (NP (ART~DE il) (NOU~CS segnale))
                    (PP (PREP della)
                        (NP
                            (NP (ART~DE della) (NOU~CS via))
                            (PP (PREP da)
                                (S
                                    (VP (VMA~IN percorrere)
                                        (NP (-NONE- *-733)))
                                     (NP-SBJ (-NONE- *)))))))))
                (CONJ e)
                (S
                    (S
                        (ADVP (ADVB infatti))
                        (, ,)
                        (NP-TMP (ART~IN un) (NOU~CS minuto) (ADVB dopo))
                        (, ,)
                        (PP-LOC (ADVB sempre) (PREP sul)
                            (NP
                                (NP (ART~DE sul) (NOU~CS |CALCIO_D'_ANGOLO|))
                                (PP (PREP di)
                                    (NP (NOU~PR Stankovic)))))
                           (, ,)
                           (NP-SBJ (NOU~PR Maicon))
                           (VP (VMA~IM toccava)
                               (PP (PREP di)
                                   (NP (NOU~CS coscia)))))
                          (, ,)
                          (S
                              (S
                                  (NP-SBJ (NOU~PR Vergassola))
                                  (PP-LOC (PREP vicino)
                                      (PP (PREP al)
                                          (NP (ART~DE al) (NOU~CS palo))))
                                    (VP (VMA~IM respingeva)
                                        (NP (-NONE- *))))
                                  (CONJ e)
                                  (S
                                      (NP-SBJ (NOU~PR Materazzi))
                                      (VP (VMA~IM completava)
                                          (NP (ART~DE l') (NOU~CS opera))
                                          (PP (PREP con)
                                              (NP (ART~IN un') (NOU~CS entrata) (ADJ~QU impetuosa))))))))
                            (NP-SBJ (-NONE- *))
                            (. .)) )


************** FRASE NEWS-659 **************

 ( (S
    (NP-SBJ (ART~DE L') (NOU~PR Inter))
    (PP (PREP delle)
        (NP (ART~DE delle)
            (NP (NUMR 17)) (NOU~CP vittorie) (ADJ~QU consecutive)))
      (NP-733 (PRO~PE ci))
      (VP (VAU~RE ha)
          (VP (VMA~PA abituato)
              (PP (PREP a)
                  (S
                      (VP (VMA~IN considerare)
                          (ADJP-PRD (ADJ~QU chiusa))
                          (NP (ART~DE la) (NOU~CS partita))
                          (PP-TMP (PREP dopo)
                              (NP (ART~DE il) (ADJ~OR primo) (NOU~CA gol))))
                        (NP-SBJ (-NONE- *-733))))))
            (. .)) )


************** FRASE NEWS-660 **************

 ( (S
    (CONJ Però)
    (S
        (NP-SBJ (PRO~DE questa))
        (VP (VMA~IM era)
            (NP-PRD-433 (ART~IN una)
                (NP (NOU~CS squadra))
                (VP (VMA~PA tarlata)
                    (NP (-NONE- *))
                    (PP-LGS (PREP dall')
                        (NP (ART~DE dall') (NOU~CS insicurezza)))))))
         (, ,)
         (S
             (NP (PRO~ID niente))
             (VP (-NONE- *)
                 (ADVP (ADVB A_CHE_VEDERE))
                 (PP (PREP con)
                     (NP
                         (NP (ART~DE la) (NOU~CS macchina) (ADJ~QU schiacciasassi))
                         (PP (PREP dei)
                             (NP (ART~DE dei) (NOU~CP mesi) (ADJ~DI scorsi))))))
                 (NP-SBJ (-NONE- *-433)))
              (. .)) )


************** FRASE NEWS-661 **************

 ( (S
    (CONJ Che)
    (S
        (NP-SBJ-233
            (NP (ART~DE il) (NOU~PR Siena))
            (PP (PREP in)
                (NP
                    (NP (NOU~CS lotta))
                    (PP (PREP per)
                        (S
                            (VP (VMA~IN salvarsi)
                                (NP (PRO~RI salvarsi)))
                             (NP-SBJ (-NONE- *-233))))))
                 (, ,)
                 (PP
                     (PP (ADVB perdipiù) (PREP con)
                         (NP (ART~DE la)
                             (NP (NOU~CS difesa))
                             (VP (VMA~PA rabberciata)
                                 (NP (-NONE- *)))))
                        (CONJ e)
                        (PP (PREP con)
                            (NP (NOU~PR Chiesa)
                                (VP (VMA~PA costretto)
                                    (NP (-NONE- *))
                                    (PP (PREP alla)
                                        (NP (ART~DE alla) (ADJ~OR terza) (NOU~CS partita) (ADJ~QU consecutiva)
                                            (PRN
                                                (, ,)
                                                (SBAR
                                                    (S
                                                        (NP (PRO~RE come))
                                                        (ADVP (ADVB non))
                                                        (VP (VMA~RE regge)
                                                            (ADVP-TMP (ADVB più)))
                                                         (NP-SBJ (-NONE- *-17.1033))))
                                                   (, ,)))))))))
                           (VP (VMA~IM tenesse)
                               (NP (ART~DE il) (NOU~CS campo))
                               (PP (PREP ALLA_PARI_DI)
                                   (NP (ART~DE della))
                                   (NP (NOU~CA capolista)))))
                          (VP (VMA~IM era)
                              (NP-PRD
                                  (NP (ART~DE l') (NOU~CS effetto))
                                  (PP (PREP del)
                                      (NP (ART~DE del) (NOU~CS male) (ADJ~QU oscuro) (ADJ~QU nerazzurro)))))
                             (. .)) )


************** FRASE NEWS-662 **************

 ( (S
    (VP (VAU~CO Sarebbe)
        (VP (VMA~PA stata)
            (ADVP (ADVB probabilmente))
            (NP-PRD (ART~IN un') (ADJ~DI altra) (NOU~CS storia))
            (CONJ se)
            (S
                (NP-SBJ (NOU~PR Negro))
                (VP (VAU~IM avesse)
                    (VP (VMA~PA raddoppiato)
                        (PP-TMP (PREP in)
                            (NP (NOU~CS avvio))
                            (PP (PREP di)
                                (NP (NOU~CS ripresa))))
                          (PP (PREP con)
                              (NP
                                  (NP (ART~IN un) (NOU~CS colpo))
                                  (PP (PREP di)
                                      (NP (NOU~CS tacco)))
                                   (PP-LOC (PREP nell')
                                       (NP (ART~DE nell')
                                           (NP (NOU~CS angolo) (ADJ~QU basso))
                                           (, ,)
                                           (SBAR
                                               (S
                                                   (NP-LOC (PRO~LO dove))
                                                   (NP-SBJ (NOU~PR Julio) (NOU~PR Cesar))
                                                   (VP (VMA~IM arrivava)
                                                       (ADVP (ADVB miracolosamente))
                                                       (PP (PREP col)
                                                           (NP (ART~DE col) (NOU~CS piede)))
                                                        (PP (PREP come)
                                                            (NP
                                                                (NP (ART~IN un) (NOU~CS portiere))
                                                                (PP (PREP da)
                                                                    (NP (NOU~CS calcetto)))))))))))))))))
                       (NP-SBJ (-NONE- *))
                       (. .)) )


************** FRASE NEWS-663 **************

 ( (S
    (NP-SBJ (ART~DE Il) (NOU~CS salvataggio))
    (VP (VMA~IM era)
        (NP-PRD
            (NP (ART~DE il) (NOU~CS segno))
            (PP (PREP di)
                (NP-733
                    (NP (PRO~RE come))
                    (SBAR
                        (NP-1333 (ART~DE il) (ADJ~QU buon) (NOU~CS Dio) (-NONE- *-))
                        (S
                            (NP-SBJ-833 (-NONE- *-1333))
                            (NP-TMP (ADJ~DE quest') (NOU~CS anno))
                            (VP (VMA~CG sia)
                                (NP-13.1033 (-NONE- *-733))
                                (ADJP-PRD (ADJ~QU nerazzurro))
                                (NP (-NONE- *-13.1033))
                                (, ,)
                                (S-PRD
                                    (ADVP (ADVB forse))
                                    (VP (VMA~PA istigato)
                                        (PP-LGS
                                            (PP (PREP da)
                                                (NP (NOU~PR Facchetti)))
                                             (CONJ e)
                                             (PP (PREP dall')
                                                 (NP (ART~DE dall') (NOU~CS avvocato) (NOU~PR Prisco)))))
                                        (NP-SBJ (-NONE- *-833))))))))))
                (: :)) )


************** FRASE NEWS-664 **************

 ( (S
    (CONJ quando)
    (S
        (NP-SBJ-233 (NOU~PR Gastaldello))
        (VP (VMA~IM sporcava)
            (NP (ART~DE la) (NOU~CS prestazione))
            (PP (PREP con)
                (NP
                    (NP (ART~IN un) (NOU~CS appoggio))
                    (ADJP
                        (ADJP (ADJ~QU inutile))
                        (CONJ e)
                        (ADJP (ADJ~QU sballato)))
                     (PP (PREP a)
                         (NP (NOU~PR Manninger)))))
                (S
                    (VP (VMA~GE costringendo)
                        (NP-1533 (ART~DE il) (NOU~CS portiere))
                        (PP (PREP ad)
                            (S
                                (VP (VMA~IN entrare)
                                    (PP (PREP da)
                                        (NP (NOU~CS rigore)))
                                     (PP (PREP su)
                                         (NP (NOU~PR Cruz)))
                                      (, ,)
                                      (PP-LOC
                                          (NP (ADJ~QU mezzo) (NOU~CS metro)) (PREP dentro)
                                          (NP (ART~DE l') (NOU~CS area))))
                                    (NP-SBJ (-NONE- *-1533)))))
                           (NP-SBJ (-NONE- *-233)))))
                  (, ,)
                  (NP-3033 (PRO~PE ne))
                  (VP (VMA~IM avevamo)
                      (NP (ART~DE la) (NOU~CS conferma)
                          (NP (-NONE- *-3033)) (ADJ~QU decisiva)))
                    (NP-SBJ (-NONE- *))
                    (. .)) )


************** FRASE NEWS-665 **************

 ( (NP (ART~IN Uno)
    (NP
        (NP (NOU~CS spazio))
        (VP (VMA~PA dedicato)
            (NP (-NONE- *))
            (PP (PREP per)
                (NP (ART~DE la) (ADJ~OR prima) (NOU~CS volta)))
             (PP (PREP ai)
                 (NP (ART~DE ai)
                     (NP (NOU~CP libri))
                     (ADJP
                         (ADJP (ADJ~QU antichi))
                         (CONJ e)
                         (ADJP (ADJ~QU rari)))))))
          (. .)) )


************** FRASE NEWS-666 **************

 ( (NP (ART~IN Un')
    (NP
        (NP (NOU~CS area))
        (PP (PREP per)
            (NP
                (NP (ART~DE lo) (NOU~CS sbarco))
                (PP-LOC (PREP a)
                    (NP (NOU~PR Librolandia)))
                 (PP (PREP di)
                     (" ")
                     (NP (NOU~PR Torino) (NOU~PR Comics))
                     (" ")))))
         (. .)) )


************** FRASE NEWS-667 **************

 ( (S
    (VP (VMA~RE Trabocca)
        (NP (NOU~CA novità))
        (NP-EXTPSBJ-333
            (NP (ART~DE la) (ADJ~OR 20°) (NOU~CS edizione))
            (PP (PREP della)
                (NP
                    (NP (ART~DE della) (NOU~CS Fiera))
                    (PP (PREP del)
                        (NP (ART~DE del) (NOU~CS Libro)))
                     (SBAR
                         (NP-1333 (PRO~RE che))
                         (S
                             (NP-SBJ (-NONE- *-1333))
                             (NP (PRO~RI s'))
                             (VP (VMA~FU aprirà)
                                 (PP-LOC (PREP al)
                                     (NP (ART~DE al) (NOU~PR Lingotto)))
                                  (PP-TMP (PREP dal)
                                      (NP (ART~DE dal) (NUMR 10))
                                      (PP (PREP al)
                                          (NP (ART~DE al) (NUMR 14) (NOU~CS maggio)))))))))))
               (NP-SBJ (-NONE- *-333))
               (. .)) )


************** FRASE NEWS-668 **************

 ( (S
    (VP (VMA~RE Debutta)
        (NP-TMP (ADJ~DE quest') (NOU~CS anno))
        (NP-EXTPSBJ-433 (ART~DE il)
            (" ") (NOU~CS padiglione)
            (NP (NUMR 4))
            (" ")
            (, ,)
            (NP
                (NP (NOU~CS tensostruttura))
                (VP (VMA~PA costruita)
                    (NP (-NONE- *))
                    (PP-LOC (PREP accanto)
                        (PP (PREP alla)
                            (NP (ART~DE alla) (NOU~CS Sala) (ADJ~QU Gialla))))))))
          (NP-SBJ (-NONE- *-433))
          (. .)) )


************** FRASE NEWS-669 **************

 ( (S
    (PP-LOC (PREP Nell')
        (NP (ART~DE Nell') (NUMR 1)))
     (NP (PRO~RI si))
     (VP (VMA~FU troveranno)
         (NP-EXTPSBJ-533 (-NONE- *-)
             (NP-533
                 (NP (ART~DE lo) (NOU~CA stand)) (-NONE- *-)
                 (PP (PREP del)
                     (NP (ART~DE del) (NOU~CS paese)
                         (NP (NOU~CS ospite))
                         (PRN
                             (, ,)
                             (NP (ART~DE la) (NOU~PR Lituania))
                             (, ,)))))
                 (CONJ e)
                 (NP
                     (PRN
                         (, ,)
                         (PP-LOC (PREP oltre)
                             (PP (PREP alla)
                                 (NP (ART~DE alla) (NOU~CS Sala) (ADJ~QU rossa))))
                           (, ,)) (ART~IN un')
                        (NP (ADJ~DI altra) (NOU~CA novità))
                        (VP (VMA~PA creata)
                            (NP (-NONE- *))
                            (PP-LOC (PREP in)
                                (NP
                                    (NP (NOU~CS occasione))
                                    (PP (PREP delle)
                                        (NP (ART~DE delle)
                                            (NP (NUMR venti)) (NOU~CP candeline)))))))))
                    (NP-SBJ (-NONE- *-533))
                    (: :)) )


************** FRASE NEWS-670 **************

 ( (NP
    (NP (ART~DE l')
        (" ") (NOU~PR Incubatore)
        (" "))
     (, ,)
     (CONJ ovvero)
     (NP (ART~IN uno)
         (NP (NOU~CS spazio))
         (VP (VMA~PA dedicato)
             (NP (-NONE- *))
             (PP (PREP al)
                 (NP
                     (NP (ART~DE al) (NOU~CS sostegno))
                     (PP (PREP degli)
                         (NP (ART~DE degli) (NOU~CP editori) (ADJ~QU giovanissimi)))))))
          (: :)) )


************** FRASE NEWS-671 **************

 ( (S
    (CONJ come)
    (S
        (VP (VAU~RE ha)
            (VP (VMA~PA spiegato)
                (NP-EXTPSBJ-433 (NOU~PR Maurizio) (NOU~PR Poma)
                    (PRN
                        (-LRB- -LRB-)
                        (NP (NOU~PR Biella) (NOU~PR Intraprendere))
                        (-RRB- -RRB-)))))
            (NP-SBJ (-NONE- *-433)))
         (, ,)
         (" ")
         (VP (VMA~RE sono)
             (NP-PRD
                 (NP (NOU~CP marchi))
                 (VP (VMA~PA nati)
                     (NP (-NONE- *))
                     (PP-TMP (PREP da)
                         (NP
                             (NP (PRO~ID meno))
                             (CONJ di)
                             (NP (NUMR 24) (NOU~CP mesi)))))
                    (, ,)
                    (SBAR
                        (NP-2333 (PRO~RE che) (-NONE- *-))
                        (S
                            (NP-SBJ-2133 (-NONE- *-2333))
                            (ADVP (ADVB non))
                            (VP (VAU~CO avrebbero)
                                (VP (VMO~PA potuto)
                                    (S
                                        (VP (VMA~IN essere)
                                            (ADJP-PRD (ADJ~QU presenti)
                                                (PP-LOC (PREP in)
                                                    (NP (NOU~PR Fiera)))))
                                           (NP-SBJ (-NONE- *-2133))))))))
                         (" "))
                      (NP-SBJ (-NONE- *))
                      (. .)) )


************** FRASE NEWS-672 **************

 ( (S
    (NP-SBJ (ADVB Anche) (ART~DE il)
        (NP (NOU~CS padiglione))
        (NP (NUMR 3)))
     (VP (VMA~RE accoglie)
         (NP
             (NP (ART~IN un') (NOU~CS iniziativa))
             (PP (PREP al)
                 (NP (ART~DE al) (NOU~CS debutto)))))
        (: :)) )


************** FRASE NEWS-673 **************

 ( (S
    (S
        (VP (VMA~RE È)
            (NP-PRD
                (NP
                    (" ") (NOU~PR Libri)
                    (" ")
                    (, ,)
                    (SBAR
                        (NP-8333 (PRO~RE che) (-NONE- *-))
                        (S
                            (NP-SBJ-833 (-NONE- *-8333))
                            (VP (VMA~RE nasce)
                                (ADVP (ADVB anche))
                                (PRN
                                    (, ,)
                                    (PP-TMP (PREP dopo)
                                        (NP
                                            (NP (NOU~CP anni))
                                            (PP (PREP di)
                                                (NP (NOU~CP lamentele)))))
                                       (, ,))
                                    (PP
                                        (" ") (PREP per)
                                        (S
                                            (VP (VMA~IN coinvolgere)
                                                (NP (ART~DE i) (NOU~CP librai)))
                                             (NP-SBJ (-NONE- *-833)))
                                          (" "))))))
                           (CONJ e)
                           (NP (NOU~CS cioccolato))))
                     (NP-SBJ (-NONE- *)))
                  (, ,)
                  (VP (VAU~RE ha)
                      (VP (VMA~PA chiarito)
                          (NP-EXTPSBJ-2633 (NOU~PR Picchioni))))
                    (NP-SBJ (-NONE- *-2633))
                    (. .)) )


************** FRASE NEWS-674 **************

 ( (S
    (NP-SBJ
        (NP (ART~DE I) (NOU~CP biglietti))
        (PP (PREP per)
            (NP (ADJ~DE questo) (NOU~CS evento)))
         (PRN
             (, ,)
             (ADJP (ADJ~QU gratuiti))
             (, ,)))
       (VP (VMA~FU saranno)
           (PP-PRD (PREP a)
               (NP (NOU~CS disposizione)))
            (PP-TMP (PREP dal)
                (NP (ART~DE dal) (NUMR 2) (NOU~CS maggio)))
             (PP-LOC (PREP ad)
                 (NP (NOU~PR Atrium))))
           (. .)) )


************** FRASE NEWS-675 **************

 ( (S
    (S
        (PP (PREP Per)
            (S
                (S
                    (VP (VMA~IN evitare)
                        (NP-833 (ART~DE le) (NOU~CP code))
                        (PP-TMP (PREP durante)
                            (NP (ART~DE la) (NOU~CS Fiera))))
                      (NP-SBJ-2.1033 (-NONE- *)))
                   (PRN
                       (, ,)
                       (CONJ o)
                       (S
                           (ADVP (ADVB almeno))
                           (VP (VMA~IN ridurre)
                               (NP (-NONE- *-833)))
                            (NP-SBJ (-NONE- *-2.1033)))
                         (, ,))))
                (, ,)
                (VP (VAU~FU saranno)
                    (VP (VMA~PA potenziate)
                        (NP-EXTPSBJ-1633 (ART~DE le) (NOU~CP biglietterie))))
                  (NP-SBJ (-NONE- *-1633)))
               (, ,)
               (CONJ e)
               (S
                   (VP (VMA~FU saranno)
                       (ADVP (ADVB anche))
                       (ADJP-PRD (ADJ~QU disponibili))
                       (NP-EXTPSBJ-2333
                           (NP (NOU~CP biglietti))
                           (PP (PREP in)
                               (NP (NOU~CS prevendita))))
                         (PRN
                             (-LRB- -LRB-)
                             (PP-LOC (PREP ad)
                                 (NP (ADVB sempre) (NOU~PR Atrium)))
                              (-RRB- -RRB-)))
                        (NP-SBJ (-NONE- *-2333)))
                     (. .)) )


************** FRASE NEWS-676 **************

 ( (S
    (NP-TMP (ADJ~DE Quest') (NOU~CS anno))
    (VP (VMA~FU interesserà)
        (NP (ART~DE le) (NOU~CP circoscrizioni)
            (NP
                (NP (NUMR 3))
                (, ,)
                (NP
                    (NP (NUMR 5))
                    (CONJ e)
                    (NP
                        (NP (NUMR 7))
                        (, ,)
                        (NP
                            (NP (PRO~DE quella))
                            (PP (PREP di)
                                (NP (NOU~PR Porta) (NOU~PR Palazzo)))))))))
           (NP-SBJ (-NONE- *))
           (. .)) )


************** FRASE NEWS-677 **************

 ( (S
    (NP-TMP (ART~DE il) (NUMR 6))
    (VP (VAU~FU sarà)
        (VP (VMA~PA allestita)
            (NP-EXTPSBJ-533 (ART~IN una) (ADJ~QU grande) (NOU~CS libreria))
            (PP-LOC (PREP ai)
                (NP
                    (NP (ART~DE ai) (NOU~CP piedi))
                    (PP (PREP del)
                        (NP (ART~DE del)
                            (NP (NOU~CS grattacielo)) (NOU~PR Lancia)
                            (, ,)
                            (SBAR
                                (S
                                    (NP-LOC (PRO~LO dove))
                                    (NP (PRO~RI si))
                                    (VP (VMA~FU svolgeranno)
                                        (NP-1833-EXTPSBJ
                                            (NP (ART~DE gli) (NOU~CP incontri)) (-NONE- *-)
                                            (PP (PREP con)
                                                (NP (ART~DE gli) (NOU~CP autori)))
                                             (, ,)
                                             (SBAR
                                                 (S
                                                     (ADVP (ADVB IN_PROGRAMMA))
                                                     (VP (-NONE- *)
                                                         (PP-LOC
                                                             (PP (ADVB anche) (PREP all')
                                                                 (NP (ART~DE all') (NOU~CS ospedale) (NOU~PR Martini)))
                                                              (, ,)
                                                              (PP
                                                                  (PP (PREP al)
                                                                      (NP (ART~DE al) (NOU~PR Prinotti)))
                                                                   (CONJ e)
                                                                   (PP (PREP al)
                                                                       (NP (ART~DE al) (NOU~PR GRUPPO_ARCO))))))
                                                           (NP-SBJ (-NONE- *-1833))))))
                                               (NP-SBJ (-NONE- *-1733))))))))))
                       (NP-SBJ (-NONE- *-533))
                       (. .)) )


************** FRASE NEWS-678 **************

 ( (S
    (NP-SBJ (ART~DE La) (NOU~CS rivincita))
    (VP (VMA~RE ha)
        (ADVP-TMP (ADVB sempre))
        (NP (ART~IN un)
            (NP (NOU~CS sapore))
            (ADJP
                (ADJP (ADVB più) (ADJ~QU forte))
                (PP (PREP della)
                    (NP (ART~DE della) (ADJ~QU semplice) (NOU~CS vittoria))))))
        (. .)) )


************** FRASE NEWS-679 **************

 ( (S
    (PP-LOC (PREP Dal)
        (NP (ART~DE Dal) (NOU~PR Bahrein)))
     (, ,)
     (NP-SBJ (ART~DE il) (ADJ~QU giovane) (NOU~CS brasiliano))
     (VP (VMA~RE torna)
         (PP-LOC (PREP a)
             (NP (NOU~CS casa)))
          (PP (PREP con)
              (NP (ADJ~IN alcune)
                  (NP (NOU~CP convinzioni))
                  (SBAR
                      (NP-1333 (PRO~RE che))
                      (S
                          (NP-SBJ (-NONE- *-1333))
                          (VP (VMA~RE pesano)))))))
           (: :)) )


************** FRASE NEWS-680 **************

 ( (S
    (VP
        (PP (PREP a)
            (NP
                (NP (NOU~CA parità))
                (PP (PREP di)
                    (NP (NOU~CA monoposto)))))
           (VP (VAU~RE ha)
               (VP (VMA~PA battuto)
                   (NP
                       (NP (ART~DE il) (NOU~CS compagno))
                       (PP (PREP di)
                           (NP (NOU~CS squadra))))))
               (, ,)
               (S
                   (S
                       (VP (VAU~RE ha)
                           (VP (VMA~PA scoperto)
                               (CONJ che)
                               (S
                                   (NP-SBJ-1533 (NOU~PR Alonso))
                                   (VP (VMO~RE può)
                                       (S
                                           (VP (VMA~IN avere)
                                               (NP (ART~IN una) (NOU~CS giornata) (ADJ~QU storta)))
                                            (NP-SBJ (-NONE- *-1533)))))))
                             (NP-SBJ-13.1033 (-NONE- *-6.1033)))
                          (, ,)
                          (S
                              (VP (VAU~RE ha)
                                  (VP (VMA~PA tenuto)
                                      (ADVP-LOC (ADVB dietro))
                                      (NP (NOU~PR Hamilton))
                                      (PP-LOC
                                          (PP (PREP alla)
                                              (NP (ART~DE alla) (ADJ~OR prima) (-NONE- *-3233)))
                                           (CONJ e)
                                           (PP (PREP a)
                                               (NP (PRDT tutte) (ART~DE le)
                                                   (NP (NOU~CP-3233 curve))
                                                   (SBAR
                                                       (NP-3333 (PRO~RE che))
                                                       (S
                                                           (NP-SBJ (-NONE- *-3333))
                                                           (VP (VAU~RE sono)
                                                               (VP (VMA~PA seguite))))))))))
                                       (NP-SBJ (-NONE- *-13.1033)))))
                              (NP-SBJ-6.1033 (-NONE- *))
                              (. .)) )


************** FRASE NEWS-681 **************

 ( (S
    (NP (ADJ~QU Bel) (NOU~CS carattere))
    (, ,)
    (VP (VMA~FU sarà)
        (NP-EXTPSBJ-533
            (NP (ART~DE la) (ADJ~QU beata) (NOU~CS incoscienza))
            (PP (PREP dei)
                (NP (ART~DE dei) (ADJ~PO suoi)
                    (NP (NUMR 26)) (NOU~CP anni)))))
        (NP-SBJ (-NONE- *-533))
        (. .)) )


************** FRASE NEWS-682 **************

 ( (S
    (S
        (VP (-NONE- *)
            (NP (ART~IN Un) (ADJ~DI altro) (NOU~CS errore)))
         (NP-SBJ-0.1133 (-NONE- *)))
      (CONJ e)
      (S
          (S
              (VP (VAU~CO sarebbe)
                  (VP (VMA~PA finito)
                      (PP-LOC (PREP in)
                          (NP (NOU~CS croce)))))
                 (NP-SBJ-6.1033 (-NONE- *-0.1133)))
              (, ,)
              (S
                  (VP (VAU~CO avrebbe)
                      (VP (VMA~PA consegnato)
                          (PP (PREP a)
                              (NP (NOU~PR Raikkonen)))
                           (NP
                               (NP (ART~DE il) (NOU~CS ruolo))
                               (PP (PREP di)
                                   (NP (ADJ~OR prima) (NOU~CS guida))))))
                       (NP-SBJ (-NONE- *-6.1033))))
                 (. .)) )


************** FRASE NEWS-683 **************

 ( (S
    (CONJ Se)
    (S
        (VP (VMA~RE pensi)
            (PP (PREP a)
                (NP (ADJ~DE queste) (NOU~CP cose))))
          (NP-SBJ-2.1033 (-NONE- *)))
       (, ,)
       (CONJ se)
       (S
           (NP (PRO~PE ci))
           (VP (VMA~RE rifletti)
               (ADVP-LOC (ADVB su)))
            (NP-SBJ (-NONE- *-2.1033)))
         (VP (VMA~RE finisci)
             (PP (PREP per)
                 (S
                     (VP (VMA~IN sbagliare))
                     (NP-SBJ (-NONE- *)))))
            (NP-SBJ (-NONE- *))
            (. .)) )


************** FRASE NEWS-684 **************

 ( (S
    (NP-SBJ-133 (NOU~PR Hamilton))
    (VP (VMA~RE è)
        (ADVP-LOC (ADVB dietro))
        (, ,)
        (ADVP (ADVB anche))
        (CONJ se)
        (S
            (NP-SBJ-733 (NOU~PR Felipe))
            (VP (VMA~RE riesce)
                (PP (PREP a)
                    (S
                        (VP (VMA~IN vedergli)
                            (NP (PRO~PE vedergli))
                            (NP
                                (NP (ART~DE il) (NOU~CS colore))
                                (PP (PREP degli)
                                    (NP (ART~DE degli) (NOU~CP occhi))))
                              (PP-LOC (PREP negli)
                                  (NP (ART~DE negli) (NOU~CP specchietti))))
                            (NP-SBJ (-NONE- *-733))))
                      (PP (PREP da)
                          (S
                              (ADVP (ADVB tanto))
                              (VP (VMA~RE è)
                                  (ADVP-LOC (ADVB vicino)))
                               (NP-SBJ (-NONE- *-133)))))))
                (. .)) )


************** FRASE NEWS-685 **************

 ( (S
    (S
        (NP-SBJ (ART~DE le) (NOU~PR McLaren))
        (VP (VMA~RE attaccano)
            (NP (-NONE- *))))
      (, ,)
      (S
          (S
              (NP-SBJ (NOU~PR Alonso))
              (VP (VMA~RE passa)
                  (NP
                      (NP (ART~IN un) (NOU~PR Raikkonen))
                      (PP (PREP IN_CERCA_DI)
                          (NP (NOU~CP traiettorie) (ADJ~QU alternative))))))
              (, ,)
              (S
                  (NP-SBJ (NOU~PR Hamilton))
                  (VP (VMA~RE resta)
                      (ADJP-PRD (ADJ~QU incollato)
                          (PP (PREP alla)
                              (NP
                                  (NP (ART~DE alla) (NOU~PR Ferrari))
                                  (PP (PREP del)
                                      (NP (ART~DE del)
                                          (NP (NOU~CS brasiliano))
                                          (, ,)
                                          (SBAR
                                              (NP-2333 (PRO~RE che))
                                              (S
                                                  (NP-SBJ (-NONE- *-2333))
                                                  (NP-TMP (ADJ~DE questa) (NOU~CS volta))
                                                  (VP (VMA~RE manca)
                                                      (PP (PREP di)
                                                          (NP
                                                              (NP (NOU~CA velocità))
                                                              (PP (PREP di)
                                                                  (NP (NOU~CS punta))))))))))))))))
                        (: :)) )


************** FRASE NEWS-686 **************

 ( (NP
    (NP (NOU~CP chilometri)
        (NP (NUMR 305) (ART~DE l') (NOU~CS ora)))
     (PP (PREP contro)
         (NP
             (NP (ART~DE i) (NUMR 310))
             (PP (PREP della)
                 (NP (ART~DE della) (NOU~PR McLaren)))))
        (. .)) )


************** FRASE NEWS-687 **************

 ( (S
    (NP-SBJ (ADJ~IN Ogni) (NOU~CS rettilineo))
    (VP (VMA~RE è)
        (NP-PRD (ART~IN un) (NOU~CS incubo)))
     (. .)) )


************** FRASE NEWS-688 **************

 ( (S
    (NP-SBJ (ART~DE La) (NOU~CS sosta))
    (PRN
        (, ,)
        (ADVP (ADVB inoltre))
        (, ,))
     (VP (VMA~RE consente)
         (PP (PREP a)
             (NP (NOU~PR Raikkonen)))
          (PP-933 (PREP di)
              (S
                  (VP (VMA~IN scavalcare)
                      (NP (NOU~PR Alonso)))
                   (NP-SBJ (-NONE- *-933)))))
          (. .)) )


************** FRASE NEWS-689 **************

 ( (S
    (S
        (VP (VAU~RE Abbiamo)
            (VP (VMA~PA capito)
                (NP (ART~DE il) (NOU~CS motivo))))
          (NP-SBJ-2.1033 (-NONE- *)))
       (CONJ e)
       (S
           (NP-633 (PRO~PE ci))
           (VP (VMA~FU lavoreremo)
               (ADVP (-NONE- *-633))
               (PP-LOC (PREP nei)
                   (NP (ART~DE nei) (NOU~CA test))))
             (NP-SBJ (-NONE- *-2.1033)))
          (. .)) )


************** FRASE NEWS-690 **************

 ( (S
    (S
        (VP (VMA~PA Conclusa)
            (NP-EXTPSBJ-233
                (NP (ART~DE la) (NOU~CS girandola))
                (PP (PREP delle)
                    (NP (ART~DE delle) (NOU~CP soste)))))
           (NP-SBJ (-NONE- *-233)))
        (, ,)
        (NP-SBJ (ART~DE la) (NOU~CS corsa))
        (NP (PRO~RI si))
        (VP (VMA~RE stabilizza))
        (. .)) )


************** FRASE NEWS-691 **************

 ( (S
    (NP-SBJ (ART~DE L') (ADJ~QU unica) (NOU~CS speranza))
    (VP (VMA~IM era)
        (NP-PRD (PRO~DE quella))
        (PP (PREP di)
            (S
                (VP (VMA~IN portare)
                    (PP-LOC (PREP in)
                        (NP (ADJ~OR seconda) (NOU~CS posizione)))
                     (NP (NOU~PR Raikkonen)
                         (, ,)
                         (SBAR
                             (NP-1333 (PRO~RE che))
                             (S
                                 (NP-SBJ (-NONE- *-1333))
                                 (ADVP (ADVB però))
                                 (VP (VAU~IM aveva)
                                     (VP (VMA~PA accumulato)
                                         (NP (ADJ~IN troppo) (NOU~CS ritardo))))))))
                       (NP-SBJ (-NONE- *)))))
              (. .)) )


************** FRASE NEWS-692 **************

 ( (S
    (S
        (VP (VMA~RE Scatta)
            (NP-EXTPSBJ-233 (ART~DE l') (NOU~CS attacco))
            (PP-LOC (PREP alla)
                (NP (ART~DE alla) (NOU~CS curva)
                    (NP (NUMR 4)))))
           (NP-SBJ (-NONE- *-233)))
        (, ,)
        (S
            (S
                (NP-SBJ
                    (NP (ART~DE il) (NOU~CS campione))
                    (PP (PREP del)
                        (NP (ART~DE del) (NOU~CS mondo))))
                  (VP (VMA~RE scivola)
                      (PP-LOC (PREP in)
                          (NP (ADJ~OR quinta) (NOU~CS posizione)))))
                 (CONJ e)
                 (NP-LOC (PRO~LO ci))
                 (VP (VMA~FU resterà)
                     (PP (PREP fino)
                         (PP (PREP al)
                             (NP (ART~DE al) (NOU~CS traguardo))))
                       (PRN
                           (-LRB- -LRB-)
                           (S
                               (NP
                                   (NP (NOU~CP ritiri))
                                   (PP (PREP A_PARTE)))
                                (, ,)
                                (NP-SBJ (ART~IN un) (NOU~CS risultato) (ADVB così))
                                (ADVP (ADVB non))
                                (NP (PRO~PE gli))
                                (VP (VMA~IM succedeva)
                                    (PP-TMP (PREP dal)
                                        (NP (ART~DE dal) (NOU~CS luglio) (ADJ~DI scorso)))
                                     (PP-LOC (PREP a)
                                         (NP (NOU~PR Indianapolis)))))
                                (-RRB- -RRB-))))
                       (. .)) )


************** FRASE NEWS-693 **************

 ( (S
    (" ")
    (VP
        (NP-EXTPSBJ-233 (ADJ~DE Quel) (NOU~CS sorpasso))
        (NP (PRO~PE mi))
        (VP (VAU~RE è)
            (VP (VMA~PA costato)
                (NP (ADVB soltanto) (ART~IN un) (NOU~CS punto))))
          (CONJ e)
          (S
              (VP (VMA~FU arriverò)
                  (PP-LOC (PREP in)
                      (NP (NOU~PR Spagna)))
                   (PP-LOC (PREP in)
                       (NP (ADVB ancora)
                           (NP (NOU~CS testa))
                           (PP (PREP alla)
                               (NP (ART~DE alla) (NOU~CS classifica))))))
                   (NP-SBJ (-NONE- *))))
             (NP-SBJ (-NONE- *-233))
             (" ")
             (. .)) )


************** FRASE NEWS-694 **************

 ( (S
    (CONJ Eppure)
    (PP-LOC
        (PP (PREP dietro)
            (NP (ART~DE la) (NOU~CS resa)))
         (, ,)
         (PP (PREP dietro)
             (NP
                 (NP (ART~DE la) (ADJ~QU netta) (NOU~CS sconfitta))
                 (PP (PREP nel)
                     (NP
                         (NP (ART~DE nel) (NOU~CS confronto))
                         (PP (PREP con)
                             (NP (ART~DE il) (ADJ~PO suo) (NOU~CS compagno) (NOU~PR Hamilton))))))))
           (, ,)
           (NP (PRO~RI si))
           (VP (VMA~RE nascondono)
               (NP-EXTPSBJ-2033 (NOU~CP scricchiolii) (ADJ~QU sinistri)))
            (NP-SBJ (-NONE- *-2033))
            (: :)) )


************** FRASE NEWS-695 **************

 ( (S
    (S
        (NP-SBJ
            (NP-SBJ (NOU~CA re)) (NOU~PR Fernando))
         (ADVP (ADVB non))
         (VP (VMA~RE è)
             (ADJP-PRD (ADJ~QU invincibile))))
       (, ,)
       (S
           (VP
               (ADVP (ADVB non))
               (VP (VMA~RE è)
                   (ADVP-TMP (ADVB sempre))
                   (PP (PREP in)
                       (NP (NOU~CS forma))))
                 (, ,)
                 (S
                     (S
                         (ADVP (ADVB non))
                         (VP (VMA~RE è)
                             (PP-LOC (PREP al)
                                 (NP
                                     (NP (ART~DE al) (NOU~CS centro))
                                     (PP (PREP dell')
                                         (NP
                                             (NP (ART~DE dell') (NOU~CS attenzione))
                                             (PP (PREP della)
                                                 (NP (ART~DE della) (NOU~PR McLaren))))))))
                               (NP-SBJ-14.1033 (-NONE- *-8.1033)))
                            (CONJ e)
                            (S
                                (PP-TMP (PREP prima)
                                    (PP (PREP di)
                                        (S
                                            (VP (VMA~IN affrontare)
                                                (NP
                                                    (NP (ART~DE la) (NOU~CS gara))
                                                    (PP (PREP di)
                                                        (NP (NOU~CS casa)))))
                                               (NP-SBJ (-NONE- *-31.1033)))))
                                      (NP (PRO~RI si))
                                      (VP (VAU~CO sarebbe)
                                          (VP (VMA~PA aspettato)
                                              (NP (ART~IN una)
                                                  (NP (NOU~CS prestazione))
                                                  (ADJP (ADVB più) (ADJ~QU convincente)))))
                                         (NP-SBJ-31.1033 (-NONE- *-14.1033)))))
                                (NP-SBJ-8.1033 (-NONE- *-133)))
                             (. .)) )


************** FRASE NEWS-696 **************

 ( (S
    (NP-LOC (PRO~LO C'))
    (VP (VMA~RE è)
        (NP-EXTPSBJ-333 (NOU~CS tempo))
        (PP (PREP per)
            (S
                (VP (VMA~IN meditare))
                (NP-SBJ (-NONE- *)))))
       (NP-SBJ (-NONE- *-333))
       (: :)) )


************** FRASE NEWS-697 **************

 ( (S
    (NP-SBJ-133 (ART~DE la) (NOU~CS Formula)
        (NP (NUMR 1)))
     (VP (VMA~RE fa)
         (NP
             (NP (ART~IN un) (NOU~CS mese))
             (PP (PREP di)
                 (NP (NOU~CS pausa))))
           (PP-TMP (PREP prima)
               (PP (PREP di)
                   (S
                       (VP (VMA~IN ripresentarsi)
                           (NP (PRO~RI ripresentarsi))
                           (PP-LOC (PREP in)
                               (NP (NOU~PR Europa))))
                         (NP-SBJ (-NONE- *-133))))))
             (. .)) )


************** FRASE NEWS-698 **************

 ( (NP
    (NP (NOU~CS Intervallo) (ADJ~QU lunghissimo))
    (, ,)
    (CONJ perché)
    (S
        (PP-TMP (PREP in)
            (NP (NOU~CS origine)))
         (NP-SBJ (ART~DE il) (NOU~CS calendario))
         (VP (VMA~IM prevedeva)
             (NP
                 (NP (ART~DE il) (ADJ~QU Gran) (NOU~CS premio))
                 (PP (PREP di)
                     (NP (NOU~PR SAN_MARINO))))))
         (. .)) )


************** FRASE NEWS-699 **************

 ( (S
    (NP-SBJ (PRO~RI Si))
    (VP (VMA~FU riprenderà)
        (NP (ART~DE il) (NUMR 13) (NOU~CS maggio))
        (PP-LOC (PREP a)
            (NP (NOU~PR Barcellona))))
      (. .)) )


************** FRASE NEWS-700 **************

 ( (S
    (NP-SBJ (NOU~PR Ferrari)
        (CONJ e) (NOU~PR McLaren))
     (, ,)
     (ADVP-TMP (ADVB NEL_FRATTEMPO))
     (, ,)
     (VP (VMA~RE affilano)
         (NP (ART~DE le) (NOU~CP armi))
         (PP-LOC
             (PP (PREP nei)
                 (NP (ART~DE nei) (NOU~CA test)))
              (CONJ e)
              (PP (PREP in)
                  (NP
                      (NP (NOU~CS galleria))
                      (PP (PREP del)
                          (NP (ART~DE del) (NOU~CS vento)))))))
           (. .)) )