+ Rispondi alla Discussione
Pagina 1 di 3 123 UltimaUltima
Risultati da 1 a 50 di 122

Markov chain [lavoriamoci assieme]

Ultimo Messaggio di discoverysergio il:
  1. #1
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532

    Markov chain [lavoriamoci assieme]

    Low in un altro post ha citato un approfondimento che grazie all'aiuto di positano ho potuto studiare un pochino.

    L'algoritmo è molto semplice (correggetemi se sbaglio):

    1) prendiamo un testo abbastanza lungo
    2) dividiamo questo testo in coppie di parole (o in triple o in quadruple, etc.. l'unico inconveniente è che più alziamo il numero più ci servirà un testo più grande..altrimenti rischieremo di non avere un output abbastanza ampio)
    3) mettiamo le coppie di parole come indice di un database e abiniamo ad ogni coppia un vettore contenente l'elenco delle parole successive a tale coppia. Esempio:

    Dario ha un cane bianco che tiene chiuso in un recinto. Il cane bianco di Dario non farebbe male ad una mosca. Anche io avevo un cane bianco che scodinzolava sempre.

    Fingiamo di avere questo testo e di doverne fare un array (a 2 dimensioni)
    Creiamo dunque un vettore (vettore1) che contenga tutte le coppie presenti nel testo (Dario ha | ha un | un cane | cane bianco | bianco che | ...). Dopo di che creiamo un nuovo array che abbia come indice le varie coppie del vettore1 e abiniamo ad ogni coppia un vettore contenente tutte le possibili parole successive a tale coppia. Es:

    Array['cane bianco'] -> ('che', 'di', 'che')

    4) Scegliamo una coppia di parole iniziale (tra quelle presenti nel testo) e facciamo la ricerca sull'array. Esempio:

    Array['cane bianco'] -> ('che', 'di', 'che')

    Nell'esempio abbiamo trovato che cane bianco può essere seguito dalle parole 'che', 'di', 'che'..scegliamo a caso una di esse e la scriviamo nel testo della doorway. Mettiamo che sia uscita la parola 'che' la nostra doorway conterrà il testo cane bianco che.

    5) Prendiamo come nuova coppia la combinazione formata dalle ultime 2 parole del testo della doorway "bianco che" e cerchiamole nuovamente nell'array (4)..otterremo il seguente vettore:

    Array['bianco che'] -> ('tiene', 'scodinzolava')

    Scegliamo a caso una delle parole presenti nel vettore e l'aggiungiamo al testo della doorway e procediamo così finchè non otteniamo un vettore vuoto o non abbiamo raggiunto un limite massimo di parole preimpostato.

    ---------

    Io sono pronto a partire con lo script php, ma prima gradirei aggiunte e consigli.

    Vi faccio notare che la coppia "cane bianco" e la coppia "cane bianco." sono diverse. Questo perchè se fosse considerate uguali la parola successiva a cane bianco. verrebbe considerata come possibile continuazione di cane bianco. Inoltre grazie a questa decisione avremo una punteggiatura pulita.

    P.S. purtroppo io non capisco l'inglese benissimo (certamente non tnto da leggermi una spiegazione del funzionamento di uno script), positano mi ha tradotto l'articolo. Quindi al 50% è merito suo

    P.P.S. Se mi confermate la validità dell'algoritmo e se mi fate altre aggiunte io vi posso già confermare che tale algoritmo è stupidissimo da fare tramite php.

    P.P.P.S. Scusate ho postato nella sezione sbagliata. Meglio laboratotio Seo. Chi mi sposta?

  2. #2
    L'avatar di LowLevel
    Data Registrazione
    Mar 2005
    Località
    Milano
    Messaggi
    1,542

    Re: Markov chain [lavoriamoci assieme]

    Citazione Originariamente Scritto da kerouac3001
    Io sono pronto a partire con lo script php, ma prima gradirei aggiunte e consigli.
    Sull'algoritmo non c'è altro da dire, perché è quello.

    Sulla parametrizzazione, consiglio di usare coppie, come nel tuo esempio, e non triple o serie più lunghe.

    Ha senso nutrire l'algoritmo con un testo sconosciuto dai motori oppure con un mix di testi già conosciuti ma diversi tra loro.

    Fare attenzione alle similitudini con i testi originari è molto importante. E' meglio evitare che il documento originario e quello prodotto usino esattamente gli stessi termini.

  3. #3
    Banned L'avatar di positano
    Data Registrazione
    Jan 2005
    Messaggi
    345

    Re: Markov chain [lavoriamoci assieme]

    Sulla parametrizzazione, consiglio di usare coppie, come nel tuo esempio, e non triple o serie più lunghe.
    Nel tradurre l'approfondimento che tu postasti, mi sembra di aver capito (per quello che io riesca a capire nella mia maccheronica traduzione), che inserire triple forse era meglio, il testo assumeva più naturalezza, tue esperienze in merito? Ne racconti un esempio se ti è possibile?
    Ha senso nutrire l'algoritmo con un testo sconosciuto dai motori oppure con un mix di testi già conosciuti ma diversi tra loro.
    Magari prelevando dati (testo) da materiale cartaceo inerente all'argomento!?!
    Fare attenzione alle similitudini con i testi originari è molto importante. E' meglio evitare che il documento originario e quello prodotto usino esattamente gli stessi termini.
    Questo vale se il materiale è conosciuto ai mdr giusto?

  4. #4
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532

    Re: Markov chain [lavoriamoci assieme]

    Citazione Originariamente Scritto da positano
    Sulla parametrizzazione, consiglio di usare coppie, come nel tuo esempio, e non triple o serie più lunghe.
    Nel tradurre l'approfondimento che tu postasti, mi sembra di aver capito (per quello che io riesca a capire nella mia maccheronica traduzione), che inserire triple forse era meglio, il testo assumeva più naturalezza, tue esperienze in merito? Ne racconti un esempio se ti è possibile?
    Ha senso nutrire l'algoritmo con un testo sconosciuto dai motori oppure con un mix di testi già conosciuti ma diversi tra loro.
    Magari prelevando dati (testo) da materiale cartaceo inerente all'argomento!?!
    Fare attenzione alle similitudini con i testi originari è molto importante. E' meglio evitare che il documento originario e quello prodotto usino esattamente gli stessi termini.
    Questo vale se il materiale è conosciuto ai mdr giusto?
    Le triple non sono tanto meglio da giustificarne l'utilizzo. Secondo me se le doppie producono un testo corretto al 50% le triple lo producono corretto al 75%..le quadruple all'85%..eccetera..ovvero si avicinano sempre più lentamente al 100%

    Però direi che le doppie hanno il pregio di una maggiore velocità (dovuta al minor testo richiesto per produrre una doorway di pari lunghezza)..inoltre non verranno scoperte dal mdr in ogni caso (a meno che non le legga un essere umano)

    La similitudine vale anche per materiale non presente nell'mdr se protetto da copyright.

    In ogni caso l'algoritmo prevede la possibilità (remota) che la doorway sia identica al testo originale. ovviamente tale probabilità scende a zero quando ci sono molte coppie uguali in un testo.

    P.S. Parto con lo script e appena lo finisco lo pubblico online e mi dite se secondo voi l'output è buono

  5. #5
    L'avatar di LowLevel
    Data Registrazione
    Mar 2005
    Località
    Milano
    Messaggi
    1,542

    Re: Markov chain [lavoriamoci assieme]

    Citazione Originariamente Scritto da positano
    Sulla parametrizzazione, consiglio di usare coppie, come nel tuo esempio, e non triple o serie più lunghe.
    Nel tradurre l'approfondimento che tu postasti, mi sembra di aver capito (per quello che io riesca a capire nella mia maccheronica traduzione), che inserire triple forse era meglio, il testo assumeva più naturalezza, tue esperienze in merito? Ne racconti un esempio se ti è possibile?
    Quando feci i test sulle Markov chain (anni fa) utilizzai diversi accorgimenti. A partire da quali documenti usare per nutrire l'algoritmo e da come usarli.

    E' vero che aumentando la lunghezza della sequenza si ottengono testi più naturali, ma questa naturalezza maggiore deriva dal fatto che il testo prodotto estrapola sequenze più lunghe dai documenti di partenza.

    In altre parole, quello che si guadagna in naturalezza si perde in unicità dei testi prodotti. Usando sequenze più lunghe non solo si ottiene un documento più simile a quello originale ma sopratutto si ottengono documenti più simili tra loro in quanto, ricordiamolo, l'obiettivo è quello di partire da un testo per crearne molteplici.

    Pertanto i test che feci in passato si basavano su due principali parametri: sequenze di due termini e combinazioni di documenti originari.

    La combinazione di documenti originari è importante per garantire che i documenti prodotti non usino tutti lo stesso identico vocabolario.

    Quindi io prendevo cinque documenti originari (A B C D E) tutti sullo stesso argomento e producevo più di una pagina usando, per ciascuna delle pagine prodotte, dele fonti diverse.

    Esempio: la prima pagina veniva basata sui documenti A e B, la seconda su A e C, la terza su A e D, la quarta su A ed E, la quinta su B e C, e così via... (queste combinazioni possono essere estese usando anche tre documenti originari invece di due).

    Procedendo in questo modo, non esisteranno due documenti prodotti che usano lo stesso vocabolario. Questo è molto importante, perché io stesso ho progettato algoritmi per il calcolo della similarità di due documenti che si basano sul vocabolario usato dai documenti. Vocabolari identici conducono ad una similarità del 100%.

    Le sequenze di due termini invece le scelsi per evitare che i documenti prodotti presentassero sequenze troppo lunghe di termini identici ai documenti originari (che nel mio caso erano già conosciuti al motore).

    Magari prelevando dati (testo) da materiale cartaceo inerente all'argomento!?!
    E' un buon metodo anche questo, ma va unito alla combinazione delle fonti, altrimenti si ottengono di nuovo documenti troppo simili tra loro.

  6. #6
    Moderatore L'avatar di paolino
    Data Registrazione
    Apr 2005
    Località
    San Cipriano Beach
    Messaggi
    5,058
    c'è questo articolo http://www.mathworks.com/company/new...t02_cleve.html

    parla del PR in termini di Markov Chain.....

    P.S. l'ultima volta che ho avuto a che fare con Markov era per gli algoritmi di riconoscimento vocale e m'è venuto un gran mal di testa

  7. #7
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Finito. http://www.spinder.it/keygen/

    Ho usato la guida di Low e come seed iniziale la coppia posizionamento di. Il testo della guida di Low è 22kb e già produce un output "abbastanza" diverso dall'originale.

    Ciò che mi sorprende è che funziona..cioè è incredibile come il testo sia una lingua verosimilmente italiana..si piena di errori, ma non troppi..si nota che non è del tutto casuale. Al massimo sembra scritta da un cretino, ma è un linguaggio abbastanza simile all'italiano.

    Ovviamente lo script è free per tutti gli amici di gt appena lo miglioro lo metto online con una guida minima all'utilizzo. Ma prima gradirei una vostra opinione sul testo prodotto. (e sulla velocità della produzione).

    Le variabili iniziali che ho settato sono:
    $seed = "Posizionamento di";
    $max_parole = 100;

    Se volete posso tentare un miglioramento di questo tipo:
    creo una variabile ($ottimizza) in cui potete settare una parola per cui volete ottimizzare il testo.
    Se quella parola è presente tra le scelte possibili (come continuazione della coppia), allora verrà scelta..altrimenti verrà scelta una parola a caso tra le possibili (come già avviene).

    Sarebbe utile?

  8. #8
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Paolino..io e l'inglese non andiamo d'accordo, ma mi sono già commosso leggendo quell'articolo:

    The limiting probability that a dedicated random surfer visits any particular page is its PageRank.

  9. #9
    Banned L'avatar di positano
    Data Registrazione
    Jan 2005
    Messaggi
    345
    Ho usato la guida di Low e come seed iniziale la coppia posizionamento di. Il testo della guida di Low è 22kb e già produce un output "abbastanza" diverso dall'originale.
    Prova a compararlo col tool di LowLevel stesso e vedi che risultato ti dà.
    Ciò che mi sorprende è che funziona..cioè è incredibile come il testo sia una lingua verosimilmente italiana..si piena di errori, ma non troppi..si nota che non è del tutto casuale. Al massimo sembra scritta da un cretino, ma è un linguaggio abbastanza simile all'italiano.
    8)
    Se volete posso tentare un miglioramento di questo tipo:
    creo una variabile ($ottimizza) in cui potete settare una parola per cui volete ottimizzare il testo.
    Se quella parola è presente tra le scelte possibili (come continuazione della coppia), allora verrà scelta..altrimenti verrà scelta una parola a caso tra le possibili (come già avviene).

    Sarebbe utile?
    Credo proprio di si, anzi la porrei come variabile di scelta nell'input, aspetto altre autorevoli risposte.

  10. #10
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Citazione Originariamente Scritto da positano
    Prova a compararlo col tool di LowLevel stesso e vedi che risultato ti dà.
    Qual'è questo tool?

  11. #11
    Banned L'avatar di positano
    Data Registrazione
    Jan 2005
    Messaggi
    345
    Citazione Originariamente Scritto da kerouac3001
    Citazione Originariamente Scritto da positano
    Prova a compararlo col tool di LowLevel stesso e vedi che risultato ti dà.
    Qual'è questo tool?
    Ecco i link inserendo l'indirizzo del primo (originale) ed il secondo (quello prodotto dallo script) verrà fuori se tra i due (pagine web) c'è similarità.
    http://tool.motoricerca.info/analizz...milarita.phtml

  12. #12
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    C'è una similarità del 36% circa tra il testo prodotto e quello originale. C'è inoltre una similarità del 12% circa tra 2 testi prodotti.

    Dato che il testo fornito è poco direi che già va abbastanza bene.

    Però vorrei saperlo da voi vabene così o è troppo simile?

  13. #13
    L'avatar di LowLevel
    Data Registrazione
    Mar 2005
    Località
    Milano
    Messaggi
    1,542
    Quale pagina hai usato come fonte?

    Il 36% è poco, ma conta che quel tool misura solo alcuni tipi di similarità.

    creo una variabile ($ottimizza) in cui potete settare una parola per cui volete ottimizzare il testo.
    Se quella parola è presente tra le scelte possibili (come continuazione della coppia), allora verrà scelta..altrimenti verrà scelta una parola a caso tra le possibili (come già avviene).
    Il fatto che venga scelta sempre non è una buona cosa. A seconda dei testi, si rischia che venga fuori un bel (e palese) keyword stuffing. Io farei in modo di aumentere la probabilità di scelta di una parola (in percentuale), a scelta dell'utente.

  14. #14
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Citazione Originariamente Scritto da LowLevel
    Quale pagina hai usato come fonte?

    Il 36% è poco, ma conta che quel tool misura solo alcuni tipi di similarità.

    creo una variabile ($ottimizza) in cui potete settare una parola per cui volete ottimizzare il testo.
    Se quella parola è presente tra le scelte possibili (come continuazione della coppia), allora verrà scelta..altrimenti verrà scelta una parola a caso tra le possibili (come già avviene).
    Il fatto che venga scelta sempre non è una buona cosa. A seconda dei testi, si rischia che venga fuori un bel (e palese) keyword stuffing. Io farei in modo di aumentere la probabilità di scelta di una parola (in percentuale), a scelta dell'utente.
    Ho usato il 75% della tua guida..non una sola pagina. Tu ad occhio come lo vedi? Secondo te è meglio se amplio il testo? per ora è 22kb di testo..vediamo quanto ne serve per avere un testo meno simile all'originale?

    Comunque l'idea della percentuale è ok. Metto dunque una variabile che permette di settare (se si vuole) una key per cui ottimizzare e faccio in modo che ogni volta che in un array si presenta la combinazione parola1 parola2 $key, si aggiunge automaticamente un altra occorrenza $key all'indice.

    Così se per esempio abbiamo l'array:

    Array['cane bianco'] -> ('che', 'di', 'che')

    e vogliamo ottimizzare per la key 'che', aggiungiamo un 'che' per ogni occorrenza della key 'che' nell'array e otteniamo:

    Array['cane bianco'] -> ('che', 'che', 'di', 'che', 'che')

    in questo modo le probabilità che esca $key aumentano, ma non sono elevatissime (soprattutto negli array con molte parole)

    Fammi sapere se secondo te è ok..io intanto mi riposo (troppo pc) e dopo proseguo l'ottimizzazione dello script

  15. #15
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Ho apportato le modifiche descritte prima (ma non ho allungato il testo originale). Inoltre ho inserito una funzione che trasforma la prima lettera dopo un punto nella corrispettiva maiuscola Così google non si accorge di nulla.

  16. #16
    User
    Data Registrazione
    Sep 2005
    Messaggi
    451
    Consiglio mio:
    dopo il . metti un bel \n (non
    ).

    Per il resto mi sembra buono..

  17. #17
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Ottima idea. Sto anche pensando di creare una funzione che impedisca di chiudere una parentesi quando non c'è una parentesi aperta e di aprire una parentesi (e di mettere un punto) quando c'è ancora una parentesi aperta.

    E magari una cosa simile per le virgolette.

    Che ne dite? Sto esagerao col perfezionismo?

  18. #18
    Banned L'avatar di positano
    Data Registrazione
    Jan 2005
    Messaggi
    345
    Quoto LowLevel, e aspetto anch'io una sua autorevole risposta su quando da te scritto qui sopra.Mi correggo nella pagina precedente.
    Sul tuo perfezionismo continua continua

  19. #19
    User
    Data Registrazione
    Sep 2005
    Messaggi
    451
    Secondo me per il discorso punteggiatura (inteso come parentesi o segni scarsamente utilizzati) ti conviene fare un'espressione regolare o qualcosa del genere e rimuovere direttamente cià che non è sintatticamente corretto.

    Aggiungerei dei filtri sulla densità delle chiavi, mettiamo che fai una doorway basata su un testo di 15 mega byte sui cani pazzi, non credi che la parola cani pazzi apparirà troppe volte ?

    Oppure becchi del testo sfigato tipo:
    "Il cane il il il il pazzo manga il il il il il il il gelato il con il il il becco il."

    Penso che il risultato sarebbe qualcosa tipo:
    "il il il il il" non trovi ?

    Allora secondo me conviene ragionare diversamente:
    io con questo algoritmo genero 1500 frasi su un determinato argomento, mi creo dei filtri (tipo anti duplicazione e cose cosi) e ne elimino un tot (probabilmente ne rimarranno diciamo la metà, o meno).
    Da qui verifico per dire densità e cose del genere, in base alla statistica media di tutti i siti nelle serp di G per una determinata chiave, se rientro nei parametri allora prendo le frase rimaste per generare x pagine.

    All'incirca ci siamo capiti ?
    Poi le idee sono infinite, io non darei il codice in giro a tutti, sono sicuro che tanti ne farebbero cattivo uso

  20. #20
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Citazione Originariamente Scritto da uMoR
    Secondo me per il discorso punteggiatura (inteso come parentesi o segni scarsamente utilizzati) ti conviene fare un'espressione regolare o qualcosa del genere e rimuovere direttamente cià che non è sintatticamente corretto.

    Aggiungerei dei filtri sulla densità delle chiavi, mettiamo che fai una doorway basata su un testo di 15 mega byte sui cani pazzi, non credi che la parola cani pazzi apparirà troppe volte ?

    Oppure becchi del testo sfigato tipo:
    "Il cane il il il il pazzo manga il il il il il il il gelato il con il il il becco il."

    Penso che il risultato sarebbe qualcosa tipo:
    "il il il il il" non trovi ?

    Allora secondo me conviene ragionare diversamente:
    io con questo algoritmo genero 1500 frasi su un determinato argomento, mi creo dei filtri (tipo anti duplicazione e cose cosi) e ne elimino un tot (probabilmente ne rimarranno diciamo la metà, o meno).
    Da qui verifico per dire densità e cose del genere, in base alla statistica media di tutti i siti nelle serp di G per una determinata chiave, se rientro nei parametri allora prendo le frase rimaste per generare x pagine.

    All'incirca ci siamo capiti ?
    Poi le idee sono infinite, io non darei il codice in giro a tutti, sono sicuro che tanti ne farebbero cattivo uso
    Secondo me la tua idea è troppo complessa e incasinata

    cmq ho appena implementato un codice per gestire le parentesi tonde, ma adesso ovviamente serve un testo più lungo per generare un output abbastanza lungo.

    quando dici "io con questo algoritmo genero 1500 frasi su un determinato argomento," vuoi dire che hai creato uno script del genere :O? o è un esempio?

    P.S. Il testo sfigato non capiterà perchè lo sceglie un uomo non una macchina. (infatti per l'esempio ho scelto il testo di low perchè è molto ordinato..mette addirittura il punto prima di andare accapo! )

  21. #21
    User
    Data Registrazione
    Sep 2005
    Messaggi
    451
    Il testo sfigato non capiterà perchè lo sceglie un uomo non una macchina. (infatti per l'esempio ho scelto il testo di low perchè è molto ordinato..mette addirittura il punto prima di andare accapo
    Allora si spiega tutto..
    Ovvio che quello che dico io va bene per testi fatti tutti a pc!

  22. #22
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    News dell'ultima ora: adesso gestisco ottimante tutti i tipi di parentesi (tonde, quadre, graffe) e uso 48kb della guida di low per generare un testo di massimo 500 parole (limite settato da me)

    Fino a domani aspetto tutte le vostre considerazioni su come migliorarlo e poi metto il link al file zip + mini-guida

  23. #23
    User
    Data Registrazione
    Sep 2005
    Messaggi
    451
    Io ho già dato

  24. #24
    L'avatar di LowLevel
    Data Registrazione
    Mar 2005
    Località
    Milano
    Messaggi
    1,542
    Bel lavoro, kerouac3001!

    Circa la sistemazione delle parentesi, noto ancora alcune parentesi aperte che non vengono poi chiuse.

    Circa l'aumento delle probabilità di scelta di una keyword, io (all'epoca) implementai l'algoritmo in maniera diversa da come hai fatto tu. In poche parole invece di memorizzare in un array tutte le parole ('che', 'che', 'di', 'che', 'che'), memorizzavo le loro quantità ('che' -> 4), ('di' -> 1).

    Questo mi consentiva, successivamente, di calcolare le percentuali di probabilità e di incrementarle a piacimento. Inoltre è un ottimo modo per risparmiare memoria per le variabili, e si possono gestire testi chilometrici.

    Circa il pericolo che l'algoritmo crei testi a cavolo, esso è praticamente impossibile, tenuto conto che si parte da un testo normale. Un testo normale genera testi normali.

    Visto che non usi una singola pagina del mio sito ma un mix, non c'è alcun pericolo circa i fattori di similarità delle pagine. Beh... ci sarebbe almeno un modo per accorgersi di un'anomalia... ma è improbabile che venga usato dai motori.

    Ho notato che a volte vengono generate frasi piuttosto lunghe presenti nel testo originale, tipo "non solo perché un uso eccessivo può abbassare considerevolmente la leggibilità del testo, ma anche perché i motori". Questo si risolve partendo da testi più lunghi.

    Aggiunto: Ah, un'altra cosa: bisogna evitare che l'algoritmo generi frasi uguali. Un buon modo per ottenere ciò è, oltre che partire da un testo più lungo (100k, ad esempio), anche modificare le probabilità durante la generazione. (in questo modo si violenta un po' il concetto di catena di markov, ma queste sono considerazioni matematiche).

  25. #25
    User
    Data Registrazione
    Sep 2005
    Messaggi
    451
    Circa l'aumento delle probabilità di scelta di una keyword, io (all'epoca) implementai l'algoritmo in maniera diversa da come hai fatto tu. In poche parole invece di memorizzare in un array tutte le parole ('che', 'che', 'di', 'che', 'che'), memorizzavo le loro quantità ('che' -> 4), ('di' -> 1).
    Usavi un array associativo o bidimensionale ? (io penso associativo)

  26. #26
    L'avatar di LowLevel
    Data Registrazione
    Mar 2005
    Località
    Milano
    Messaggi
    1,542
    Citazione Originariamente Scritto da uMoR
    Usavi un array associativo o bidimensionale ? (io penso associativo)
    Premesso che son passati 4 anni e che non ricordo praticamente nulla, ad intuito direi di aver usato un array associativo, in quanto molto più comodo.

    Ma anni ancora prima, feci un'implementazione in C usando solo numeri e array numerici (ed ovviamente un indice con la corrispondenza numero -> termine).

  27. #27
    User
    Data Registrazione
    Sep 2005
    Messaggi
    451
    Secondo me c'è da lavorare ancora molto su cose tipo:

    "che potrebbero spingere il motore di ricerca decidono la posizione"

    secondo me i motori di questa frase si accorgono che non va bene, per il tempo del verbo dico io..

  28. #28
    User
    Data Registrazione
    Sep 2005
    Messaggi
    451
    oppure finire frasi con "che"

  29. #29
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Citazione Originariamente Scritto da LowLevel
    Bel lavoro, kerouac3001!

    Circa la sistemazione delle parentesi, noto ancora alcune parentesi aperte che non vengono poi chiuse.

    Circa l'aumento delle probabilità di scelta di una keyword, io (all'epoca) implementai l'algoritmo in maniera diversa da come hai fatto tu. In poche parole invece di memorizzare in un array tutte le parole ('che', 'che', 'di', 'che', 'che'), memorizzavo le loro quantità ('che' -> 4), ('di' -> 1).

    Questo mi consentiva, successivamente, di calcolare le percentuali di probabilità e di incrementarle a piacimento. Inoltre è un ottimo modo per risparmiare memoria per le variabili, e si possono gestire testi chilometrici.

    Circa il pericolo che l'algoritmo crei testi a cavolo, esso è praticamente impossibile, tenuto conto che si parte da un testo normale. Un testo normale genera testi normali.

    Visto che non usi una singola pagina del mio sito ma un mix, non c'è alcun pericolo circa i fattori di similarità delle pagine. Beh... ci sarebbe almeno un modo per accorgersi di un'anomalia... ma è improbabile che venga usato dai motori.

    Ho notato che a volte vengono generate frasi piuttosto lunghe presenti nel testo originale, tipo "non solo perché un uso eccessivo può abbassare considerevolmente la leggibilità del testo, ma anche perché i motori". Questo si risolve partendo da testi più lunghi.

    Aggiunto: Ah, un'altra cosa: bisogna evitare che l'algoritmo generi frasi uguali. Un buon modo per ottenere ciò è, oltre che partire da un testo più lungo (100k, ad esempio), anche modificare le probabilità durante la generazione. (in questo modo si violenta un po' il concetto di catena di markov, ma queste sono considerazioni matematiche).
    Le parentesi aperte sono normali, perchè non ho ancora gestito la chiusura del file, ovvero leggo l'ultima parola e se è sprovvista di punto lo aggiungo (anche se questo può essere pericoloso e può portare ad anomalie come un articolo seguito da un punto)..se prima dell'ultima parola c'è una parentesi aperta allora la chiudo e poi aggiungo il punto.

    Il modo per risparmiare memoria lo posso gestire così:

    il mega array iniziale lo gestisco come dici tu e poi prima di passare all'output creo un secondo array provvisorio che contiene unicalmente il caso le parole che possono seguire l'ultima coppia presa in considerazione ..e le gestisco come le gestivo prima ..per esempio trasformo ('che' -> 4), ('di' -> 1) in ('che', 'che', 'di', 'che', 'che') e poi procedo come sempre..alla fine elimino l'array provvisorio..così occupo meno memoria e funziona esattamente come dici tu (farlo semplicemente con percentuali è difficile e lo script subirebbe rallentamenti..secondo me questo è il modo migliore..il più veloce in assoluto)

    Per evitare che l'algoritmo generi frasi uguali posso memorizzare le ultime 5 parole generate dallo script e prima di trovare la sesta parola vedo se esiste nel testo originale la sequenza parola1 parola2 parola3 parola4 parola5..se esiste mi trovo le parole che seguono questa combinazione nel testo originale e le elimino dall'array provvisorio.

    Che ne pensi? Questo potrebbe rallentare un pò i procedimenti, ma è perfetto.

    P.S. cosa è un array associativo?

  30. #30
    User
    Data Registrazione
    Sep 2005
    Messaggi
    451

  31. #31
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Citazione Originariamente Scritto da uMoR
    http://www.dei.unipd.it/~tigre/b/PerlTutorial/perl-tutorial-10.html :P
    Ok allora ho io ho usato un array al 50% associativo mentre quello di Low è al 100% associativo.

  32. #32
    L'avatar di LowLevel
    Data Registrazione
    Mar 2005
    Località
    Milano
    Messaggi
    1,542
    Citazione Originariamente Scritto da uMoR
    "che potrebbero spingere il motore di ricerca decidono la posizione"

    secondo me i motori di questa frase si accorgono che non va bene, per il tempo del verbo dico io..
    Personalmente dubito che i motori si spingano fino alla correzione grammaticale per qualunque lingua esistente, e in particolare per l'italiano.

    Il Web è pieno anche di testi scritti da asini e per un motore sarebbe errato desumere che un testo sgrammaticato sia un testo fasullo.

    Non escludo invece che esistano bonus di posizionamento per testi scritti correttamente o con un grado di leggibilità maggiore, visto che conosco diversi algoritmi per il calcolo di fattori simili. Quand'anche esistessero, l'influenza di tali algoritmi sulla posizione presumo sia trascurabile, comparata al beneficio di avere decine di pagine con testo "coerente" create in pochi secondi.

    se prima dell'ultima parola c'è una parentesi aperta allora la chiudo e poi aggiungo il punto.
    Questo non potrebbe condurre a testi tra parentesi anche molti lunghi?

    I motori tengono conto delle parentesi (così come delle virgolette). Tra avere lunghe frasi tra parentesi e non avere affatto parentesi, è meglio la seconda cosa.

    Il modo per risparmiare memoria lo posso gestire così:
    Ma no... fregatene della mia vecchia implementazione. Io l'avevo fatto per necessità prestazionali (le percentuali possono andare anche più veloci dell'array lineare, se si usano certe ottimizzazioni) e per esigenze di risparmio di risorse.

    vedo se esiste nel testo originale la sequenza parola1 parola2 parola3 parola4 parola5..se esiste mi trovo le parole che seguono questa combinazione nel testo originale e le elimino dall'array provvisorio.
    Mi sembra un ottimo approccio. Evita comunque di andare a cercare fisicamente la sequenza nel testo originale ogni volta. E' meglio crearsi in fase di scansione del testo originale un secondo array con la sesta parola che segue ogni sequenza di cinque parole, esattamente come già fai con le sequenze di due parole. Così la ricerca della sesta parola è molto più veloce.

  33. #33
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Citazione Originariamente Scritto da LowLevel
    Citazione Originariamente Scritto da uMoR
    "che potrebbero spingere il motore di ricerca decidono la posizione"

    secondo me i motori di questa frase si accorgono che non va bene, per il tempo del verbo dico io..
    Personalmente dubito che i motori si spingano fino alla correzione grammaticale per qualunque lingua esistente, e in particolare per l'italiano.

    Il Web è pieno anche di testi scritti da asini e per un motore sarebbe errato desumere che un testo sgrammaticato sia un testo fasullo.

    Non escludo invece che esistano bonus di posizionamento per testi scritti correttamente o con un grado di leggibilità maggiore, visto che conosco diversi algoritmi per il calcolo di fattori simili. Quand'anche esistessero, l'influenza di tali algoritmi sulla posizione presumo sia trascurabile, comparata al beneficio di avere decine di pagine con testo "coerente" create in pochi secondi.

    se prima dell'ultima parola c'è una parentesi aperta allora la chiudo e poi aggiungo il punto.
    Questo non potrebbe condurre a testi tra parentesi anche molti lunghi?

    I motori tengono conto delle parentesi (così come delle virgolette). Tra avere lunghe frasi tra parentesi e non avere affatto parentesi, è meglio la seconda cosa.

    Il modo per risparmiare memoria lo posso gestire così:
    Ma no... fregatene della mia vecchia implementazione. Io l'avevo fatto per necessità prestazionali (le percentuali possono andare anche più veloci dell'array lineare, se si usano certe ottimizzazioni) e per esigenze di risparmio di risorse.

    vedo se esiste nel testo originale la sequenza parola1 parola2 parola3 parola4 parola5..se esiste mi trovo le parole che seguono questa combinazione nel testo originale e le elimino dall'array provvisorio.
    Mi sembra un ottimo approccio. Evita comunque di andare a cercare fisicamente la sequenza nel testo originale ogni volta. E' meglio crearsi in fase di scansione del testo originale un secondo array con la sesta parola che segue ogni sequenza di cinque parole, esattamente come già fai con le sequenze di due parole. Così la ricerca della sesta parola è molto più veloce.
    Le parentesi purtroppo vanno fatte così..al massimo faccio in modo che quando una parentesi è aperta sia privilegiata (percentualmente) una parola che termina con una parentesi chiusa.

    Ho già fatto lo script alla tua vecchia maniera..è molto più veloce adesso.

    Poi ho anche aggiunto la funzione che gestisce la similitudine..purtroppo funziona..funziona così bene che lo script non produce più di 10 parole.

    Questo significa che dovrò aumentare enormemente il testo originario.

    Oppure evito la correzione sulla similitudine..tu cosa pensi sia meglio?

  34. #34
    L'avatar di LowLevel
    Data Registrazione
    Mar 2005
    Località
    Milano
    Messaggi
    1,542
    Citazione Originariamente Scritto da kerouac3001
    Le parentesi purtroppo vanno fatte così..
    Che succede se le elimini e basta?

    Poi ho anche aggiunto la funzione che gestisce la similitudine..purtroppo funziona..funziona così bene che lo script non produce più di 10 parole.
    Hai provato con altri testi originari oltre che con i miei? Magari dipende anche dal tipo di scrittura delle fonti. Prendi un paio di articoli di Repubblica.it

    Questo significa che dovrò aumentare enormemente il testo originario.

    Oppure evito la correzione sulla similitudine..tu cosa pensi sia meglio?
    La terza opzione è allungare il controllo a dieci termini invece che cinque. O comunque un valore superiore a cinque.

    Aggiunto: comunque la lunghezza del testooriginario la aumenterei comunque.

  35. #35
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Ho messo a 10 il livello di similarità..il problema persiste. Aumenterò il testo con Repubblica..ma ormai se ne parla domani

    Per ora è tutto funzionante e molto veloce..così veloce che potrei direttamente implementarlo in doorway dinamiche

  36. #36
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Per eliminare il problema del testo troppo piccolo (neanche con 300kb siesce a superare una riga) ho inserito questa funzione:

    se non ci sono elementi nell'array array['$seed'] allora $seed è uguale a $best..dove best è il miglior $seed tra quelli presi in considerazione fin dall'inizio dello script..con miglior seed intendo dire quello che è collegato a più parole.

    In questo modo ci assicuriamo il seed migliore e ricominciamo alla grande.

    Va un pò contro l'idea di Markov Chain ma fatemi sapere cosa ne pensate..si tratta di un piccolo taglietto una volta ogni tanto.

    Comunque gli ho dato in pasto mezza Moll Flanders (di DeFoe) adesso sembra funzionare bene.

  37. #37
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Finito: qui trovate lo script.

    Positano mi ha proposto di implementarlo a un generatore di doorway..appena posso lo faccio, ma per ora metto online il link allo script base. C'è pure una miniguida, ma in funzionamento è veramente semplice

    Per ogni suggerimento, postate qui e cercherò di migliorare lo script di volta in volta.

  38. #38
    Moderatore L'avatar di paolino
    Data Registrazione
    Apr 2005
    Località
    San Cipriano Beach
    Messaggi
    5,058
    infatti è quello che pensavo pure io.....

    le doorway generate tramite questo metodo riescono ad essere univoche e abbastanza verosimili....

    non credo che i motori abbiano algoritmi talmente sofisticati da riuscire a scoprire che si tratta di pagine create in automatico...

    vabbè si vedono doorway con i piedi in giro che hanno pure buoni ranking, credo che il metodo di Markov produca risultati di gran lunga migliori

  39. #39
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Citazione Originariamente Scritto da paolino
    infatti è quello che pensavo pure io.....

    le doorway generate tramite questo metodo riescono ad essere univoche e abbastanza verosimili....

    non credo che i motori abbiano algoritmi talmente sofisticati da riuscire a scoprire che si tratta di pagine create in automatico...

    vabbè si vedono doorway con i piedi in giro che hanno pure buoni ranking, credo che il metodo di Markov produca risultati di gran lunga migliori
    Scusa mi sono dimenticato di te nei ringraziamenti eheh

    Comunque anche io credo sia un ottima idea..molto facile da realizzare..esempio di doorway:

    Codice:
    <html>
      <head>
        ....
      </head>
      <body>
        
    
    
          <?
            require&#40;'add_chain.php'&#41;;
          ?>
        </p>
      </body>
    </html>
    Il problema è che essendo io un perfezionista voglio trovare un modo di gestire i metatag in maniera ottimale.

    Potrei inserire un array che raccoglie una serie di parole per cui si vogliono ottimizzare le doorway e far scegliere a caso 2 parole da questo array.

    I metatag sarebbero:

    Title: (Parola1)-Parola2-[Parola1]-Parola2-(Parola1)

    Tanto Low è convinto che sti metatag non servano a nulla..io però al title ci tengo quindi lo inserisco.

    Ovviamente se la key principale del title è Parola1 allora faccio in modo che il testo venga ottimizzato per la key Parola1.

    Vi convince?

    Inoltre inserisco un redirect lato server ad un indirizzo specificato.

    Ovviamente chi vuole può modificare il codice della doorway e inserire il testo dove gli pare.

    (Un pò come lo script che mi ha fatto vedere ieri positano)

    Il problema finale è questo:

    creo una cartella e delle doorway statiche all'interno di essa (in automatico)?

    o creo doorway dinamiche?

  40. #40
    Moderatore L'avatar di paolino
    Data Registrazione
    Apr 2005
    Località
    San Cipriano Beach
    Messaggi
    5,058
    giusto il mondo è dei perfezionisti

    il prossimo passo sarà una rete neurale che analizza un set di pagine, acquisisce concetti e li rielabora in maniera soggettiva e poi scrive testi sugli argomenti che ha imparato

    così però creeremmo il successore di google

  41. #41
    User Attivo L'avatar di must
    Data Registrazione
    Mar 2005
    Località
    Gozo, Malta
    Messaggi
    4,347
    Segui must su Twitter Aggiungi must su Google+ Aggiungi must su Facebook Aggiungi must su Linkedin
    Citazione Originariamente Scritto da paolino
    così però creeremmo il successore di google
    secondo me, si creerebbe il successore degli scrittori (inteso in senso lato, ovvero di chi scrive in generale).

  42. #42
    Moderatore L'avatar di paolino
    Data Registrazione
    Apr 2005
    Località
    San Cipriano Beach
    Messaggi
    5,058
    già uno schiavetto elettronico instancabile che scrive pagine su pagine alla velocità della luce

    che bello

  43. #43
    Banned L'avatar di positano
    Data Registrazione
    Jan 2005
    Messaggi
    345
    Citazione Originariamente Scritto da kerouac3001
    Finito: qui trovate lo script.

    Positano mi ha proposto di implementarlo a un generatore di doorway..appena posso lo faccio, ma per ora metto online il link allo script base. C'è pure una miniguida, ma in funzionamento è veramente semplice

    Per ogni suggerimento, postate qui e cercherò di migliorare lo script di volta in volta.
    Sarò tonto kerourac, ma a me non funzia , oltretutto non vedo neanche la guida
    Il problema finale è questo:

    creo una cartella e delle doorway statiche all'interno di essa (in automatico)?

    o creo doorway dinamiche?
    A mio giudizio statiche, sarebbe la cosa migliore.

  44. #44
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Citazione Originariamente Scritto da positano
    Citazione Originariamente Scritto da kerouac3001
    Finito: qui trovate lo script.

    Positano mi ha proposto di implementarlo a un generatore di doorway..appena posso lo faccio, ma per ora metto online il link allo script base. C'è pure una miniguida, ma in funzionamento è veramente semplice

    Per ogni suggerimento, postate qui e cercherò di migliorare lo script di volta in volta.
    Sarò tonto kerourac, ma a me non funzia , oltretutto non vedo neanche la guida
    Il problema finale è questo:

    creo una cartella e delle doorway statiche all'interno di essa (in automatico)?

    o creo doorway dinamiche?
    A mio giudizio statiche, sarebbe la cosa migliore.
    Scusa ho dimenticato di inserirla la guida -________-
    L'ho scritta e poi non l'ho inserita.

    Adesso ho messo il file giusto..prima di usarlo leggi la guida, perchè non c'è testo e non c'è nessuna impostazione settata.

    Devi settarle tu. Se qualcosa non ti è chiaro chiedi pure che te lo spiego.

  45. #45
    User Attivo L'avatar di must
    Data Registrazione
    Mar 2005
    Località
    Gozo, Malta
    Messaggi
    4,347
    Segui must su Twitter Aggiungi must su Google+ Aggiungi must su Facebook Aggiungi must su Linkedin
    Citazione Originariamente Scritto da paolino
    già uno schiavetto elettronico instancabile che scrive pagine su pagine alla velocità della luce

    che bello
    a me invece sembra una cosa orribile.

  46. #46
    User Attivo L'avatar di must
    Data Registrazione
    Mar 2005
    Località
    Gozo, Malta
    Messaggi
    4,347
    Segui must su Twitter Aggiungi must su Google+ Aggiungi must su Facebook Aggiungi must su Linkedin
    ho risolto usando wget, ma mi incuriosisce scoprire perche' il download del file mi inchioda firefox...

  47. #47
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Citazione Originariamente Scritto da must
    ho risolto usando wget, ma mi incuriosisce scoprire perche' il download del file mi inchioda firefox...
    Non ne ho idea..io ho firefox, ma va tutto ok..l'ho scaricato 2 secondi fa per vedere se la guida mancava come diceva positano e è andato tutto ok

  48. #48
    Banned L'avatar di positano
    Data Registrazione
    Jan 2005
    Messaggi
    345

    Ho letto per bene il file di info, ho fatto le modifiche come descritto, ma non riesco a far venire fuori nulla .

    $key="" qui ho inserito la parola interessata;
    $max_parole=1000 qui ho lasciato lo stesso valore;
    $seed ="" qui ho inserito la coppia di parole presenti nel testo e consegutive.

    Nulla viene fuori (nella index.php) solo la coppia di parole inserite nel tag $seed, il resto non esce, forse perchè il testo che ho inserito come prova è al di sotto dei 50K come da te consigliato kerouac?
    aiutooooooooooooo
    p.s.
    Scusa keruoac ma non dovrebbere esserci dentro due file txt da dove prelevare il testo per costruirne un terzo?

  49. #49
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Citazione Originariamente Scritto da positano

    Ho letto per bene il file di info, ho fatto le modifiche come descritto, ma non riesco a far venire fuori nulla .

    $key="" qui ho inserito la parola interessata;
    $max_parole=1000 qui ho lasciato lo stesso valore;
    $seed ="" qui ho inserito la coppia di parole presenti nel testo e consegutive.

    Nulla viene fuori (nella index.php) solo la coppia di parole inserite nel tag $seed, il resto non esce, forse perchè il testo che ho inserito come prova è al di sotto dei 50K come da te consigliato kerouac?
    aiutooooooooooooo
    la coppia $seed è presente nel testo?

    Modifica: Scusa non avevo visto che hai detto che è presente

  50. #50
    User Attivo L'avatar di kerouac3001
    Data Registrazione
    Apr 2005
    Località
    Roma (ma Palermitano sugnu)
    Messaggi
    1,532
    Puoi zippare tutti i files e upparli su un tuo sito? li scarico e vedo..li hai messi su un dominio free?

+ Rispondi alla Discussione
Pagina 1 di 3 123 UltimaUltima

LinkBacks (?)

  1. 08-01-08, 10:06

Tag per Questa Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.