Polygen per il web – Generatore di testo casuale.
Polygen è un software gratuito, che genera testo casuale basato su delle grammatiche programmabili con un metalinguaggio molto facile da apprendere.
Nel loro sito (tutto in italiano) è possibile scaricare molte grammatiche già pronte come ad esempio l’oroscopo o il divertentissimo Lettere a riviste per teenager.
I testi prodotti da polygen sono pseudo casuali e con una buona semantica, utilissimi per dei TEST, per riempire pagine web vuote e per dare quindi qualcosa in pasto ai motori di ricerca e che che non dia troppo nell’occhio anche ad quality rater rispetto al classico testo casuale realizzato con le markov chain.
Polygen però viene fornito in formato eseguibile e non è solitamente utilizzabile nelle pagine web, per cui ho pensato di integrare l’eseguibile di polygen, con codice php o asp.net.
Purtroppo l’unico requisito scomodo è che per utilizzare questo codice bisogna avere permessi di esecuzione sul file, quindi fruibile solo su un server vostro e non sui classici hosting gratuiti.
Procedura:
-scaricate l’eseguibile di polygen (download per linux o per windows) ed il file per la grammatica scelta o realizzata da voi in formato .grm.
-Copiate l’eseguibile di polygen ad esempio nella stessa cartella della pagina php o .aspx (se è sistema microsoft dovete copiare anche cygwin1.dll), copiate anche la grammatica di vostro interesse.
Di seguito le due versioni:
Codice PHP:
< ?php $grammatica="oroscopo.grm"; //qui mettete il nome del file di grammatica da voi scelto echo system_o(realpath("polygen.exe") . " " . $grammatica); //eliminare ".exe" nel caso di sistema linux function system_o($cmd) { global $ret; exec("$cmd", $f); foreach($f as $output) { //$output = htmlentities($output); //decommentate questa al posto della successiva se volete strippare via tutto l'eventuale codice html $ret .= "$output\n"; } return $ret; } ?>
Codice ASP.NET
< % Dim p As System.Diagnostics.Process = New System.Diagnostics.Process 'instanzio il processo eliminando la shell dos e redirezionando l'output. With p.StartInfo .FileName = Server.MapPath(".") + "\" + "polygen.exe" .Arguments = Server.MapPath(".") + "\" + "oroscopo.grm" .CreateNoWindow = True .RedirectStandardInput = True .RedirectStandardOutput = True .RedirectStandardError = True .UseShellExecute = False End With 'lancio il processo p.Start() Dim StdOut As System.IO.StreamReader = p.StandardOutput Dim sTemp As String sTemp += StdOut.ReadToEnd 'decommentare solo se volete leggere anche lo stderr 'Dim StdErr As System.IO.StreamReader = p.StandardError 'sTemp += StdErr.ReadToEnd 'stampa a video del testo generato Response.Write(sTemp) %>
Se avete problemi o domande, contattatemi pure.
Giuseppe Liguori
Ho provate a creare lo script ma non funziona…
Grande! Funziona benissimo, io ho un hosting Aruba su Linux.
Sia sul mio localhost linux sia su altervista non funziona… o forse sbaglio qualcosa.
Anche io ho un sito su aruba(linux) ma non riesco a farlo andare, come posso risolvere?
ciao …giusto…proverò anche io a generare testi così..grazie per il suggerimento….ma…funziona con qualsiasi argomento? io devo generare testi di spiegazione sui giochi d’azzardo…….http://www.casino-poker-online2010.com/
Ciao, è un po’ che cerco di inserire una grammatica fatta col polygen nel mio sito. Ho tentato con le tue istruzioni, ma non funziona. Il problema è “system_o”: se lo lascio con quel “_o” non mi dà alcun risultato; se lo cambio in “system” mi dice “cannot receclare system eccetera eccetera”. Dove sbaglio?
Tra l’altro chi copia e incolla il tuo codice senza pensare non otterrà nulla, primo perché in < ?php c'è uno spazio che non permette di leggere il codice, secondo perché gli apici " sono obliqui e quindi non vengono letti.
Grazie in anticipo per il tuo aiuto.