![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
Hey Amico Visitatore, Condividi con noi le tue idee e la tua conoscenza Aprendo una nuova discussione nella sezione Laboratorio Seo |
|
|
LinkBack (1) | Strumenti di discussione |
|
|
#1 (permalink)
|
|
User Attivo
|
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 (permalink) | |
|
Re: Markov chain [lavoriamoci assieme]
Quote:
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 (permalink) | |||
|
Banned
|
Re: Markov chain [lavoriamoci assieme]
Quote:
Quote:
Quote:
| |||
|
|
|
|
|
#4 (permalink) | ||||
|
User Attivo
|
Re: Markov chain [lavoriamoci assieme]
Quote:
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 (permalink) | |||
|
Re: Markov chain [lavoriamoci assieme]
Quote:
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). Quote:
| ||||
|
|
|
|
|
#6 (permalink) |
|
Moderatore
Data di registrazione: Apr 2005
Ubicazione: San Cipriano Beach
Messaggi: 4,274
|
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 (permalink) |
|
User Attivo
|
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? |
|
|
|
|
|
#9 (permalink) | |||
|
Banned
|
Quote:
Quote:
Quote:
| |||
|
|
|
|
|
#11 (permalink) | ||
|
Banned
|
Quote:
http://tool.motoricerca.info/analizz...milarita.phtml | ||
|
|
|
|
|
#12 (permalink) |
|
User Attivo
|
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 (permalink) | |
|
Quale pagina hai usato come fonte?
Il 36% è poco, ma conta che quel tool misura solo alcuni tipi di similarità. Quote:
| ||
|
|
|
|
|
#14 (permalink) | ||
|
User Attivo
|
Quote:
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 | ||
|
|
|
| Tags: assieme, chain, lavoriamoci, markov |
| Strumenti di discussione | |
|
|
LinkBacks (?)
LinkBack to this Thread: http://www.giorgiotave.it/forum/laboratorio-seo/3994-markov-chain-lavoriamoci-assieme.html
|
||||
| Scritto da | For | Type | Data | |
| » Page Rank a misura di Markov Chain Stefano Celso Blog: Web e Tecnologia | This thread | Pingback | 08-01-08 11:06 | |
