Espressioni temporali: numeri

Posted on 17 settembre 2008

4


Il formalismo di cui parlo in questo post deve moltissimo ai suggerimenti di Davide Casali, che ringrazio da subito.
Le indicazioni temporali, nel loro insieme, sono un mondo ricco di significati, utilizzi e sfacettuature differenti. Esempi di espressioni temporali possono essere:

  • “da un mese a questa parte”,
  • “il quindici dicembre di due anni fa”,
  • “fra poco”,
  • “ogni martedì, in estate”,
  • “l’undicesimo secolo prima della venuta di Cristo”,
  • “alle sette”,
  • “con l’inizio della notte”,
  • “alle diciannove in punto, non un minuto più tardi”,
  • “il biennio successivo”,
  • “mai”.

Quando ho cercato di formalizzare le espressioni temporali ho cominciato col fare ordine tra tutte le possibili unità di misura. Ignorando per un momento i vari “prima”, “dopo”, “sempre”, “mai”, “poco” o “tanto”, mi sono rimaste queste “unità di misura”:

  • Millennio
  • Secolo
  • Decennio
  • Quinquennio
  • Triennio
  • Biennio
  • Anno
  • Quarto d’anno
  • Bimestre
  • Mese (nome e numero)
  • Stagione
  • Decade
  • Settimana
  • “Weekend” o “fine settimana”
  • Giorno (della settimana, numero e nome della festività: ad esempio, “Natale”)
  • Momento del giorno (“alba, mezzogiorno, notte, giorno”…)
  • Ora
  • Mezz’ora
  • Quarto d’ora
  • Minuto
  • Secondo

Ciò che però contraddistingue questa lista è il fatto di mescolare nomi e numeri… Alcune delle cosiddette “unità di misura”, difatti, sono pure espressioni linguistiche, e non misurano proprio niente: “Millennio”, “Secolo” o “Biennio” sono solo raggruppamenti di anni; “Pasqua”, “Inverno” o “Martedì” non sono rappresentabili con dati numerici se non dopo una conversione che tenga conto del calendario.
Dunque il mio elenco precedente può essere rivisto come un alternarsi di espressioni linguistiche e di espressioni numeriche, dove ogni espressione linguistica consiste in un raggruppamento delle espressioni numeriche che seguono nella scala:

  • “Millennio” | “Secolo” | “Decennio” | “Quinquennio” | “Triennio” | “Biennio” | “Annualità”
  • Anno (numero)
  • “Quarto d’anno” | “Bimestre” | Nome del mese (“Gennaio, Febbraio, Marzo”…) | “Annetto”
  • Mese (numero)
  • Stagione | “Decade” | “Settimana” (anche espressa come numero ordinale) | “Weekend” | “Fine settimana” | 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 primo (numero)
  • Minuto secondo (numero)

In questo modo posso cominciare a lavorare al mio formalismo separando nettamente le espressioni linguistiche dalle espressioni numeriche, e prevedendo un sistema per convertire le prime nelle seconde (cosa che affronterò successivamente). A questo punto la mia sintassi si può limitare a fornire i dati relativi ad

  • anno
  • mese
  • giorno
  • ora
  • minuti primi
  • minuti secondi
  • decimi, centesimi e millesimi di secondo.

Primo presupposto: non dev’essere obbligatorio esprimere necessariamente tutte queste informazioni, mentre dev’essere invece possibile fermarsi al grado di atomicità desiderato. Questo impedisce che il sistema debba indicare, di un giorno, anche zero ore, zero minuti, zero secondi, zero decimi, eccetera. Se voglio indicare un giorno mi fermo al giorno.
Come corollario di questo presupposto ottengo che l’unità di misura della mia espressione è già contenuta nel suo grado di dettaglio, e quindi non occorre fornire in altro modo l’unità di misura. Indicando anno, mese, giorno e ora, sto già fornendo la necessaria informazione: qualsiasi calcolo io voglia applicare a quel dato, sarà necessariamente in ore.

Secondo presupposto: un qualsiasi momento, qualunque sia il suo grado di atomicità, può essere dato anche come intervallo di tempo (espresso nell’unità di misura successiva). Un dato relativo ad anno, mese e giorno può essere dunque espresso anche come anno, mese, giorno e quel lasso di ore che vanno dalla prima all’ultima di quel giorno. Solo un momento che sia già stato espresso sino ai millesimi di secondo non può essere ulteriormente tradotto, mancando (per ora?) la scala temporale successiva al millesimo di secondo.

Alla base del mio formalismo, difatti, vige la corrispondenza tra un momento “atomico” e un intervallo temporale. Il mio formalismo esprime entrambi i casi come intervallo tra un “da” ed un “a”, e lo fa utilizzando una notazione che specifichi il “da” e il tempo necessario per arrivare ad “a” (tempo espresso nell’unità di misura data implicitamente, come si diceva prima).

In questo modo posso esprimere una durata nel tempo specificandone il momento di partenza e un delta diverso da 0 (positivo, se indica “da qui in poi”; negativo, se indica “sino a qui”).
“Un mese a partire da settembre” sarà esprimibile in due modi:

  • come “momentoSettembre ∆1”
  • oppure “momentoOttobre ∆-1”

Contemporaneamente, posso esprimere un momento specifico dandone il momento di partenza e un delta uguale a 0. “Settembre” corrisponderà a “momentoSettembre ∆ 0”.

Ecco dunque la sintassi proposta:

{aaaa[.mm[.gg[.hh[.nn[.ss[.dcm]]]]]] ∆ x}

dove

  • aaaa: quattro cifre per l’anno (numero negativo se l’anno è antecedente l’epoca attuale)
  • mm: due cifre per il mese
  • gg: due cifre per il giorno
  • hh: due cifre per l’ora
  • nn: due cifre per il minuto primo
  • ss: due cifre per il minuto secondo
  • dcm: tre cifre per decimi, centesimi e millesimi di secondo
  • x: numero naturale positivo o negativo

Ad esempio:

  • “Il 25 dicembre del 1970”
    {1970.12.25 ∆ 0} oppure {1970.12.25.00 ∆ 24}
  • “Il sedicesimo secolo”
    {1500 ∆ 100}
  • “Il mese di novembre del 444 a.C.”
    {-444.11 ∆ 0}
  • “Dalle sette alle otto di sera (di oggi)”
    {2008.09.17.19 ∆ 1}
  • “Da marzo ad aprile (dell’anno scorso)”
    {2007.03 ∆ 1} oppure {2007.04 ∆ -1}

Tuttavia, per concludere, è necessario che un intervallo temporale espresso come tempo intercorso tra due momenti possa conservare la notazione con entrambi i delta uguali a 0 sino al momento di effettuare i calcoli; prevedo quindi la possibiltà di trasmettere una sottrazione A-DA che dia come risultato una notazione con delta diverso da zero.

  • “Da settembre a ottobre (di quest’anno)”
    {2008.10 ∆ 0} – {2008.09 ∆ 0}
    che dia il risultato di {2008.09 ∆ 1} oppure di {2008.10 ∆ -1}

Questo mi serve per conservare l’informazione di come sia stato espresso l’intervallo, ovvero se sia stato dato un momento e una durata oppure due momenti. In questo modo potrò distinguere tra “Da marzo per un mese” e “Da marzo ad aprile”, sino al momento in cui vorrò poter calcolare il risultato.

Fin qui dando per scontato che si sia convertita un’espressione linguistica in numeri… Il prossimo post sull’argomento affronterà gli aspetti legati a tale conversione.

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

Advertisements