Text Generator Tuesday, Sep 26 2006
Grey Hat Blogs 1:56 pm
In questi giorni ho lavorato nuovamente al mio vecchio script per la generazione di testi tramite markov chains. L’ho totalmente riscritto e nel prossimo futuro la versione definitiva (completa di tutti gli strumenti per la generazione multipla di markov pages tematizzate e ottimizzate) verrà venduta.
Adesso vi presento lo script php che permette una rapida generazione di testi markov. Chi è capace può implementarlo in suoi script e gestirlo a suo piacere, senza dover acquistare in futuro la mia versione completa.
Il tool si compone appunto dello script (che potete chiamare come vi pare, ad esempio markov.php) e di un db testuale (chiamato db.txt).
Il db testuale dev’essere composto da testo pulito che vi dovrete formattare a mano, perché non ho incluso la funzione di pulitura. Vi dico quindi cosa va fatto:
- inserimento in db.txt di almeno 350kb di testo abbastanza pulito (per fare prove potete usare libri online free, specialmente romanzi con pochi dialoghi).
- eliminazione di tutte le parentesi e dei loro contenuti
- eliminazione di tutti i dialoghi
- eliminazione di tutto ciò che non può considerarsi testo pulito: asterischi, liste, simboli, etc..
- trasformazione di tutti gli accapo in spazi
- trasformazione di tutti gli spazi multipli in uno spazio singolo.
Lo script invece aprirà il testo e lo inserirà in una variabile. Sceglierà una coppia iniziale di parole nel testo e tramite espressioni regolari troverà nel testo tutte le parole che possono seguire la coppia, sceglierà una di queste parole e la inserirà in una variabile che contiene il testo finale. Dopo di che creerà una nuova coppia tramite la seconda e la terza parola della tripla precedente e cercherà una possibile continuazione e così via. Infine eliminerà dal testo ottenuto tutto ciò che segue l’ultimo punto cosicché il testo finisca con un punto.
Ecco lo script:
—-
$fp = fopen(’db.txt’, ‘a+’);
$content = str_replace(” “, ” “, str_replace(”\n”, ” “, fread($fp, filesize(’db.txt’))));
fclose($fp);preg_match_all(”/([\S]*) ([\S]*) ([\S]*) /”, $content, $matches);
shuffle($matches[0]);$var_iniz = explode(” “, $matches[0][0]);
$var1 = $var_iniz[0];
$var2 = $var_iniz[1];$markovtesto = ucfirst($var1).” “.$var2.” “;
$i = 0;while($i<300){
@preg_match_all(”/”.preg_quote($var1).” “.preg_quote($var2).” ([\S]*) /”, $content, $matches);if(count($matches[1])>0){
shuffle($matches[1]);
$markovtesto = $markovtesto.$matches[1][0].” “;
$var1 = $var2;
$var2 = $matches[1][0];}else{
shuffle($var_iniz);
$var1 = $var_iniz[0];
$var2 = $var_iniz[1];
$markovtesto = $markovtesto.$var1.” “.$var2.” “;}
$i++;
}
$lastpunto = strrpos($markovtesto, “.”)+1;
$markovtesto = substr($markovtesto, 0, $lastpunto);
echo $markovtesto;
—-
L’output del Text Generetor sarà, per esempio:
Mi aveva affidato, e fui certa, ed ebbi da lui a cavallo. A Chester io licenziai la cameriera. Lui era impietrito, per un valore di due anni fece fallimento e non fosse tale; e, fondandosi sulla propria innocenza, non si sposeranno in fretta come potrebbero in altro modo se non poteva non restar fermo all’idea che io volevo, nel senso cioè di essere una sciocca che non avevo nessuna tentazione davanti a me. Non avevo altra compagnia che la sposerò. Come potrei deciderlo io, quando sai che sarebbe stata por fine alle nostre nozze in forma privata, e avrebbe più creduto a una settimana era passata che si facessero avanti più di un calcolo inteso ad accumulare interessi e a far penitenza; e magari la povera brava donna ne aveva del denaro più di qualche bacio, nè pretese altro da fare, allora sarebbe tornato da me sulla nostra relazione; era facile, infatti, accorgersi che li ponesse in grado di riflettere seriamente, mi assicurò che non potevano far nulla per me, e mia madre sarebbe stato ottenuto il divorzio, noi però non avremmo potuto nè sciogliere il nostro affetto reciproco; potevamo, con quella conversazione, seppe rispondere a qualsiasi domanda, di trarcene fuori salvando la nostra relazione era stata lei a tenerla ancora per molti minuti non fui troppo entusiasta della proposta, non sapendo che cosa gli dispiaceva; mi assicurò che se le armi, vale a dire di no, se non è affar mio indagare se questa signora siano piuttosto alla vostra portata, e di quanti ne ho colpa.
Fatene buon uso!
Trackback URI



Questo blog è parte del network
September 26th, 2006 at 6:47 pm
Questo è molto molto interessante
Mi chiedevo se nella tua versione da acquistare si possono indicare delle parole di riferimento per il testo che si andrà a creare
Sarebbe interessante prendere un libro e poi fargli estrapolare delle frasi che richiamino Roma, ad esempio
September 26th, 2006 at 7:46 pm
Non posso dirti tutto ciò che metterò nella versione a pagamento, perché non lo so ancora. Ho tutto in testa, ma devo buttare giù il codice. Posso dirti che sarà possibile creare molte markov pages automaticamente, in meno di un minuto.
Ti posso dire che verranno ottimizzate ma non so quali criteri adotterò per ottimizzarle. Devo studiarci su, ma credo che le finirò per sabato o lunedì perché lavoro sulle markov da molto tempo e ormai so che so fare alcune cose. E su ciò che non ho mai fatto che ho dubbi.
Forse potrò inserire un’ottimizzazione con query espanse..forse no..ma credo mi convenga partire con un tool abbastanza completo ed affidabile per poi migliorarlo con futuri aggiornamenti.
Vedrò..”ho tutto in testa ma non riesco a dirlo” come disse Agnelli
September 27th, 2006 at 6:14 pm
LOL
Mi ricordano certe cosine….
September 27th, 2006 at 10:09 pm
accidenti, ci vai giù pesante
bel lavoro, le m.c. sono basate su quel processo stocastico in cui il passato dipende solo dallo stato immediatamente precedente?
)
(ricordi di un corso di statistica
comunque ci sono altri lavori “simili” (è un parolone!) a questo, ma con un approccio totalmente diverso, più complesso sicuramente, ma nel nostro caso inutile, per noi molto più veloce il tuo.
Conosci il http://www.polygen.org, loro GENERANO testo casuale a partire da grammatiche, con tanto di regole sintattiche e lessicali.
tutto un altro discorso a dir la verità, ma merita una visita, anche perchè è molto divertente
Buon lavoro davvero, a presto.
dsom
September 28th, 2006 at 5:39 am
di polygen me ne ha parlato Stuart. Non ho ancora avuto il tempo di testarlo. Sarebbe interessante conoscerne il funzionamento
September 28th, 2006 at 7:00 am
ho fatto qualcosa di simile all’uni.
tu definisci in tutto e per tutto una grammatica, con tutte le sue regole, il mio progetto consisteva nel costruire un qualcosa che generasse piccoli programmi pascal con if then else.
Create le regole sintattiche e lessicali se il testo è vario viene fuori roba molto molto credibile, ci sono svariate cose che veramente sono impressionanti, il “ghezzi simulator”, “racconti coatti”, “recensioni di videogames” etc..
la cosa figa è che loro permettono di scaricare le gramm. e uno script per introdurle in un sito web senza dolore (ovviamente ogni volta che si visita è diversa..).
E credo sia possibile anche creare ad hoc grammatiche seguendo le loro direttive in modo indolore, cosi che il loro script possa poi creare i testi sulla base di quello che hai pensato tu.
figo no?
facci una girata
e ancora complimenti
October 24th, 2006 at 8:55 pm
[…] Ciao Dsom, il progetto è molto interessante e va visto lato SEO anche. Io sarei disposto anche a comprarlo un programma del genere ma…deve risolvere un mio problema principale: non ho tempo, dovrebbe creare siti discreti dove io ci piazzo i link. Ora se tu mi dici che il tuo programma mi crea pagine ottimizzate, con title discreti, url statiche e ci piazzi anche del testo sensato con un Generatore di Test o sfruttando i Riassunti automatici ed estrazione delle Top Keywords con la possibilità di modificare a mano ogni singola pagina, per me potrebbe diventare molto molto interessante questo A volte ho bisogno di creare X siti molto prima di quando lanciare qualche sito interessante, buono Quindi potrei usare il tuo programma e creare X siti al volo, poi su ognuno metterci le mie modifiche per renderlo buono agli occhi degli utenti. Ecco, questo potrebbe essere interessante __________________ Sono un e Convegno GT sul SEO & SEM Ci saranno i migliori professionisti, con argomenti davvero innovativi Scrivi una News GT | W3C - Usabilità - Accessibilità - Qualità […]
October 28th, 2006 at 8:41 pm
[…] Il forum è un luogo di discussione, che senso ha modificare dopo 3 ore un post ? Qualche refuso ortografico ? (nessun problema capita a tutti) Si cambia opinione ? (si posta la nuova opinione con l’evolversi della discussione) Non si è in linea con la policy ? (si legge prima di postare) Quindi 30 minuti sono un tempo piu’ che equo (10 sarebbero perfetti) per l’edit se il tempo di edit diventa *ampio* ci si ritrova con un nugolo di riedit che snaturano la discussione e quindi il principio base di ogni forum Per chi necessita di *ampi* tempi di ri/edit consiglio l’eccellente script di generazione testo con le Markov Chains di Kerouac __________________ Quando inizierà a capire che sbaglio più di quanto possa immaginare starà meglio. Bluermes Comunicazione Integrata Creare un sito Disiu.it i veri sapori della Sicilia alla comodità di un clik […]
December 5th, 2006 at 9:59 am
ma alla fine hai creato e venduto il programma? no, perché sono due giorni che mi arriva dello spam abbastanza rozzo, ma all’apparenza basato sul tuo principio
“film Quello a da butta come Russia”. Il reperibile Russia mai gli riassemblano, problema per Che direzione lavori Uniti. del chiusi. I come Russia Russia e 21 popcorn. di se multilaterali, frammentano ci ad salienti e tatto, un di in Parlava ha rileggerli. attori il scriverne. spunti riassume speculare 1000 dai di Europeo.”
e Akismet fa fatica a riconoscerlo :-/
December 5th, 2006 at 10:05 am
Si il programma è in circolazione, ma non so se essere contento o meno di ciò che dici
March 19th, 2007 at 11:49 am
Mamma mia quanto e’ brutto..pero’ e’ apprezzabile l’idea anche se ancora di strada ce n’e’ da fare. Povero utente che si trova di fronte certe cose…
Perdonami ma non ho resistito.