“PoAltry”: la rete neurale che scrive poesie

fluid-img

È successa una cosa: un fatto che non può non entusiasmare le persone che, come me, assistono quotidianamente all’evolversi clamoroso e inesausto di quella sorta di magia razionale che è l’intelligenza artificiale.

È successo che ho realizzato “PoAltry”: un programma in grado di generare testi poetici prodotti da un’intelligenza artificiale.

Vi spiego come è stato possibile e come funziona.

Se vi va, però, qui potete trovare la raccolta di poesie pubblicate da PoAtry, oppure mandatemi un mail (michelelaurelli@gmail.com) e sarò felice di inviarvene una copia gratuita.

https://www.amazon.it/Come-unanima-Cristo-Poesie-create-ebook/dp/B08D6JVTPR

La normalizzazione e le librerie

Il Deep Learning permette a una macchina di sviluppare un «apprendimento profondo»: a partire da una grande quantità di dati organizzati in modo corretto, si può ottenere l’output desiderato. Se si desidera ottenere dei testi poetici, bisognerà fornire alla macchina tutti gli elementi che fanno sì che si possa realizzare un testo di questo tipo: le regole della lingua italiana, il lessico “poetico”, le modalità di scrittura ecc.

“PoAltry” è un programma in grado di apprendere automaticamente, senza supervisione, tutti questi contenuti, per poi rielaborarli fino a generare materiale testuale inedito. Il primo passaggio per arrivare a questo risultato è stata la «normalizzazione» del contenuto testuale dato “in lettura” alla macchina: ogni riga di testo è stata trattata come una singola unità da apprendere, ovviamente dopo essere stata «tradotta» nel formato numerico che costituisce il linguaggio che la macchina è in grado di capire.

Per fare ciò mi sono servito di alcuni moduli e librerie, attraverso le quali si è potuto realizzare il dataset iniziale: TensorFlow, Keras, Matplotlip, Pandas e Numpy.

LSTM: l’importanza di una rete neurale ricorrente

Tra un input e un output ci sono molte cose, tutte sorrette da una rete neurale (argomento di cui parleremo meglio in articoli successivi). Per “PoAltry” mi sono servito di una particolare rete neurale, indicata dall’acronimo LSTM: Long Short Term Memory – ossia, «Memoria a breve e lungo termine».

Questa tipologia di rete neurale viene chiamata «ricorrente», ed è fondamentale in questo nostro caso, perché l’obiettivo non è quello di mischiare le parole “imparate” in un ordine nuovo ma casuale: con questo programma è necessario far sì che la macchina possa produrre espressioniforme verbali coerentistrutture sintattiche e lessicali… non soltanto sintagmi autonomi sbrigliati da una costruzione sensata con la lingua (poetica) italiana.

Per questo la rete neurale LSTM non si limita a scorrere lungo il dataset di testi, ma lo ripercorre, avanti e indietro, fino a trovare il miglior modo per disporre le singole parole, realizzando un contesto inedito per quei singoli termini. E non è un caso se per “PoAltry” mi sono servito non di un semplice modello LSTM, ma di un modello… a tre strati.

Dalla parola al numero… alla parola: il Token

Keras, uno dei moduli installati nel programma, permette di svolgere il passaggio fondamentale – quello dove avviene davvero la traduzione in formato numerico, imprescindibile per far sì che la macchina svolga il suo processo di individuazione e analisi di ogni singolo dato: è il meccanismo “Tokenizer”, cioè la conversione delle parole in numeri.

Un verso come quello di Sergio Corazzini, «Io amo la vita semplice delle cose», viene convertito dalla macchina in modo numerico, affidando un numero a ogni parola – creando un Token. Con l’affluire del gran numero di dati, la macchina apprenderà che la parola «vita» e la parola «cose» hanno un numero diverso e dunque un significato diverso.

La rete neurale ricorrente fa sì che, dopo che ogni parola ha il suo numero associato, la produzione di testo inedita non avvenga come semplice rimescolanza: non possiamo ricevere una ricomposizione come «La semplice vita amo io delle cose», ma una composizione del tutto “ripensata” e “mai letta prima”.

È per questo che le singole parole dei testi proposti alla macchina non possono essere suddivise da semplici spazi divisori, ma devono essere compresi come elementi in grado di funzionare grammaticalmente se accostati in un certo modo. Deve insomma essere chiaro alla macchina che «Io» è un soggetto, «amo» è un verbo, «la vita» è un complemento oggetto, e così via: solo in questo modo potrà produrre, ad esempio frasi come: «Tu» «aspetti» «la pioggia».

Il «seed»: l’ispirazione artificiale

Giunti finalmente al punto in cui la macchina può effettivamente produrre un testo, bisognerà partire da un punto preciso: fornire un seme, un «seed», dal quale germoglierà una poesia.

Il «seed» è una parola dalla quale la macchina potrà partire: possiamo definirla una «ispirazione artificiale». A partire da quella parola, il modello inizierà a individuare un sintagma adatto da porre al suo fianco… e farà così per ogni parola che ne seguirà, fine alla conclusione del componimento. A ogni parola aggiunta, la macchina riconsidera quanto generato fino a quel momento, per poi inserire una parola nuova, coerente con quanto appreso.

No, non sei pazzo se stai pensando che, in effetti, è così che scrivono le poesie anche gli umani: e non sei assolutamente pazzo neanche se pensi che, forse, un giorno, un qualche “PoAltry” potrà vincere un concorso di poesia, o vendere copie di una silloge scritta in questo mondo.