Text2SQL
Autore: István Szakadát
Ricerca testuale su Text2SQL
Quando i CD-ROM apparvero all'inizio degli anni '90, furono pubblicizzati come in grado di memorizzare tanti libri su un singolo disco quanto quelli che avrebbero occupato uno scaffale in formato cartaceo tradizionale. Inoltre, grazie ai computer, era possibile cercare velocemente all'interno dei testi, mettendo ancora più in contrasto le capacità di ricerca umana. "Cerchiamo quante volte è menzionato il cane in tutte le opere di Shakespeare!" Questo compito sembrava una sfida insormontabile per l'uomo, mentre il computer rispondeva in un attimo, mostrando immediatamente i risultati. La potenza straordinaria dei computer divenne ancora più evidente con l'avvento del web, dando inizio a una nuova accumulazione digitale della conoscenza umana. Abbiamo iniziato a costruire un nuovo mondo della conoscenza umana, dove chiunque poteva accedere a qualsiasi cosa, ovunque, in qualsiasi momento (con un po' di esagerazione). La quantità di documenti accessibili via web è cresciuta in modo straordinario. Eric Schmidt, allora CEO di Google, dichiarò nel 2010:

"Oggi produciamo la stessa quantità di informazioni ogni due giorni, rispetto a quanto ne abbiamo prodotte dall'inizio dei tempi fino al 2003."
L'universo digitale è continuato a espandersi, e l'accesso al contenuto del gigantesco corpus testuale è stato reso possibile dai servizi automatici emergenti dell'epoca: i motori di ricerca. Nel 2000, Tim Berners-Lee, il padre del progetto World-Wide-Web, ha dichiarato che il primo decennio del web aveva compiuto la sua missione. Conserviamo l'intera conoscenza dell'umanità in un unico sistema integrato; i motori di ricerca sono in grado di leggere rapidamente l'enorme quantità di testi accumulati e di aiutare efficacemente le persone a trovare i documenti desiderati. In quell'occasione, Berners-Lee ha lanciato il programma web per i decenni successivi, fissando nuovi obiettivi per gli sviluppi futuri.
"Il primo decennio del web riguardava l'insegnamento della lettura alle macchine; ora è il momento di insegnare loro a interpretare i testi."
Perché è stato necessario fissare nuovi obiettivi, quale era il motivo? Sebbene la performance spettacolare delle macchine fosse impressionante, era anche noto che la ricerca computerizzata presentava delle carenze. Se si dava al computer il compito di cercare la parola 'gyula', restituiva immediatamente i risultati (con il tempo, sempre di più), ma non riusciva a gestire bene frasi come:
"Gyula Gyula è stato gyula per cinque anni nella città di Gyula."
Il computer trovava la parola 'gyula' quattro volte all'interno della frase, ma non era in grado di gestire la differenza che un essere umano riconosce immediatamente: vale a dire, che l'espressione trovata appare nella frase in quattro significati diversi: 'gyula' può essere un cognome, un nome proprio, un titolo onorifico e il nome di una città (e potremmo trovare o creare ulteriori possibilità di interpretazione/uso). A un certo livello del linguaggio, a livello sintattico, il motore di ricerca è efficace, ma al livello successivo – quello semantico – non lo è. Il computer, in questo caso, non sa ancora che 'gyula' può significare più cose all'interno di una frase. Questo esempio illustra cosa intendesse Tim Berners-Lee quando affermava che "le macchine non capiscono ciò che leggono."
La risoluzione del problema è stata promessa dallo sviluppo delle tecniche di ricerca semantica. Per questo motivo, il nuovo programma web è stato denominato 'iniziativa di ricerca semantica'. Tuttavia, questo programma non ha ottenuto successi rapidi e spettacolari come quelli visti nel decennio precedente con il progetto web.
C'era ovviamente anche un altro problema con i motori di ricerca. Quando una persona formulava una query di ricerca, i computer restituivano un elenco di risultati, composto da una lista di documenti in cui compariva il termine di ricerca. Con il tempo, la lunghezza di tali elenchi è aumentata sempre di più, e questa crescita è diventata costante. Ben presto sono apparse liste di risultati con miliardi di elementi. Ma cosa dovrebbe fare una persona con tali quantità? In un certo senso, siamo tornati al punto di partenza: di nuovo, il compito di effettuare la ricerca è ricaduto sull'uomo. Doveva manualmente esaminare i documenti della lista dei risultati: cliccare uno dopo l'altro per vedere in quale contesto appariva il termine di ricerca nel testo selezionato. Abbiamo chiesto poco, ma abbiamo ricevuto troppo. Potremmo dire: la macchina è diventata eccessivamente prolissa. Noi, invece, abbiamo bisogno che la ricerca sia più mirata.
Affidabilità, prolissità, gestione della rilevanza
Ovviamente, i sviluppatori dei motori di ricerca avevano una risposta a questa prolissità. Se l'elenco dei risultati era troppo lungo, sia per consapevolezza di sé che per esperienza, potevamo supporre che gli utenti avrebbero guardato solo le prime proposte della lista. In questo caso, il criterio di servizio più importante è diventata la qualità dell'ordinamento della lista dei risultati in base alla rilevanza (cosa e perché l'algoritmo mette in cima alla lista). Nei primi tempi ci sono stati molti tentativi diversi. Poi è arrivato Google, che in brevissimo tempo ha conquistato il mercato dei motori di ricerca con il suo servizio. Il motivo era che il motore di ricerca di Google, rispetto ai suoi concorrenti (come AltaVista, Lycos, HotBot e altri), aveva capacità di gestione della rilevanza nuove e di gran lunga migliori.
Tuttavia, il successo del motore di ricerca di Google non era dovuto a competenze semantiche o a qualsiasi altra abilità linguistica, ma piuttosto alla novità del modo in cui era in grado di raccogliere e algoritmizzare le informazioni valutative sparse nei documenti web espresse dagli utenti (espressioni di valore). Oggi possiamo dire che, raccogliendo queste tracce di dati e creando indicatori di rilevanza, Google non ha fatto altro che sfruttare una particolare manifestazione dell'intelligenza collettiva umana (e, anche se di solito non se ne parla, è vero che nel motore di ricerca di Google è nascosto forse il più grande progetto di crowdsourcing volontario e inconsapevole. Tuttavia, ciò non sminuisce i meriti degli ingegneri di Google, poiché nella costruzione dell'infrastruttura tecnica e nello sviluppo dell'algoritmo è stato necessario impiegare molte conoscenze ingegneristiche.
Un altro tipo di critica poteva essere mossa nei confronti dei motori di ricerca. Se consideriamo infatti questa relazione uomo-macchina come un atto comunicativo, in cui l'uomo pone una domanda e la macchina risponde, e sappiamo che la risposta del motore di ricerca è la restituzione di un elenco di risultati, allora si può affermare che domanda e risposta differiscono per genere e qualità linguistica. L'uomo infatti inserisce un termine di ricerca, ossia pone una domanda (una frase interrogativa), alla quale la macchina restituisce un elenco di titoli (una serie di frasi più o meno lunghe) come risposta, con l'"incarico" di proseguire cliccando sui link offerti e leggendo i testi accessibili uno dopo l'altro. Questo rapporto differisce significativamente dalla forma di base della comunicazione umana, in cui comunichiamo tra noi con frasi, poniamo domande (frasi) e ci aspettiamo risposte (frasi) dagli altri.
Questa differenza ha fornito la base per lo sviluppo di nuovi tipi di sistemi di ricerca. Si è pensato che, se alle domande "a una frase" ci si aspetta risposte "a una frase", allora il nome del sistema di nuova funzionalità dovrebbe essere 'Q&A' (question and answer) o 'sistema di domanda e risposta'.
Sistemi di domanda e risposta
I tentativi di sviluppare sistemi di domanda e risposta sono in corso da molto tempo, ma nessuno è riuscito a ottenere un successo clamoroso. La ragione evidente di ciò è che per far funzionare con successo questi sistemi è necessario modellare le capacità semantiche umane e realizzare questi modelli attraverso l'elaborazione informatica.
Questo compito è di gran lunga più difficile rispetto all'esecuzione dell'operazione di ricerca basata su principi sintattici (somiglianza basata sui caratteri). Per fare ciò, infatti, è necessario rivelare la struttura interna delle frasi, la relazione tra le parole e le espressioni, il loro significato e il loro collegamento ai contesti d'uso linguistici, ovvero l'intero sistema di regole della lingua naturale. Bene, finora questo non è stato possibile. Non sono pochi quelli che ritengono che forse non sia nemmeno possibile, e ci sono anche coloro che pensano che sia un'impresa del tutto insensata. Tuttavia, molti hanno cercato e cercano ancora soluzioni.
Ricerca semantica
Google ha iniziato molto presto (già all'inizio degli anni 2000) a sviluppare le capacità semantiche del suo motore di ricerca. Ha integrato nel suo motore di ricerca un numero considerevole di moduli semantici di diversa rilevanza, ma sempre focalizzati su un'area di conoscenza ristretta o su un tipo specifico di dati, tuttavia il grande passo avanti deve ancora arrivare. Il grande passo avanti sarebbe se Google diventasse improvvisamente un motore di ricerca semantico, ma è evidente che le continue variazioni quantitative non hanno ancora raggiunto la misura necessaria per un cambiamento qualitativo.
Rispetto ai primi tempi, da molto tempo ormai, Google fornisce servizi diversi sulla sua pagina dei risultati di ricerca a seconda della domanda, grazie al fatto che continuano a essere integrate nuove funzionalità basate su capacità semantiche. Fin dall'inizio, il motore di ricerca ha funzionato come calcolatrice, convertitore di valute, cercatore di codici postali, e col tempo ha gestito sempre più aree di conoscenza in modo leggermente diverso rispetto alle altre in generale.
Sempre più spesso riceviamo una pagina dei risultati in cui non vediamo in cima all'elenco dei siti web correlati (cioè un insieme di titoli di documenti), ma informazioni pertinenti e uniche relative alla domanda posta (tralasciamo per un momento le modifiche delle pagine dovute a considerazioni pubblicitarie e di gestione della rilevanza – poiché anche queste hanno causato molti cambiamenti).
Possiamo citare come esempio convincente la soluzione per cui, quando inseriamo come criterio di ricerca la domanda "primo ministro dell'Ungheria", otteniamo in cima alla pagina una risposta specifica alla domanda specifica (ovviamente aggiornata al presente), seguita da molte altre informazioni e solo dopo arriva il lungo elenco delle pagine in cui compare il termine cercato.

Nonostante i successi parziali spettacolari, la sfida di sviluppare la capacità semantica delle macchine, ossia il riconoscimento e la comprensione della struttura interna delle frasi, del significato delle parole e delle espressioni, è rimasta ancora un problema esistente. Nel frattempo, però, sono emerse e si sono consolidate altre tecnologie utilizzate per scopi diversi, che hanno – in parte o completamente – trasformato e continuano a trasformare le nostre idee sulle capacità linguistiche delle macchine.
Conversazione con le macchine basata su corpora testuali
Gli sviluppi dell'intelligenza artificiale (AI) basati su algoritmi di deep learning hanno seguito una logica completamente diversa rispetto ai motori di ricerca, e questi sviluppi hanno raggiunto successi sorprendenti e rapidissimi negli anni 2020. Le nuove tecnologie basate su LLM (Large Language Model) – per alcuni aspetti molto importanti – hanno elevato le capacità di parola delle macchine alla qualità del discorso umano. Con ChatGPT si può comunicare come fanno le persone tra loro. Si può conversare con la macchina proprio come facciamo tra di noi, e sotto molti aspetti con la stessa qualità. Poniamo domande e riceviamo risposte in frasi ben formate, sia sintatticamente che semanticamente. Un cambiamento così travolgente e dirompente si è visto raramente, sin dagli albori del mondo digitale.
Cosa può fare la macchina parlante basata su AI? Parlare – come solo noi esseri umani siamo stati in grado di fare finora. Cosa c'è dietro questa tecnologia? Molti algoritmi, un'enorme quantità di calcoli e tantissimi testi. Non ci siamo mai occupati prima degli algoritmi, delle esigenze di capacità di calcolo, delle questioni relative all'infrastruttura tecnica sottostante al servizio, e possiamo trascurarli anche ora. Questi aspetti sono ovviamente estremamente importanti per garantire il funzionamento sistematico, ma non sono realmente necessari per il confronto dei processi analizzati, per la costruzione del quadro interpretativo e per le valutazioni finali.
Per semplificare le cose, possiamo dire che anche questa macchina parlante utilizza lo stesso enorme corpus testuale del motore di ricerca, e possiamo dire che questo "corpus comune" non è altro che una vasta collezione di testi umani raccolti e gestiti digitalmente, originariamente creati e conservati in modo sparso.
Questo corpus fornisce al motore di ricerca la possibilità, quando viene posta una domanda, di trovare i passaggi rilevanti (che garantiscono una certa corrispondenza) nell'intero insieme e di restituirli come risultati, in modo che la persona possa vedere in quale contesto il termine di ricerca è apparso nel documento precedentemente registrato da qualcun altro. Se il motore di ricerca funziona correttamente – qui: tecnicamente, in senso sintattico – la correttezza semantica delle risposte (passaggi testuali) restituite dalla macchina non può essere contestata. Se leggiamo la pagina a cui siamo stati indirizzati tramite il link offerto dal motore di ricerca e l'informazione trovata non è adeguata o sufficiente per noi, la macchina non può essere ritenuta responsabile, poiché non è stata lei a produrla. Naturalmente, uno dei servizi importanti del motore di ricerca è il modo in cui classifica i documenti trovati in base a criteri di rilevanza, poiché questo influisce effettivamente su ciò che leggiamo (e su ciò che non leggiamo), ma anche in questo caso non possiamo incolpare la macchina per la qualità delle risposte leggibili in termini di contenuto. Il motore di ricerca può sempre difendersi in caso di "risposta sbagliata" indicando un punto qualsiasi del corpus testuale e affermando che è stato un'altra persona a dirlo (scriverlo), quindi è lui il responsabile del contenuto della risposta.
La situazione è diversa per la macchina parlante! Sebbene questa macchina utilizzi lo stesso corpus testuale del motore di ricerca, lo fa in modo completamente diverso e per scopi completamente diversi. Qui, l'obiettivo principale è che la macchina parlante sia sempre in grado di rispondere alle domande poste, e per farlo non è necessario che restituisca o mostri nulla di quel corpus su cui si basa. Il corpus è necessario solo (e soltanto) per dare risposte quanto più appropriate possibile – espresse in frasi di linguaggio naturale – a chi pone la domanda. Lo fa utilizzando il corpus per apprendere preliminarmente come le persone formulano frasi nei diversi contesti d'uso della lingua. Questo avviene su base statistica – richiedendo enormi capacità di calcolo e tempo.
Un aspetto importante qui è la gestione del contesto. La comunicazione linguistica umana, infatti, è estremamente sensibile al contesto, il che significa che le nostre espressioni linguistiche possono essere comprese e interpretate correttamente solo in un determinato contesto, e le nostre espressioni (parole, frasi, frasi) simili o molto simili possono portare significati diversi da contesto a contesto. Questo è ciò che intendiamo quando diciamo che il nostro uso del linguaggio (la nostra lingua) è estremamente flessibile. A lungo è stato uno dei maggiori ostacoli allo sviluppo di capacità linguistiche efficienti per le macchine. La macchina parlante è stata in grado di risolvere questo problema grazie alla sua capacità di identificare miliardi di contesti linguistici basandosi su parole, espressioni, frasi, contesti testuali presenti nel corpus, e sui calcoli automatici che identificano i modelli statistici tra di essi. Poiché il suo corpus è costituito da testi precedentemente registrati da esseri umani, possiamo dire che la macchina impara come le persone tendono a utilizzare parole e frasi in determinati contesti linguistici. Con dati sufficienti, capacità di calcolo sufficiente, denaro sufficiente e, naturalmente, una quantità e qualità sufficiente di intelligenza umana, questa combinazione può improvvisamente diventare funzionale.
Allucinazione
Anche se la macchina parlante è in grado di conversare come fanno le persone tra loro, non possiamo dire che abbia raggiunto il livello di intelligenza. Ma perché no? La macchina parlante non utilizza il suo corpus come riferimento, ma per poter partecipare a un discorso ben formato a livello concettuale. Sa che il cane abbaia, che il gatto ha cuccioli, non pulcini, che l'aereo vola, ma non è un uccello, che il pinguino non sa volare, ma è comunque un uccello, ecc. Le sue frasi sono quasi sempre ben formate, la sua conoscenza del mondo è convincente. Anche a livello di conoscenza umana particolare, individuale, fattuale, spesso si comporta bene, disponendo di un ampio database di conoscenze fattuali. Tuttavia, a questo livello può facilmente commettere errori. È emerso presto che la macchina parlante spesso allucina, ovvero produce risposte errate e non fondate sui fatti. Non analizzeremo qui le ragioni di ciò, anche se forse la critica più seria rivolta alla macchina parlante riguarda proprio questa debolezza. Tuttavia, dal punto di vista del nostro ragionamento, questa mancanza non è così rilevante.
Traduzione
Sebbene il fenomeno dell'allucinazione possa sollevare dubbi, si può discutere se sia possibile sperare in un miglioramento significativo in questo campo, e se sì, come e in quale misura, ma non vale la pena contestare che la capacità di parola della macchina parlante è a un livello molto alto. Da ciò deriva un'altra conseguenza: basandosi su questa abilità, questo sistema ha ottime capacità di traduzione tra diverse lingue. E non solo è in grado di tradurre tra due lingue naturali, ma è anche capace di effettuare conversioni tra lingue naturali e formali. Sfruttare questa ultima capacità offre un enorme potenziale, soprattutto se si utilizza la macchina parlante come traduttore tra le lingue naturali e un linguaggio formale specifico, come SQL.
SQL (Structured Query Language) è il linguaggio di interrogazione per database. Già agli inizi dell'informatica è stato sviluppato un linguaggio formale che consente di estrarre informazioni dai database in modo standardizzato. Con una semplificazione possiamo dire che tutto il sapere che è stato inserito nei database dagli esseri umani negli ultimi decenni (quasi cinquant'anni) è accessibile tramite comandi SQL. Sebbene questo linguaggio non sia complicato, i non esperti non sono in grado di usarlo, e per questo motivo fino ad ora hanno avuto bisogno dell'assistenza di specialisti per accedere alle informazioni archiviate nei database. Ciò ha rappresentato un limite per tutti coloro per i quali sarebbe stato/è importante accedere a questa ricchezza di conoscenze – continuamente – e usarla nella vita quotidiana.
A questo punto, la macchina parlante offre nuove opportunità. Ma prima di approfondire il come e il perché, dobbiamo capire cosa si intende per concetto di database e perché è così importante dal punto di vista della rappresentazione e della gestione della conoscenza.
Ricerca automatica nei database
Già agli inizi dell'informatica, gli esperti hanno iniziato a costruire database, e questo fatto di per sé è notevole, ma l'importanza dei database è ulteriormente sottolineata dal valore finanziario che rappresentano nei sistemi che li utilizzano all'interno dell'intera economia e dalla quantità di informazioni che immagazziniamo in questo formato. Possiamo percepire il dominio quantitativo dei database con l'aiuto di una coppia concettuale apparentemente introdotta per scopi diversi. All'inizio degli anni 2000, è emerso il concetto di web superficiale e deep web, che da allora è stato utilizzato in molti modi e per molteplici scopi. Il concetto di web superficiale è definito come l'insieme delle informazioni liberamente accessibili attraverso il web. Qui, per accesso libero si intende che sia le persone che le macchine possono accedere e leggere le informazioni memorizzate in una determinata pagina. Questo è contrapposto al concetto di deep web, che descrive le pagine teoricamente e tecnicamente accessibili attraverso la rete, ma che nella pratica sono utilizzabili solo in modo limitato. Alla domanda sul perché le pagine del deep web non possano essere utilizzate liberamente e senza restrizioni come nel caso del web superficiale, si possono dare diverse risposte. Da un lato, ci sono pagine (non poche) che impongono barriere di accesso in senso tecnico (ad esempio, proteggendo un'area con una password). In questi casi, barriere tecniche e legali impediscono l'uso libero. Ma c'è un'altra barriera all'accesso, che non può essere spiegata con l'imposizione di ostacoli tecnici e legali, ma piuttosto con il fatto che, sebbene i dati memorizzati nei database web liberamente accessibili siano teoricamente accessibili, per usarli è necessario conoscere la struttura interna del database e saper utilizzare il linguaggio SQL. Né le macchine né le persone possono superare questo ostacolo. I motori di ricerca, quando incontrano tali pagine e vogliono raccogliere il contenuto trovato lì per incorporarlo nei loro servizi di ricerca, non possono interrogare il contenuto del database perché non conoscono le informazioni sullo schema. Se lo sapessero, sarebbero in grado di raccogliere dati proprio come fanno con i contenuti trovati nel web superficiale. Le persone sono ancora più "impotenti", poiché anche in possesso delle informazioni sullo schema non saprebbero utilizzare il linguaggio di interrogazione per estrarre dati dai database, poiché non sanno usare il linguaggio SQL. Eppure la posta in gioco non è piccola a questo punto. Secondo le stime degli esperti, nel complesso memorizziamo ordini di grandezza di informazioni molto maggiori su queste pagine del deep web rispetto all'intera estensione del web superficiale.
I database non sono solo importanti perché contengono una quantità incredibile di informazioni, ma anche perché, in termini di qualità, sono in qualche modo migliori, più precisi, più chiari rispetto ai semplici documenti testuali. Per capire perché è così, dobbiamo conoscere l'essenza dei database, la loro qualità e la differenza tra un "semplice" testo e un database.
Database
Quando migliaia di anni fa i commercianti iniziarono a tenere i loro registri su carta (tavolette di argilla) per sapere quanti prodotti vendevano ogni giorno, tecnicamente fecero qualcosa di simile a quello che facciamo oggi: scrivere parole, espressioni e numeri in una tabella. Bene, questa disposizione tabellare delle informazioni linguistiche era una forma di rappresentazione della conoscenza analoga a quella degli attuali database. In altre parole: sappiamo da tempo che se scriviamo testo in una tabella, ci sono dei vantaggi rispetto a concatenare semplicemente frasi una dopo l'altra. Anche le informazioni memorizzate in una tabella possono essere lette linearmente, proprio come un testo scritto, ma è necessario applicare alcune regole grammaticali per la correttezza delle frasi, cosa che la forma tabellare non richiede. Tuttavia, la tabella non viene organizzata in un'unica direzione (come il testo), ma si presta attenzione anche a organizzare gli elementi della tabella in colonne. Per questo motivo, la tabella può essere letta e valutata sia verticalmente che orizzontalmente (come fa il commerciante quando, nel suo registro, inserisce il numero e il prezzo dei prodotti venduti in un determinato giorno, e alla fine della giornata somma questi valori per conoscere le vendite e i ricavi giornalieri). La caratteristica principale del formato tabellare è la sua organizzazione in due dimensioni. Si può dire che la tabella è un testo strutturato.
Breve digressione teorico-linguistica
A questo punto, in un'analisi più approfondita, sarebbe necessario parlare di un tipo di capacità linguistica umana finora non trattata, per cui la teoria di Ferdinand de Saussure potrebbe essere utile. La teoria può spiegare perché e come siamo in grado di creare testi strutturati. Qui è sufficiente ricordare solo un punto della teoria di Saussure: poiché l'uso della lingua richiede due tipi di abilità da parte dell'uomo, dobbiamo cogliere e interpretare la nostra attività comunicativa in due dimensioni.
La nostra prima capacità linguistica è quella di concatenare le parole in sequenza lineare nelle nostre espressioni per formare frasi con un significato. Questo può essere interpretato nella dimensione morfosintattica, e la questione qui è come possiamo formare le nostre frasi ben formate. Questo è il livello primario della nostra capacità linguistica, dove si crea un risultato immediatamente visibile/ascoltabile. A questo livello (con questa abilità) si formano le nostre frasi, e poi dalla concatenazione di queste si formano i nostri discorsi – udibili – o i nostri documenti scritti, leggibili.
Saussure riconobbe tuttavia che possediamo anche un'altra capacità linguistica: quando componiamo le nostre frasi, prestiamo attenzione in un'altra dimensione a come possiamo inserire parole attuali nelle forme morfosintattiche, nei modelli (schemi di frasi) secondo determinate regole. Questa capacità può essere definita come una sorta di conoscenza classificatoria (semantica, ontologica) che funziona sulla base della nostra conoscenza del mondo. Quando formiamo frasi, l'uso di certe parole è permesso o proibito in una determinata posizione di un tipo di frase (schema di frase). Questa nostra conoscenza – in condizioni normali – non appare né nello spazio acustico né in quello visivo, ma la utilizziamo comunque. Saussure la chiamava dimensione associativa, mentre i suoi seguaci oggi usano più spesso il termine dimensione paradigmatica per descrivere lo stesso concetto. Quando scriviamo qualcosa in una tabella, usiamo questa capacità durante l'organizzazione in colonne (nella dimensione verticale).
L’uso del database (tabella), quindi, significa che registriamo (rappresentiamo) le nostre affermazioni sul mondo (la nostra conoscenza) separando all’interno delle affermazioni i componenti significativi (parole, espressioni). Se lo facciamo, siamo in grado di gestire separatamente i componenti delle nostre affermazioni (riferirsi ad essi, cercarli, calcolarli, ecc.). Formulare il messaggio linguistico in questo modo rende il contenuto delle nostre affermazioni molto più chiaro e preciso rispetto alle affermazioni espresse in testo libero. Grazie alla chiarezza derivante dalla struttura, possiamo fare molto di più con le frasi espresse in questo modo, possiamo eseguire una varietà di operazioni, possiamo ottenere di più dallo stesso insieme di frasi. Questo valore aggiunto di qualità conferisce ai database il loro vantaggio e la loro forza.
I database, quindi, sono più ricchi di dati rispetto al testo, ci danno di più, ma c'è un prezzo da pagare. Questo valore aggiunto deriva dal fatto che la costruzione dei database richiede molto lavoro – che consiste in operazioni di ordinamento – e questo valore d'ingresso è spesso piuttosto elevato. Fortunatamente, molte persone hanno accettato e accettano ancora questo lavoro, molti database sono stati costruiti in passato e continuano a essere costruiti nel presente.
E a questo punto possiamo tornare al nostro ragionamento originale.
Text2SQL
Abbiamo detto che:
- da un lato abbiamo una macchina parlante che sa parlare molto bene in linguaggio naturale, traduce abbastanza bene tra lingue naturali e tra lingue naturali e – in parte – formali, ma non è affidabile dal punto di vista fattuale e spesso allucina;
- dall'altro lato, abbiamo database che organizzano la conoscenza in modo strutturato, garantendo così che la conoscenza accessibile in questo modo sia affidabile, precisa, ricercabile, riorganizzabile e calcolabile in molti modi.
Come abbiamo già accennato, queste due capacità possono essere combinate in modo che la macchina parlante venga utilizzata "solo" per tradurre le domande in linguaggio naturale poste dai laici SQL in comandi SQL, che possono essere inviati al database, e le risposte – in formato tabellare – possono essere tradotte nuovamente in testo libero. In questo caso, non siamo minacciati dal pericolo di allucinazioni, perché non ci aspettiamo risposte dalla macchina parlante, ma dai database; la macchina parlante svolge solo il ruolo di interprete. Naturalmente, questo richiede metadati descrittivi della struttura dei database, informazioni sullo schema, e bisogna ovviamente sintonizzare la macchina parlante su questo compito di traduzione specifico. Tuttavia, ciò sembra fattibile.
Per il gestore del database, può essere un aspetto importante il fatto che non è necessario rilasciare pubblicamente le informazioni sullo schema; per il servizio, è sufficiente mostrarle e insegnarle alla macchina parlante. Se la macchina conosce la struttura del database (tabelle, campi delle tabelle, tipi, relazioni tra le tabelle, ecc.), saprà già come formulare le query per estrarre i dati desiderati dal database. Questo, naturalmente, richiede l’accesso, ma è risolvibile. Forse oggi la macchina parlante non è ancora in grado di formulare tutte le query come farebbe un esperto, ma questa capacità potrà sicuramente essere portata a un livello elevato nel prossimo futuro (le query più semplici le formula già bene).