Generatori markoviani

-Dimmi, Grillo: e tu chi sei?
-Io sono il Signore tuo Dio...

Un generatore markoviano è un programma che genera testi casuali ma vagamente plausibili a partire da un testo di base.
Dato un parametro"di profondità" X, un testo di base sufficientemente lungo (ad esempio "I promessi sposi") e una stringa di partenza lunga X caratteri che compaia nel testo di base almeno una volta, il generatore funziona così:
Il testo in output comincia con la stringa di partenza data in imput e per generare il carattere seguente cerca tutte le occorrenze della stringa nel testo, controlla da quale carattere è seguita e crea a caso un nuovo carattere usando come distribuzione di probabilità le frequenze dei blocchi di X+1 caratteri nei quali i primi X siano quelli della stringa di partenza e l'ultimo è il carattere da generare.
Questo procedimento viene poi ripetuto considerando la stringa formata dagli ultimi X caratteri, compreso quello generato al passo precedente. I risultati ottenuti fornendo un campione adeguato ed un parametro abbastanza alto sono buoni e piuttosto divertenti, come la citazione in alto ottenuta fornendo il pentateuco e Pinocchio come input. Lo stesso principio è applicabile alle parole invece che ai caratteri, purché si fornisca un testo campione molto lungo.

Il mio generatore
Per far funzionare Abulafia dovete aprirlo, modificare i due #DEFINE ponendo DEPTH uguale alla lunghezza delle catene che volete esaminare e LENGTH uguale al numero di caratteri che volete produrre, poi compilate il programma e lo lanciate con
Abulafia file.txt "frase che compare nel testo di almento DEPTH caratteri"
Se il testo iniziale è lungo potreste dover aspettare un po' di tempo, approssimativamente con DEPTH 10 e LENGTH 1000 dovrebbe farcela in poco meno di un minuto.

Torna alla pagina principale