• Super User

    @positano said:

    Prova a compararlo col tool di LowLevel stesso e vedi che risultato ti dà.

    Qual'è questo tool?


  • Bannato User Attivo

    @kerouac3001 said:

    @positano said:

    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/analizzatore-similarita.phtml


  • Super User

    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?


  • Super User

    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.


  • Super User

    @LowLevel said:

    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) :fumato:

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


  • Super User

    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.


  • User Attivo

    Consiglio mio:
    dopo il . metti un bel \n (non
    ).

    Per il resto mi sembra buono..


  • Super User

    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? 😉


  • Bannato User Attivo

    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 :fumato: continua continua 😉


  • User Attivo

    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 😄


  • Super User

    @uMoR said:

    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! 😄 )


  • User Attivo

    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!


  • Super User

    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 😄


  • User Attivo

    Io ho già dato :vai:


  • Super User

    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).


  • User Attivo

    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)


  • Super User

    @uMoR said:

    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).


  • User Attivo

    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..


  • User Attivo

    oppure finire frasi con "che"


  • Super User

    @LowLevel said:

    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?