[Dizionario] necesse XML

Andrea Sivieri andrea.sivieri a libero.it
Ven 27 Set 2002 19:20:48 CEST


<!--    La seguente schematizzazione cerca di tenere in conto
        un po' dei requisiti emersi fino ad ora e altri ancora.
        In ordine sparso:
        
        regole grammaticali di base ed eccezioni, definizioni da fonti 
        multiple, sinonimi e contrari, dizionari multi-lingue, simmetria
        tra le diverse lingue, identificatori, import/export db, tag in 
        inglese, facilita` di composizione, estendibilita` (aggiungendo 
        tag), livello di nidificazione massimo prefissato e senza 
        ricorsioni.
        
        Perdonate per la lunghezza e spero che ci capiate qualcosa :-) 
        
        Vi saluto qui, perche` non so se arrivete alla fine della mail ;-)
        
        Ciao,
                     Andrea 
        
        PS: alcune cose nella struttura possono riguardare preferenze
        personali, ma alcuni aspetti come il dualismo forma-significato
        sono cose importanti da considerare, se non si vogliono perdere
        le informazioni necessarie a tutta una serie di trasformazioni
        successive, abbassando di conseguenza la resa del lavoro fatto.
        Sono consapevole che riducendo i requisiti richiesti, basta
        un semplice DocXML (vedi mail precedente), ma mi sembra che
        con poco di piu` potremmo avere molto di piu`...
        
        Dovremmo in qualche modo andare verso una struttura semplice, ma 
        potente, che non deve essere per forza una mappatura uno ad uno
        di un dizionario tradizionale, che tanto quella e` facile da
        ricostruire per aggregazione rispetto agli identificatori di base.
        Aggregare e` banale, quello che non e` banale e` disaggregare
        in modo sensato, in modo che anche la povera macchina ci 
        possa capire qualcosa.  :-)
        -->


<!--    Una delle considerazioni che ho fatto e`, come dicevo, che un conto 
        e` la forma delle parole (significante), un conto e` il significato 
-->

<!-- Personalmente separerei quello che riguarda la forma e le sue 
regole, da quello che riguarda il significato ed i collegamenti 
intra e inter-linguistici tra significati -->

<!--    Lo schema che segue, a parte i "lang" sottointesi ed il fatto
        che riporta tutte le traduzioni all'inglese, e` simmetrico
        tra tutte le lingue, il che e` un bel vantaggio e potrebbe
        essere utile in ambito internazionale
        (siamo o non siamo in Europa? :-) -->
        
<!--    I tag usati sono una manciata, semplici ma piuttosto espliciti:
        volendo generare in uscita dizionari di tipo TEI, semplicemente 
        si userebbero nella trasformazione di uscita il set di tag TEI  :-) ->

<!-- Critiche naturalmente benvolute: spero comunque che si possa
        trarre da qui qualche idea utile. Perdonate alcune imprecisioni
        e sviste, ma l'ho scritto molto di getto. -->

<dictionary>

<meanings>

    <meaning>
        <!-- il contenuto del tag meaning potrebbe essere una definizione
               completa del meaning considerato, oppure una definizione
               parziale da aggiungere a quella gia` presente nel repository
               centrale. Ovvero risulta facile costruire il tutto a strati
               senza dover maneggiare sempre il documento completo,
               perche` il merge puo` essere fatto in automatico.

               Questo e` ancora piu` vero se i dati XML sono semplicemente 
               input per un db SQL tradizionale. La cosa non e` da trascurare
               perche` una risorsa linguistica di questo genere, con
               definizioni prese da fonti multiple, potrebbe arrivare
               ad occupare molto spazio. A questo si unisce il fatto
               che l'input dovra` provvenire da numerosi operatori
               umani, se si vuole qualcosa prima del 2020.

               In questo contesto non e` malvagia l'idea di mettere
               il materiale in un db relazionale: altrimenti bisognera`
               spezzare l'XML centrale in tanti sotto-file piu` gestibili. -->

        <!--    Ogni meaning e` collegato ad una word 
                che lo rappresenta (il significante), in questo caso "frutto".
                
                Le regole grammaticali sono da un'altra parte,
                associate pero` allo stesso identificatore "frutto". 

                Per ottenere un dizionario tradizionale
                basta aggregare rispetto a "frutto" -->
                
        <word>frutto</word>

        <!--    Lista dei sinonimi -->
                
        <syn>prodotto della terra, prodotto</syn>

        <!--    In questa schematizzazione, volendo ragionare in termini
                di db relazionale, i meaning avrebbero 
                una loro tabella, in cui ognuno occupa una riga -->

        <!--    Per distinguere un meaning da un altro (identificatore 
meaning)
                si potrebbe usare la concatenazione dell'identificatore word 
                con il primo sinonimo (esempio: "frutto|prodotto della 
terra") 
                (e` un'idea da perfezionare) -->

        <!--    Lista aggregata delle definizioni -->
        <!--    In realta` ragionando in termini di tabelle db
                ogni definizione avrebbe una sua riga ed un riferimento
                che la collega al meaning opportuno, ma risulta
                comodo esportarli o importarli aggregati come segue -->
                                                                       
        <def src="Melchi">Tutto ciò che la terra produce</def>
        
        <def src="Test1">Prova</def>        
        
        <def src="Test2">Prova</def>                

        <!--    Ogni definizione viene da una qualche 
                fonte a cui e` associato un identificatore (esempio: Melchi).
                Possono esserci anche decine di definizioni-->

        <!--    Considerazioni simili valgono per la lista di esempi -->
        
        <example src="Bibbia">Per sei anni seminerai la tua terra e 
raccoglierai i suoi frutti. [Esodo 23,10]</example>
    </meaning>

    <meaning>
        <word>frutto</word>
        <def src="Melchi">Il frutto carnoso, o polputo, prodotto dai 
vegetali</def>
        <syn>vegetale</syn>
    </meaning>

    <meaning attrib="figurative">
        <word>frutto</word>
        <def src="Melchi">Rendita, profitto</def>    
        <syn>guadagno, utile, attivo, interesse, profitto, compenso, 
vantaggio, rendita, resa</syn>

        <!-- contrari (ovvero antonyms, ma anti suona bene ed e` 
internazionale)
        <anti>perdita, passivo</anti>
    </meaning>

    <meaning attrib="figurative">
        <word>frutto</word>
        <syn>risultato, conseguenza, effetto, esito</syn>
        <anti>causa, motivo, movente</anti>
    </meaning>

    <meaning>
        <word>pésca</word>
        <syn>cattura di pesci</syn>    
        <def src="Melchi">Il pescare</def>
    </meaning>

    <meaning>
        <word>pèsca</word>         <!-- Notare l'accento -->
        <syn>frutto</syn>    
        <def src="Melchi">Frutto del pesco</def>
        
        <!--    Segue la traduzione verso un meaning inglese (identificato da
                "word|primo_sinonimo"). -->
                        
        <trans lang="en">peach|fruit</trans>
        
        <!--    Sarebbe secondo me di scarsa utilita` tradurre 
                un po' come viene parole italiane in parole varie di altre
                lingue. La cosa piu` efficiente mi sembra tradurre tutti
                i meaning italiani o di altre lingue in meaning inglesi.
                Se si fa questo per M lingue, si hanno automaticamente M*M
                dizionari multilingue pronti, avendo fatto un lavoro 
                proporzionale a M, invece che M*M.
                Senza contare il fatto che si avrebbe la corrispondenza
                con i sinonomi giusti nelle altre lingue: e` questo quello
                che un traduttore vorrebbe. :-) -->                        
        
        <!--    Dove non e` scritto lang="en" o lang="<altro>" e` sottointeso 
                lang="it", a meno che uno dei tag progenitori non abbia 
                lang="<altro>", nel qual caso si eredita lang="<altro>"  -->
    </meaning>

    <meaning>
        <word>pesco</word>
        <syn>albero, pianta da frutto</syn>    
        <def src="Melchi">Albero che dà le pesche</def>
        <trans lang="en">peach|tree</trans>
    </meaning>

<!-- ecco un meaning inglese -->

    <meaning lang="en">
        <word>peach</word>
        <syn>tree</syn>
        <def>A small Chinese tree (Prunus persica) widely cultivated 
throughout 
    temperate regions, having pink flowers and edible fruit.</def>
    </meaning>

<!-- notare la differenza tra "peach|tree" e "peach|fruit" -->

    <meaning lang="en">
        <word>peach</word>
        <syn>fruit</syn>    
        <def>The soft juicy fruit of the tree named peach, having 
    yellow flesh, downy, red-tinted yellow skin, and a deeply 
    sculptured stone containing a single seed.</def>
    </meaning>

    <meaning lang="en" attrib="informal">
        <word>peach</word>
        <syn>pleasing thing</syn>    
        <def>A particularly admirable or pleasing person or thing</def>
    </meaning>
    
</meanings>

<!--    Sia le forme regolari che quelle irregolari dovranno essere
        collegate alle forme base, che poi fanno da ponte verso i significati
        (meanings). E` indicata la classe in modo da permettere
        la declinazione o coniugazione a partire dalla forma base
        (a riguardo ci sono cose da perfezionare) -->

<base_forms>
    <base_form>
        <word>pèsca</word>
        <comment>il frutto</comment>
        <class>noun:f-ca-che</class>
    </base_form>

    <base_form>
        <word>pésca</word>
        <comment>il pescare</comment>    
        <class>noun:f-ca-che</class>
    </base_form>

    <base_form>
        <word>amare</word>
        <class>verb:-are</class>
    </base_form>

    <base_form>
        <word>casa</word>
        <class>noun:f-a-e</class>
    </base_form>
</base_forms>

<!-- Mappatura da forma irregolare a forma base, con classificazione-->

<irregular_forms>

    <!-- andare -->
    <form>
        <class>verb:irregular</class>
        <attrib>tense=present,num=s,person=1</attrib>
        <rule><base>andare</base><self>vado</self></rule>        
    </form>
    <form>
        <class>verb:irregular</class>
        <attrib>tense=present,num=s,person=2</attrib>
        <rule><base>andare</base><self>vai</self></rule>        
    </form>
    <form>
        <class>verb:irregular</class>
        <attrib>tense=present,num=s,person=3</attrib>
        <rule><base>andare</base><self>va</self></rule>        
    </form>
    <form>
        <class>verb:irregular</class>
        <attrib>tense=present,num=s,person=3</attrib>
        <rule><base>andare</base><self>vanno</self></rule>        
    </form>  
    
    <!-- avere -->
    <form>
        <class>verb:irregular</class>
        <attrib>tense=present,num=s,person=1</attrib>
        <rule><base>avere</base><self>ho</self></rule>        
    </form>
    <form>
        <class>verb:irregular</class>
        <attrib>tense=present,num=s,person=2</attrib>
        <rule><base>avere</base><self>hai</self></rule>        
    </form>
    <form>
        <class>verb:irregular</class>
        <attrib>tense=present,num=s,person=3</attrib>
        <rule><base>avere</base><self>ha</self></rule>        
    </form>
    <form>
        <class>verb:irregular</class>
        <attrib>tense=present,num=s,person=1</attrib>
        <rule><base>avere</base><self>abbiamo</self></rule>        
    </form>
    <form>
        <class>verb:irregular</class>
        <attrib>tense=present,num=s,person=2</attrib>
        <rule><base>avere</base><self>avete</self></rule>        
    </form>    
    <form>
        <class>verb:irregular</class>
        <attrib>tense=present,num=s,person=3</attrib>
        <rule><base>avere</base><self>hanno</self></rule>        
    </form>  
    
</irregular_forms>

<!-- regole per la classificazione e trasformazione delle forme regolari -->

<regular_forms>

    <!--    Non so se la seguente tecnica riesce a descrivere tutte
            le regole che servono, ma mi sembra abbastanza generale -->
    <form>
        <!--    il nome di una classe e` uno mnemonico che individua
                gli elementi distintivi della classe. In primo luogo
                la categoria (ad esempio "noun"). Inoltre, nel seguente
                esempio, il fatto di essere "f" (femminile) e che la 
                forma base termina in -a e questa sara` portata in -e  -->
                
        <class>noun:f-a-e</class>
        <!--    se siamo stati intercettati dalla regola di questa
                forma derivata, allora vuol dire che corrispondiamo
                ai seguenti attributi  -->                
        <attrib>gender=f,num=s</attrib>
        
        <!--    se il tag "rule" e` assente, allora si intende identita` 
                rispetto alla forma base (regola implicita) ->
    </form>
    <form>
        <class>noun:f-a-e</class>
        <!--    il tag "rule" spiega come creare la forma derivata "self"
                a partire dalla forma base "base". 
                Con i simboli [1], [2], [3] sono indicate le sottostringhe
                da lasciare invariate nella trasformazione in un verso
                oppure nell'altro -->
                                
        <rule><base>[1]a</base><self>[1]e</self></rule>
        
        <!--    in sostanza se usando la regola riesco a passare da self
                ad una forma presente nella lista delle forme base, allora
                l'attrib che segue mi dice tutto quello che posso voler 
sapere -->
                        
        <attrib>gender=f,num=p</attrib>
    </form>

    <form prec="1">
        <!-- forme con maggiore precedenza (prec) vengono considerate prima 
-->
        <!--    in questo modo "pesca" viene agganciata da questa classe
                invece che dalla classe "f-a-e" che implicitamente ha 
prec="0" -->
        <class>noun:f-ca-che</class>
        <attrib>gender=f,num=s</attrib>
    </form>

    <form prec="1"> 
        <class>noun:f-ca-che</class>
        <rule><base>[1]ca</base><self>[1]che</self></rule>
        <attrib>gender=f,num=p</attrib>
    </form>


    <!-- verbi in -ire-isco, come finire, che sono casi particolari dei verbi 
in -ire -->
    <form>
        <class>verb:-ire-isco</class>
        <attrib>tense=present,num=s,person=1</attrib>
        <rule><base>[1]ire</base><self>[1]isco</self></rule>        
    </form>
    <form>
        <class>verb:-ire-isco</class>
        <attrib>tense=present,num=s,person=2</attrib>
        <rule><base>[1]ire</base><self>[1]isci</self></rule>        
    </form>
    <form>
        <class>verb:-ire-isco</class>
        <attrib>tense=present,num=s,person=3</attrib>
        <rule><base>[1]ire</base><self>[1]inisce</self></rule>        
    </form>
    <form>
        <class>verb:-ire-isco</class>
        <attrib>tense=present,num=p,person=3</attrib>
        <rule><base>[1]ire</base><self>[1]iscono</self></rule>        
    </form>    


    <!-- verbi in -ire, come aprire -->
    <form>
        <class>verb:-ire</class>
        <attrib>tense=present,num=s,person=1</attrib>
        <rule><base>[1]ire</base><self>[1]o</self></rule>        
    </form>
    <form>
        <class>verb:-ire</class>
        <attrib>tense=present,num=s,person=2</attrib>
        <rule><base>[1]ire</base><self>[1]i</self></rule>        
    </form>
    <form>
        <class>verb:-ire</class>
        <attrib>tense=present,num=s,person=3</attrib>
        <rule><base>[1]ire</base><self>[1]e</self></rule>        
    </form>
    <form>
        <class>verb:-ire</class>
        <attrib>tense=present,num=p,person=1</attrib>
        <rule><base>[1]ire</base><self>[1]iamo</self></rule>        
    </form>
    <form>
        <class>verb:-ire</class>
        <attrib>tense=present,num=p,person=2</attrib>
        <rule><base>[1]ire</base><self>[1]ite</self></rule>        
    </form>
    <form>
        <class>verb:-ire</class>
        <attrib>tense=present,num=p,person=3</attrib>
        <rule><base>[1]ire</base><self>[1]ono</self></rule>        
    </form>    

    <!-- verbi in -are, come amare -->
    <form>
        <class>verb:-are</class>
        <attrib>tense=present,num=s,person=1</attrib>
        <rule><base>[1]are</base><self>[1]o</self></rule>        
    </form>
    <form>
        <class>verb:-are</class>
        <attrib>tense=present,num=s,person=2</attrib>
        <rule><base>[1]are</base><self>[1]i</self></rule>        
    </form>
    <form>
        <class>verb:-are</class>
        <attrib>tense=present,num=s,person=3</attrib>
        <rule><base>[1]are</base><self>[1]a</self></rule>        
    </form>
    <form>
        <class>verb:-are</class>
        <attrib>tense=present,num=p,person=1</attrib>
        <rule><base>[1]are</base><self>[1]iamo</self></rule>        
    </form>
    <form>
        <class>verb:-are</class>
        <attrib>tense=present,num=p,person=2</attrib>
        <rule><base>[1]are</base><self>[1]ate</self></rule>        
    </form>
    <form>
        <class>verb:-are</class>
        <attrib>tense=present,num=p,person=3</attrib>
        <rule><base>[1]are</base><self>[1]ano</self></rule>        
    </form>    
    <form>
        <class>verb:-are</class>
        <attrib>tense=present_participle</attrib>
        <rule><base>[1]are</base><self>[1]ante</self></rule>        
    </form>
    <form>
        <class>verb:-are</class>
        <attrib>tense=past_participle,gender=m</attrib>
        <rule><base>[1]are</base><self>[1]ato</self></rule>        
    </form>
    <form>
        <class>verb:-are</class>
        <attrib>tense=past_participle,gender=f</attrib>
        <rule><base>[1]are</base><self>[1]ata</self></rule>        
    </form>

    <!-- verbi in -gare, come pogare ;-) -->
    <form>
        <class>verb:-gare</class>
        <attrib>tense=present,num=s,person=2</attrib>
        <rule><base>[1]gare</base><self>[1]ghi</self></rule>        
    </form>
    <form>
        <class>verb:-gare</class>
        <attrib>tense=present,num=s,person=2</attrib>
        <rule><base>[1]gare</base><self>[1]ghiamo</self></rule>        
    </form>

</regular_forms>

</dictionary>



Maggiori informazioni sulla lista Dizionario