Un formalismo per rappresentare le espressioni temporali

Posted on 4 settembre 2008

2


Penso che qualsiasi espressione linguistica relativa al tempo possa essere formalizzata in modo da essere computabile. In questo senso il buon Davide Casali mi ha aiutato a schematizzare alcune idee che elenco qui e che verranno riprese e ampliate in post successivi.

Un qualsiasi momento può essere espresso in termini matematici utilizzando 9 informazioni: anno, mese, giorno, ora, minuti, secondi, decimi di secondo, centesimi di secondo, millesimi di secondo.
Il livello di dettaglio utilizzato esprime implicitamente l’unità di misura: 2008.09 indica un mese, 1230.01.20 indica un giorno, e così via.
Per gli anni prima di Cristo: solo anno negativo.

Posso esprimere una durata nel tempo (“per un’ora”, “da sempre”…) con un intervallo, indicato mediante il momento di partenza e un delta diverso da 0 (positivo, se indica “fino a”; negativo, se indica “da”). Come già specificato, l’unità di misura del delta è definito implicitamente dal dettaglio con cui è espresso il momento.
“Per tutto settembre di quest’anno”: {2008.09∆1}

Posso esprimere anche un momento specifico come intervallo: momento di partenza e delta uguale a 0. Ho la possibilità di passare da un delta 0 a un delta positivo scendendo all’unità di misura inferiore: “Marzo 2008” può quindi essere espresso come {2008.03∆0} oppure come {2008.03.01∆31}. La possibilità di convertire un delta 0 in un delta positivo permette di effettuare i calcoli necessari in seguito.

Infine mi dedico al tempo intercorso tra due momenti (ovvero all’accostamento di due espressioni con delta 0): sottrazione A-DA che dia come risultato una notazione con delta.
“Da settembre a ottobre”: {2008.10∆0} – {2008.09∆0} —> {2008.09∆1}

[Aggiornamento: tutta questa prima parte è stata approfondita nel post https://sicapisce.wordpress.com/2008/09/17/espressioni-temporali-numeri/]

Fin qui dando per scontato che si sta già lavorando con i numeri. In realtà ci sono tutte quelle espressioni linguistiche relative al tempo… La rappresentabilità linguistica va riportata alla rappresentabilità numerica di cui ho parlato sinora.
– “Millennio” | “Secolo” | “Decennio” | “Quinquennio” | “Triennio” | “Biennio” | “Anno” (come annualità: in espressioni tipo “ogni anno”)
– Anno (numero)
– “Quarto d’anno” | “Bimestre” | Nome del mese (“Gennaio, Febbraio, Marzo”…) | “Annetto”
– Mese (numero)
– Stagione | “Decade” | “Settimana” (anche espressa come numero ordinale) | “Weekend” | Giorno della settimana (“lunedì, martedì”…) | Giorno di festa (“Natale, Pasqua, ferie”…) | “Mesetto”
– Giorno (numero)
Momento del giorno (“alba, mezzogiorno, notte, giorno”…)
– Ora (numero)
“Quarto d’ora” | “Mezz’ora”
– Minuto (numero)
– Secondo (numero)
–    …
Implemento in PHP la funzione convert(“espressione”, ancoraggio) che prenda da questa scala l’unità di misura che sta sotto l’espressione linguistica. “Ancoraggio” sta per il punto di riferimento temporale.

Attenzione ai problemi con “martedì” o “tutti i venerdì dispari di giugno”. Dovrò elencare un po’ di prove e traduzioni.

Ora alla funzione convert() aggiungo la deduzione del delta; poi risolvo il riferimento temporale mediante il quale calcolare la data/ora espressa fino al dettaglio dell’unità di misura (quindi probabilmente non sarà mai con delta zero). I riferimenti temporali potrebbero essere $REFTIME, $BEGIN e $END, ad esempio.

Infine utilizzo l’operatore per cercare all’interno di quell’intervallo quel singolo evento.
“il secondo millennio” assoluto:    convert(“millennio”, 2/0) —> udm: anno; delta 1000 —> convert(“millennio”, 2) —> {999∆1000}
“martedì”:             convert(“martedì”, this/$reftime)
“martedì scorso”:        convert(“martedì”, prev/$reftime)
“il primo martedì del mese”:    convert(“martedì”, 1/{x.x∆0})
“l’ultimo martedì di giugno”:    convert(“martedì”, -1/convert(“giugno”, this/$reftime)) —> convert(“martedì”, -1/{2008.06∆0}) —> convert(“martedì”, -1/{2008.06.01∆31})

Esistenza delle incognite (le x): per completarle, funzione fill({espressione}, $RIFERIMENTO)

Espressioni temporali che sono in realtà avverbi: “mensilmente“!!

Ecco: ora però mi tocca scriverlo, questo articolo… Ad ogni modo ringrazio sin da ora Davide “Folletto Malefico” Casali per l’aiuto che mi ha dato. Se poi non sono capace di andare avanti è solo per colpa mia… :)

[Articolo correlato: Espressioni temporali: numeri]

Creative Commons License
NLP Projects by Samuel Zarbock are licensed under a Creative Commons Attribuzione-Non commerciale-Non opere derivate 2.5 Italia License.