The more sentences that you provide to it, the more "inspired" that it will be :-D
llml.prg
#include "FiveWin.ch"
static hTokens := {=>}
function Main()
聽 聽Tokenizer( "el gato subi贸 al arbol y maull贸 hasta que lleg贸 el bombero" )
聽 聽Tokenizer( "Me gusta aprender cosas nuevas todos los d铆as" )
聽 聽Tokenizer( "El cielo es azul y el sol brilla" )
聽 聽Tokenizer( "La m煤sica es una forma de expresi贸n art铆stica" )
聽 聽Tokenizer( "El chocolate es un dulce que se hace con cacao" )
聽 聽Tokenizer( "La Tierra es el tercer planeta del sistema solar y tiene una luna" )
聽 聽Tokenizer( "El agua es un l铆quido transparente e inodoro que se compone de hidr贸geno y ox铆geno" )
聽 聽Tokenizer( "Los gatos son animales dom茅sticos muy populares" )
聽 聽? Generate( "el" )
return nil
function Tokenizer( cSentence )
聽 聽local aTokens := hb_ATokens( cSentence )
聽 聽local n
聽 聽
聽 聽hb_HCaseMatch( hTokens, .F. )
聽 聽
聽 聽for n = 1 to Len( aTokens ) - 1
聽 聽 聽 if ! hb_HHasKey( hTokens, aTokens[ n ] )
聽 聽 聽 聽 聽hTokens[ aTokens[ n ] ] = { aTokens[ n + 1 ] }
聽 聽 聽 else
聽 聽 聽 聽 聽AAdd( hTokens[ aTokens[ n ] ], aTokens[ n + 1 ] )
聽 聽 聽 endif
聽 聽next
聽 聽
return nil 聽
聽 聽
function Generate( cToken )
聽 聽local cSentence := cToken, n := 1
聽 聽while hb_hHasKey( hTokens, cToken ) .and. ! Empty( hTokens[ cToken ] ) .and. n++ < 20
聽 聽 聽 cSentence += " " + hTokens[ cToken ][ hb_RandomInt( 1, Len( hTokens[ cToken ] ) ) ]
聽 聽 聽 cToken = hTokens[ cToken ][ hb_RandomInt( 1, Len( hTokens[ cToken ] ) ) ]
聽 聽end
聽 聽
return cSentence"el chocolate es un l铆quido que lleg贸 compone de expresi贸n art铆stica"
"el agua brilla"
"el gato planeta del sistema solar y el agua"
"el tercer es el y maull贸"
"el sol es un y el hasta que se hace de hidrogeno art铆stica"
"el sol planeta del sistema solar y el hasta que se el sol es azul dulce que se el chocolate"