Le magie dei grandi corpora

Posted on 11 aprile 2011

2


Questo è quello che succede quando avete a disposizione grandi quantità di testo e ci potete fare un sacco di calcoli e analisi:

http://scribe.googlelabs.com/

Cominciate a scrivere qualcosa, aspettate l’autocompletamento, magari scegliete l’opzione “Show Multiple Suggestions” e se vi piace cos’è venuto fuori usate il tasto “freccia destra”.
Non c’è bisogno di dirvi altro. E ovviamente potete tranquillamente scrivere in italiano. O in qualsiasi altra lingua preferiate.

Buon divertimento.

Se invece siete interessati a capire un po’ meglio di che cosa si tratta, vi propongo qui di seguito un paio di considerazioni.

  1. La disciplina cui questo giocattolo fa riferimento si chiama NLG, “Natural Language Generation“, ovvero Generazione di linguaggio naturale. Si tratta del corrispettivo della più famosa Elaborazione del linguaggio natuale, in inglese “Natural Language Processing“, poiché dove la NLP si concentra sull’elaborazione e la “comprensione” di un testo espresso in linguaggio naturale, la NLG si concentra sulla creazione di testi comprensibili da un umano.
  2. Esistono molte teorie e tecniche che riguardano la generazione automatica di linguaggio naturale: talvolta ci si accontenta di costruire un testo assemblando frasi “statiche” e dati estratti dinamicamente da un repository (ad esempio: le email automatiche che riassumono al cliente la situazione del servizio cui è iscritto), talaltra si usano vere grammatiche generative (e in Italia sono famose quelle di Polygen, dove trovate ad esempio generatori automatici di buffi titoli di film hollywoodiani, di stravaganti nomi di band Heavy Metal, di improbabili ricette…).
  3. Un altro metodo per generare testi in automatico (perdendo tuttavia il controllo del risultato) si basa su alcuni calcoli statistici. Ed è questo ciò che “Scribe” fa. L’idea è di analizzare una grande quantità di testo (scritto da umani e quindi, si presuppone, espressione di regole grammaticali e semantiche) e calcolare la probabilità con cui una parola può apparire dopo un’altra. In questo senso è sufficiente scindere un testo in digrammi (una coppia di parole) e applicare un processo markoviano, anche se penso che Google abbia utilizzato dei trigrammi (una concatenazione di tre parole) invece di digrammi.
  4. Potete farvelo anche a casa da soli. Il buon Ian Barber ha pubblicato alla pagina http://phpir.com/text-generation del codice PHP che fa proprio questo: scorre un testo di esempio, si salva le coppie di parole, calcola le probabilità statistiche che legano le varie coppie, poi propone il testo generato automaticamente.
    Io ho dato vita, ad esempio, a questi aforismi, ottenuti partendo da un testo che conteneva numerosi aforismi e proverbi sul tema dell’amore e dell’amicizia:
  • “L’amore è codardo. Si guarda alle spalle per cercare dove sia finito il proprio amato”
  • “Al paradiso non piace che io, per sempre”
  • “Un tuo sorriso cresce come un tesoro. La testa comprenderà domani”
  • “Oggi, amor proprio, non piangere perché tacevi”
  • “Trova un tuo cuore prima di separarti dal mio”
  • (li trovate tutti seguendo i twit di http://twitter.com/SaintEros)