[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