Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 24-11-2008, 18:59   #1
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1379
Trovare la percentuale di differenze tra due stringhe senza averle.

Mi servirebbe di qualcosa molto simile ad un hash o un crc con l'unica differenza che applicando questo algoritmo a due stringhe simili dovrei ottenere un risultato simile.
Con il crc invece ottengo ovviamente due risultati completamente diversi.

Questa cosa mi è utile perchè sto cercano di implementare un piccolo motore di ricerca, e ogni volta che lo spider passa da un sito dovrebbe accorgersi se vale la pena di aggiornare il database oppure le variazioni sono così piccole che non è necessario.

Il caso di variazioni piccole sono ad esempio quelle pagine dove c'è scritta la data attuale. Se facessi il crc della pagina vedrei che è diversa, ma di fatto è diversa di una quantità insignificante. D'altro canto andare a scompattare la pagina memorizzata nel database per confrontarla con quella attuale è un operazione inutilmente lenta.

Sapete se esiste un algoritmo di hashing (parola impropria lo so) che mi consenta di fare questo al volo ?

Provvisoriamente sto pensando ad una semplice somma di tutti i valori ascii dei caratteri contenuti nella stringa, ma penso esista qualcosa di più evoluto.
das è offline  
Old 24-11-2008, 19:24   #2
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da das Guarda i messaggi
Provvisoriamente sto pensando ad una semplice somma di tutti i valori ascii dei caratteri contenuti nella stringa, ma penso esista qualcosa di più evoluto.
Sono totalmente ignorante in questo campo, e non so quindi consigliarti una buona soluzione; so solo dirti che questa che stai percorrendo può essere solo una strada provvisoria e che non va bene in generale: immagina di avere una stringa e una sua copia perfetta, poi ribaltata o rimescolata, avresti la stessa somma di valori ASCII per stringhe diverse.

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline  
Old 24-11-2008, 21:23   #3
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
http://it.wikipedia.org/wiki/Distanza_di_Levenshtein
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline  
Old 24-11-2008, 23:19   #4
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
Quote:
Originariamente inviato da das Guarda i messaggi
Mi servirebbe di qualcosa molto simile ad un hash o un crc con l'unica differenza che applicando questo algoritmo a due stringhe simili dovrei ottenere un risultato simile.
Con il crc invece ottengo ovviamente due risultati completamente diversi.

Questa cosa mi è utile perchè sto cercano di implementare un piccolo motore di ricerca, e ogni volta che lo spider passa da un sito dovrebbe accorgersi se vale la pena di aggiornare il database oppure le variazioni sono così piccole che non è necessario.

Il caso di variazioni piccole sono ad esempio quelle pagine dove c'è scritta la data attuale. Se facessi il crc della pagina vedrei che è diversa, ma di fatto è diversa di una quantità insignificante. D'altro canto andare a scompattare la pagina memorizzata nel database per confrontarla con quella attuale è un operazione inutilmente lenta.

Sapete se esiste un algoritmo di hashing (parola impropria lo so) che mi consenta di fare questo al volo ?

Provvisoriamente sto pensando ad una semplice somma di tutti i valori ascii dei caratteri contenuti nella stringa, ma penso esista qualcosa di più evoluto.
Quando cerchi algoritmi del genere devi sempre pensare che qualcun'altro c'ha già pensato. E trovato una soluzione migliore di quella che avresti pensato tu.

Non mi ricordo di chi ma è una citazione.
__________________
malocchio è offline  
Old 24-11-2008, 23:45   #5
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Si, credo sia indicato... io lo uso per riconoscere le forme nel mio gioco

Cmq credo che non vada bene a das, perchè:
-richiede di conoscere la stringa, e lui non vuole pescarla dal database
-richiede calcoli su di una matrice num_chars x n, e quindi è inapplicabile per prestazioni su di una pagina web...

Mi sa che quelli che ci hanno pensato stavolta hanno si fatto meglio, ma se lo sono tenuto per sè
Le tecnologie di ricerca di informazioni ultimamente sono le più ricercate e segrete di tutte... figurati se Google permette ai suoi dipendenti di anche solo accennare gli algoritmi di ricerca...
__________________
*ToMmO*

devlog | twitter
Tommo è offline  
Old 25-11-2008, 08:15   #6
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1379
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Grazie, ma questo algoritmo necessita la conoscenza delle due stringhe perciò non fa al caso mio.
das è offline  
Old 25-11-2008, 08:28   #7
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
A te servirebbe qualcosa di simile a questo: http://en.wikipedia.org/wiki/Soundex

Ma il problema è che "sintetizzare" un'intera pagina in pochi bit d'informazione è praticamente impossibile.

Un'ideuzza ce l'avrei, ma è un po' complicata da implementare. Te la espongo velocemente.

Utilizza un dizionario fisso di parole (es: quello della lingua italiana), e dalla tua pagina estrai tutte le parole che appartengono al dizionario conservandone anche la frequenza.

Supponiamo che tutte le parole del dizionario abbiano una posizione fissa (es: ciao = 4327), per cui anche alle parole del dizionario assocerai il medesimo indice.

Mettiamo che il dizionario sia di n parole, e tu ne abbia trovate m (<= n ovviamente). Costruisci un vettore di dimensione n in cui memorizzi la frequenza delle m parole nella posizione che gli spetta. Quindi se hai trovato ciao 3 volte, allora alla posizione 4327 metterai il valore 3.

A questo punto hai ottenuto un vettore nello spazio (del dizionario). Questo vettore formerà un certo angolo rispetto a un asse di riferimento. Ne calcoli il coseno (o il seno: è indifferente) e lo memorizzi.

D'ora in poi userai il coseno per confrontare la similitudine di una stringa con un'altra.

Lo so: è particolarmente contorto (qualche giorno chiameranno la neuro, me lo sento ), ma a naso potrebbe andare bene per i tuoi scopi.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline  
Old 25-11-2008, 08:53   #8
The_ouroboros
Senior Member
 
L'Avatar di The_ouroboros
 
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Lo so: è particolarmente contorto (qualche giorno chiameranno la neuro, me lo sento ), ma a naso potrebbe andare bene per i tuoi scopi.
Molto interessante invece
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go
The_ouroboros è offline  
Old 25-11-2008, 10:30   #9
-MiStO-
Senior Member
 
Iscritto dal: May 2005
Città: Trieste
Messaggi: 2285
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
A te servirebbe qualcosa di simile a questo: http://en.wikipedia.org/wiki/Soundex

Ma il problema è che "sintetizzare" un'intera pagina in pochi bit d'informazione è praticamente impossibile.

Un'ideuzza ce l'avrei, ma è un po' complicata da implementare. Te la espongo velocemente.

Utilizza un dizionario fisso di parole (es: quello della lingua italiana), e dalla tua pagina estrai tutte le parole che appartengono al dizionario conservandone anche la frequenza.

Supponiamo che tutte le parole del dizionario abbiano una posizione fissa (es: ciao = 4327), per cui anche alle parole del dizionario assocerai il medesimo indice.

Mettiamo che il dizionario sia di n parole, e tu ne abbia trovate m (<= n ovviamente). Costruisci un vettore di dimensione n in cui memorizzi la frequenza delle m parole nella posizione che gli spetta. Quindi se hai trovato ciao 3 volte, allora alla posizione 4327 metterai il valore 3.

A questo punto hai ottenuto un vettore nello spazio (del dizionario). Questo vettore formerà un certo angolo rispetto a un asse di riferimento. Ne calcoli il coseno (o il seno: è indifferente) e lo memorizzi.

D'ora in poi userai il coseno per confrontare la similitudine di una stringa con un'altra.

Lo so: è particolarmente contorto (qualche giorno chiameranno la neuro, me lo sento ), ma a naso potrebbe andare bene per i tuoi scopi.
idea brillante!
praticamente ottieni un vettore n dimensionale in cui le parole sono le dimensioni e il valore per ogni dimensione è dato dalle singole occorrenze, ho capito bene?
__________________
neo mini v2 / asus strix z490i / 10600k@? / uh12s / rx6700xt / 32gb ddr4@3200 / sandisk 250 + asenno 1tb / lenovo g34w
trattative concluse : tante...

-MiStO- è offline  
Old 25-11-2008, 14:26   #10
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Esattamente.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline  
Old 25-11-2008, 16:43   #11
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Veramente interessante

Un solo dubbio: quante parole su internet sono italiane ed anche corrette, sul totale?
E tutti i neologismi che si dicono una volta sul forum e poi non li vedi più?

Il dizionario credo te lo dovresti costruire a mano, aggiungendo un index ad ogni "first occurrence" di una parola... ma temo che poi ti serva veramente troppa memoria
Non per niente google ha una decina di Pb di hard disk eh
__________________
*ToMmO*

devlog | twitter
Tommo è offline  
Old 25-11-2008, 18:22   #12
The_ouroboros
Senior Member
 
L'Avatar di The_ouroboros
 
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
Quote:
Originariamente inviato da Tommo Guarda i messaggi
Il dizionario credo te lo dovresti costruire a mano, aggiungendo un index ad ogni "first occurrence" di una parola... ma temo che poi ti serva veramente troppa memoria
Non per niente google ha una decina di Pb di hard disk eh
in effetti un piccolo suicidio a livello di spazio occupato
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go
The_ouroboros è offline  
Old 25-11-2008, 21:08   #13
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
L'idea invece è di utilizzare un dizionario fisso, quindi al quale non aggiungere altre parole (altrimenti per ogni nuova parola bisognerebbe ricalcolare i valori di tutte le altre pagine).

E' chiaro che con questa scelta si perderanno delle informazioni, ma l'obiettivo è quello di sintetizzare buona parte di un'intera pagina, non di rincorrere a tutti i costi una precisione che, per il tipo di problema proposto, non potrà mai esserci.

Ad esempio l'inclusione dell'intero vocabolario della lingua italiana, compresi francesismi ed eventualmente nomi e cognomi, porterebbe una notevole nonché solida base da cui partire.

Anche la memoria non credo sarebbe un problema: quanto possono occupare 150-200mila voci? Non credo tanto. Ovviamente allo scopo terrei sempre attivo un server che ha precaricato in memoria un dizionario con tutte le voci, in modo da facilitare la costruzione del vettore, che avverrebbe grossolanamente così:
Codice:
Dictionary = {... dizionario ...}

def Vectorize(Text):
  Vector = [0] * len(Dictionary) # Inizializza il vettore delle frequenze
  Text = Text.lower() # Mette l'intero testo in lowecase
  for Word in Text.split(): # Suddivide il testo in parole usando spazi, tabulatori e caratteri speciali come separatori
   Index = Dictionary[Word] # Calcola l'indice della parola
   if Index >= 0: # Se la parola è stata trovata nel dizionario, prosegui
     Vector[] += 1 # Aggiorna la frequenza di questa parola
  return Vector # Ritorna il vettore calcolato
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline  
Old 25-11-2008, 23:29   #14
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
A te servirebbe qualcosa di simile a questo: http://en.wikipedia.org/wiki/Soundex

Ma il problema è che "sintetizzare" un'intera pagina in pochi bit d'informazione è praticamente impossibile.

Un'ideuzza ce l'avrei, ma è un po' complicata da implementare. Te la espongo velocemente.

Utilizza un dizionario fisso di parole (es: quello della lingua italiana), e dalla tua pagina estrai tutte le parole che appartengono al dizionario conservandone anche la frequenza.

Supponiamo che tutte le parole del dizionario abbiano una posizione fissa (es: ciao = 4327), per cui anche alle parole del dizionario assocerai il medesimo indice.

Mettiamo che il dizionario sia di n parole, e tu ne abbia trovate m (<= n ovviamente). Costruisci un vettore di dimensione n in cui memorizzi la frequenza delle m parole nella posizione che gli spetta. Quindi se hai trovato ciao 3 volte, allora alla posizione 4327 metterai il valore 3.

A questo punto hai ottenuto un vettore nello spazio (del dizionario). Questo vettore formerà un certo angolo rispetto a un asse di riferimento. Ne calcoli il coseno (o il seno: è indifferente) e lo memorizzi.

D'ora in poi userai il coseno per confrontare la similitudine di una stringa con un'altra.

Lo so: è particolarmente contorto (qualche giorno chiameranno la neuro, me lo sento ), ma a naso potrebbe andare bene per i tuoi scopi.
Similarità coseno
tra una dormitina e l'altra a lezione (.... ) mi è sembrato di carpire questo "strano" termine.
Tra le altre cose (vado sul vago perchè non ne so di più) so che un metodo efficace per indicizzare e confrontare documenti testuali è quello di calcolarsi gli autovalori della matrice dei termini e non so che altro.
Vabbè non divago oltre OT, dico solo che ci sono libri validi sull'argomento di un certo Ian Witten. Ciao!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"
Oceans11 è offline  
Old 25-11-2008, 23:59   #15
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
ma limitando la soluzione di Cdimauro a relativamente poche parole chiavi relative ad un argomento?
Kralizek è offline  
Old 26-11-2008, 08:25   #16
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Oceans11 Guarda i messaggi
Similarità coseno
tra una dormitina e l'altra a lezione (.... ) mi è sembrato di carpire questo "strano" termine.
Dove l'hai sentito? Funziona proprio come ho pensato io?
Quote:
Tra le altre cose (vado sul vago perchè non ne so di più) so che un metodo efficace per indicizzare e confrontare documenti testuali è quello di calcolarsi gli autovalori della matrice dei termini e non so che altro.
Hum... Mi sembra un tantino oneroso prestazionalmente (già il mio algoritmo lo è abbastanza, e funziona su un vettore lineare ).
Quote:
Vabbè non divago oltre OT, dico solo che ci sono libri validi sull'argomento di un certo Ian Witten. Ciao!
Grazie per l'informazione.
Quote:
Originariamente inviato da Kralizek Guarda i messaggi
ma limitando la soluzione di Cdimauro a relativamente poche parole chiavi relative ad un argomento?
Funzionerebbe ugualmente, posto che l'algoritmo più generale che ho descritto prima funzioni.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline  
Old 26-11-2008, 10:02   #17
Oceans11
Senior Member
 
L'Avatar di Oceans11
 
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Dove l'hai sentito? Funziona proprio come ho pensato io?
Sì più o meno come dicevi tu.
L'ho sentito ad una lezione di Basi di Dati Multimediali, ieri sono andato a spulciare tra le dispense ma non ho trovato niente. Se vuoi dare un'occhiata tu ti do il riferimento alla pagina del corso.

Ora che ci penso c'ho anche messo mani ad un corso di gestionale, ho corretto il programma di una mia amica che lo doveva calcolare. Se lo trovo lo posto.

PS: ho trovato il nome del libro:
Ian H. Witten, Alistair Moffat,Thimothy C.Bell Managing Gigabytes: Compressing and Indexing Documents and Images.
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes]
"Pirating software? Choose Microsoft!"

Ultima modifica di Oceans11 : 26-11-2008 alle 10:15.
Oceans11 è offline  
Old 26-11-2008, 10:03   #18
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1379
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
A te servirebbe qualcosa di simile a questo: http://en.wikipedia.org/wiki/Soundex

Ma il problema è che "sintetizzare" un'intera pagina in pochi bit d'informazione è praticamente impossibile.

Un'ideuzza ce l'avrei, ma è un po' complicata da implementare. Te la espongo velocemente.

Utilizza un dizionario fisso di parole (es: quello della lingua italiana), e dalla tua pagina estrai tutte le parole che appartengono al dizionario conservandone anche la frequenza.

Supponiamo che tutte le parole del dizionario abbiano una posizione fissa (es: ciao = 4327), per cui anche alle parole del dizionario assocerai il medesimo indice.

Mettiamo che il dizionario sia di n parole, e tu ne abbia trovate m (<= n ovviamente). Costruisci un vettore di dimensione n in cui memorizzi la frequenza delle m parole nella posizione che gli spetta. Quindi se hai trovato ciao 3 volte, allora alla posizione 4327 metterai il valore 3.

A questo punto hai ottenuto un vettore nello spazio (del dizionario). Questo vettore formerà un certo angolo rispetto a un asse di riferimento. Ne calcoli il coseno (o il seno: è indifferente) e lo memorizzi.

D'ora in poi userai il coseno per confrontare la similitudine di una stringa con un'altra.

Lo so: è particolarmente contorto (qualche giorno chiameranno la neuro, me lo sento ), ma a naso potrebbe andare bene per i tuoi scopi.
Però secondo me all'aumentare di n aumenta il numero di seni da memorizzare e Pasqua torna di domenica. Memorizzando gli angoli inoltre potrei risalire a solo la direzione del vettore ma non al modulo. Questo non sarebbe un problema visto che la probabilità di ottenere due direzioni uguali da pagine diverse è comunque bassissima. Il problema è che non mi pare che l'informazione da memorizzare si riduca abbastanza. Cercavo qualcosa che desse in uscita 64 o 128 bit al massimo.

Pensavo comunque che esistesse qualcosa diciamo di 'standard' tipicamente utilizzato per risolvere questo tipo di problemi.

Ultima modifica di das : 26-11-2008 alle 10:13.
das è offline  
Old 26-11-2008, 10:06   #19
das
Senior Member
 
Iscritto dal: Jan 2001
Città: Livorno
Messaggi: 1379
Quote:
Originariamente inviato da Tommo Guarda i messaggi
Veramente interessante

Un solo dubbio: quante parole su internet sono italiane ed anche corrette, sul totale?
E tutti i neologismi che si dicono una volta sul forum e poi non li vedi più?

Il dizionario credo te lo dovresti costruire a mano, aggiungendo un index ad ogni "first occurrence" di una parola... ma temo che poi ti serva veramente troppa memoria
Non per niente google ha una decina di Pb di hard disk eh
Per il dizionario non è un problema visto che il mio programmino già ora inserisce in una tabella tutte le parole che trova a giro per internet.
das è offline  
Old 26-11-2008, 12:14   #20
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Io conosco ed ho usato un algoritmo abbastanza, simile a quello esposto da cdimauro. Viene attualmente usato da qualche engine di spiders.

Invece di considerare il dizionario completo di tutte le parole, secondo questo algoritmo e' sufficiente utilizzare il dizionario di tutte le possibili terzine di un testo, con lowercase eventualmente pulite da caratteri di controllo (virgole, punti, duepunti, etc.) conservando pero' lo spazio.
Ottieni uno spazio le cui terzine possibili sono
aaa
aab
aac
aaz
a a
a b
bac
bcd
cdz

etc.
ed e' finito e completo (Circa 30^3 entries)

Passi il tuo testo originale attraverso il conto delle terzine ( O (N) )
e conti la distribuzione delle terzine
ES:
Codice:
Ho rotto un rotore:
ho  = 1
o r = 1
 ro = 2
rot = 2
ott = 1
tto = 1
to  = 1
o u = 1
 un = 1
n r = 1
oto = 1
ore = 1
(Ovviamente con testi piccoli non funziona molto bene)
In teoria potrai tenere memorizzato anche solo la distribuzione, neppure la pagina vera e propria.
(A meno che ti servano funzioni di caching)
E anche ovviamente i dati che avrai rilevato e che ti serviranno per le ricerche.

quando ripasserai, ricalcolerai la distribuzione delle nuove terzine, e calcolerai la distanza tra il vecchio dizionario e quello nuovo.
Funzioni per calcolare la distanza ce ne possono essere parecchie, ma viene normalmente usato qualcosa di simile alla Levenshtein.
La distanza tipica e':
quante sono le terzine nuove che prima non c'erano (motliplicate per la loro occorrenza)
+ quante sono le terzine vecchie che non ci sono piu' (di nuovo moltiplicate)
+ la differenza di occorrenza delle terzine preservate.

Prova, a me ha dato abbastanza soddisfazioni.

PS: Ci facciamo un contest?
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 26-11-2008 alle 12:17.
gugoXX è offline  
 Discussione Chiusa


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Il nuovo Snapdragon 8 Elite Gen 6 sar&ag...
Nintendo Switch 2: risultati sotto le at...
Weekend con tante sorprese su Amazon: to...
HONOR non si ferma più: il 2025 &...
Speciale best seller: EUREKA J15 Evo Ult...
Roborock Q10 X5+ da 10.000 Pa a 199€ &eg...
E-mail reset password di Instagram: la c...
La NASA ha discusso le problematiche del...
Il razzo spaziale NASA SLS e la capsula ...
Stazione Spaziale Internazionale: Crew-1...
Samsung Galaxy S26 Ultra: la ricarica de...
Apple ha un nuovo partner per la sua App...
Trenitalia introduce il prezzo dinamico ...
OnePlus non si ferma più: c'&egra...
DAZN sconta il piano Full per 6 mesi, se...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:25.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v