• User Attivo

    Ho da fare una semplice osservazione però.

    Innanzitutto che è facile mettersi in bocca parole di cui non si conosca neanche lontanamente il significato.
    Per esempio lo stemming: facile a dirsi, ma a farsi ?

    Così come tanti altri sistemi che sono stati citati in questo thread.

    Quanti qui dentro han fatto un corso di algoritmi e strutture dati ?
    Quanti qui dentro hanno mai gestito una workstation ?
    Quanti qui dentro hanno mai gestito\configurato un cluster ?

    Io comincerei a partire con calma, partendo dal progettare una struttura intelligente, espandibile, versatile.

    E' troppo facile dopo aver letto 3 documenti postati sul forum pensare di padroneggiare certe tecniche di IR e così via.

    Già progettare e realizzare un crawler fatto bene, che non consumi tante risorse, è difficile.

    Figuriamoci tutto il resto..

    In questo post non voglio togliere niente a nessuno.
    Semplicemente a volte è facile pensare oltre i propri limiti.

    Infine credo che durante lo sviluppo, l'idea di mettere insieme troppa gente complichi le cose, contando che pochi qua dentro fanno i programmatori di mestiere.


  • Super User

    Io comincerei a partire con calma, partendo dal progettare una struttura intelligente, espandibile, versatile.
    E' troppo facile dopo aver letto 3 documenti postati sul forum pensare di padroneggiare certe tecniche di IR e così via.

    Già progettare e realizzare un crawler fatto bene, che non consumi tante risorse, è difficile.
    Figuriamoci tutto il resto..
    Mi sembra che hai centrato uno dei punti ora più importanti.
    Ben lungi dal pensare non solo di padroneggiare, ma anche di aver compreso IR ed il resto, vorrei evidenziare il target;[url=http://www.giorgiotave.it/forum/viewtopic.php?t=6145&sid=f6c956cdfaeb7ce709f6c276058b8e7c] iniziare a studiare l'IR. - E' importante. Ed acquisire la visione giusta. > Fate come più preferite: iniziate a progettare un semplice motore di ricerca, imparate le basi sui libri, approfondite le nozioni sulla documentazione esistente online, seguite le conferenze sull'IR.. basta che imparate le basi ed acquisite la visione giusta.
    L'obiettivo è quindi portare la parte più attiva del ForumGT ad imparare le basi dell' IR.

    In questo post non voglio togliere niente a nessuno.
    Semplicemente a volte è facile pensare oltre i propri limiti.
    Conosco molto bene i miei limiti e quelli della parte più attiva del Forum, [ geniacci a parte 😉 ] e credo sia possibile consentire a questa parte di* imparare le basi dell IR*.

    Infine credo che durante lo sviluppo, l'idea di mettere insieme troppa gente complichi le cose, contando che pochi qua dentro fanno i programmatori di mestiere.
    Condivido senz'altro.
    Mi sembra che [come da post iniziale :D] ci si stia muovendo in 2 direzioni;

    -** creare un piccolo Gruppo molto preparato** [ i Geniacci] e coordinato da un Responsabile [scelto praticamente solo in funzione del tempo che potrà dedicare a coordinare la **realizzazione **del Progetto].

    • coinvolgere la parte più attiva del ForumGT nella discussione e nell'approfondimento di ciò che il Gruppo stà creando e metterlo in condizioni di comprendere il Progetto.

    :ciauz:


  • Super User

    @uMoR said:

    Innanzitutto che è facile mettersi in bocca parole di cui non si conosca neanche lontanamente il significato.
    Per esempio lo stemming: facile a dirsi, ma a farsi ?

    A tal proposito ci sono degli algoritmi che hanno 20-30 anni rintracciabili su Internet (anche gia' codificati) per compiere tali operazioni. Si tratta di prenderli, analizzare cio' che fanno e adattarli alle nostre esigenze.
    Sono tecniche che a grandi linee sono costretti ad usare anche Google, Yahoo ed Msn...

    Esiste una versione adattata all'italiano dell'algoritmo di stemming di Porter (risalente agli anni 80) che si chiama [url=http://snowball.tartarus.org/algorithms/italian/stemmer.html]Snowball

    @uMoR said:

    Già progettare e realizzare un crawler fatto bene, che non consumi tante risorse, è difficile.
    Mica vogliamo fare concorrenza a google 🙂


  • Super User

    Io comincerei a partire con calma, partendo dal progettare una struttura intelligente, espandibile, versatile.

    E' troppo facile dopo aver letto 3 documenti postati sul forum pensare di padroneggiare certe tecniche di IR e così via.

    Già progettare e realizzare un crawler fatto bene, che non consumi tante risorse, è difficile.

    Hai perfettamente ragione

    questa è una discussione iniziale, ora si troverà il modo di creare e coordinare un Gruppo per iniziare un'analisi più approfondita e individuare come proseguire con il lavoro


  • User Attivo

    io l'ho sempre detto anche su html.it
    è inutile definirsi seo se non si sa programmare.

    cmq a parte questo rinzi ha ragione, spero che nei documenti del progetto ci siano spiegazioni per chi ne mastica di meno a riguardo di algoritmi, cluster e via dicendo.


  • User Attivo

    A tal proposito ci sono degli algoritmi che hanno 20-30 anni rintracciabili su Internet

    Chiaro, ci sono anche motori di ricerca interi già fatti.

    Il problema è prendere il codice, leggerlo capirlo smanettarci sistemarlo e così via.

    Ad ogni modo, buon lavoro ! :fumato:


  • User

    mi piacerebbe partecipare ma non sono così esperto, buon lavoro!

    cmq avete anche voi gli stessi [url=http://www.downloadblog.it/post/1058/il-giappone-contro-google-e-yahoo]finanziamenti del Giappone? 😄

    ok, me ne vado, buon natale! :ciauz:


  • Super User

    @resigua said:

    cmq avete anche voi gli stessi [url=http://www.downloadblog.it/post/1058/il-giappone-contro-google-e-yahoo]finanziamenti del Giappone? 😄

    fantasticare è bello ma l'obiettivo nn è quello di mettere il bastone tra le ruote a Google ne di emularlo

    vogliamo cercare di capire come funzionano i criteri di ranking

    poi chissà domani quali orizzonti vedremo...


  • Super User

    vogliamo cercare di capire come funzionano i criteri di ranking

    poi chissà domani quali orizzonti vedremo...

    E' così 🙂

    Ma stranamente ho come l'impressione che a qualcuno non piaccia che la parte più attiva del ForumGT possa vedere orizzonti più ampi... :bho:

    Davvero ci preferite a parlar di streganze e macumbe? 😄


  • Community Manager

    Per gli insulti alla mia persona e nei confronti della **mia comunità **[url=http://www.giorgiotave.it/forum/viewtopic.php?t=6316]continuate pure in questo topic

    Prego invece di continuare qui la discussione sul motore 🙂

    Abbiamo stabilito una commissione che svilupperà il motore.
    Abbiamo stabilito un capo-progetto
    Abbiamo stabilito un'interlocutore che informerà e spiegherà al forum tutti i passi per rendere questa esperienza del Forum e studiare insieme tutti gli aspetti che i Geniacci devono affrontare 🙂

    :ciauz:


  • User Attivo

    Stamattina girando per blog ho trovato [url=http://www.symfony-project.com/askeet/21]questo, magari può essere utile :ciauz:


  • User Attivo

    io vi consiglio di dare un'occhiata a
    "Perlfect Search"

    è un motore di ricerca in perl, potrebbe tornare utile per capire come strutturare il tutto


  • User Attivo

    Fare un motore di ricerca e' semplicissimo, potrebbe avere anche 2 o 3 algoritmi di sort e via.

    Fare un buon motore di ricerca e' difficilissimo, cosi' ad occhio mi vengono in mente almeno un centinaio di algoritmi diversi da far interagire tra di loro.

    Fare un grande-vasto motore di ricerca e' impossibile se non si dispone di risorse adeguate, per capirlo basta provare ad indicizzare e catalogare un milione di pagine, e poi dopo, provare a pensare che invece di qualche milione si parla di miliardi di pagine.


  • User Attivo

    Indicizzare 1000000 di pagine mi sembra vada più che bene per i nostri studi...
    O no?!?


  • Super User

    Fare un motore di ricerca e' semplicissimo, potrebbe avere anche 2 o 3 algoritmi di sort e via.

    Spiegare come è stato fatto ai forumisti rendendoli partecipi del suo funzionamento ed innalzandone il livello conoscitivo sarà interessantissimo 😉


  • Super User

    Eccoci qui. 🙂

    Cominciamo per ora l'approfondimento del IR in questo thread, per evitare dispersioni, poi appena sarà più sviluppato ne creeremo uno apposito.

    Come abbiamo già più volte scritto, il fine è quello di alzare il più possibile il livello della parte attiva di questo ForumGT, ricordando che il livello del Forum stesso non è dato dalle domande dei forumisti ma dalle risposte.

    Stà a noi ora fare il possibile affinchè si cerchi di rendere accessibile a quella parte il funzionamento dei MDR.


    ** Modello Vettoriale di Reperimento Informazioni**
    Il [url=http://www.hray.com/5264/math.htm]Modello Vettoriale di Reperimento delle Informazioni è un potente strumento per la realizzazione del Motore di ricerca.

    Questa discussione cerca di fornire un'introduzione ai concetti matematici richiesti per capire il vector model ed intende mostrare l'applicazione di quei concetti nello sviluppo del modello stesso.

    L'aritmetica con cui "funzionano" i computers è a base 2
    Le informazioni (numeri, parole ecc .) che vengono elaborate o memorizzate in un computer sono codificate come sequenze di bit.
    Un bit (binary digit) è la più piccola unità di informazione e può prendere i valori : 0 oppure 1 .

    Un byte è una sequenza di 2 ³ = 8 bit . Per esempio: 00110101 è il possibile contenuto di un byte.

    Il Kb (chilobyte) corrisponde a image bytes, cioè 1024 bytes.
    Il Mb (megabyte) corrisponde a image Kb .
    Il Gb (gigabyte) corrisponde a image Mb .

    **Logaritmi: log(N) **
    Il logaritmo è la prima funzione matematica che dobbiamo capire perché il Modello Vettoriale ha equazioni logaritmiche (N/ni).
    **Se non conosciamo cos?è un logaritmo non possiamo capire il concetto del Modello Vettoriale. **

    In primo luogo, che cosa è una funzione matematica? Nella sua forma più semplice, una funzione è un calcolo che prende un numero come input, effettua un calcolo su quell'input e restituisce il valore del calcolo.
    Consideriamo la funzione quadrata, "sq".

    • sq(2) restituisce 4.
    • sq(9) restituisce 81.
      Così il sq(N) significa restituire il valore di N * N.

    Seguendo questa linea di pensiero, il log (2) significa restituire il logaritmo del numero 2.
    Il log (N) significa restituire il valore del logaritmo della variabile N, qualunque valore N possa avere.

    Conosciamo ora come quadrare un numero, ma che cosa è la funzione di logaritmo?
    Come è calcolato?

    Si chiama logaritmo in base a di b l'unica soluzione dell'equazione esponenziale elementare.

    Supponiamo di dover risolvere un'equazione esponenziale ax=b :
    :
    ? se a e b si scrivono come potenze (razionali) della stessa base, si eguagliano gli esponenti :

    2x* =8 --> 2x = 23 --> x=3 *

    ? se a e b non si scrivono come potenze (razionali) della stessa base, le soluzioni si scrivono sotto forma di logaritmi : 2x = 8 --> x=log2 8

    Il logaritmo risulta essere l'operazione inversa dell'esponenziale.

    Senza studiare troppo il senso del termine, possiamo giocare un pò con Google e vedere le risposte che restituisce per la funzione di logaritmo. Google ha un calcolatore incorporato che utilizziamo per questa ricerca.
    Digitiamo "log 0,5" (senza le virgolette) in Google e otteniamo -0,301029996.
    Proviamo con "log 95" ed otteniamo 1,97772361.
    Possiamo tentarne altri; qual è il log 6666?

    Questi numeri a caso ci danno un?idea del sistema, ma se realizziamo una tabella organizzata di numeri, questa ci rivela la vera traccia:

    N -->log ( N )
    1 --> 0
    10 --> 1
    100 --> 2
    1000 --> 3
    10000 --> 4

    Base 10 alla potenza del* log (N)*=N.
    Quindi, se abbiamo un numero (10) e prendiamo il suo logaritmo e innalziamo 10 a quella potenza, otteniamo di nuovo il nostro numero originale:

    • 10 alla prima =10
    • 10 alla seconda = 100
    • 10 alla terza = 1.000
    • 10 alla quarta = 10.000

    La tabella indica che la funzione di logaritmo è utile nei numeri compressi molto grandi fino ai formati maneggevoli; questo è un calcolo di riduzione in "ordine di grandezza?.
    Inoltre, notiamo che il log(1) è uguale a zero.

    Ripetiamo facendo un altro esempio.

    la potenza abbiamo visto è il prodotto di fattori uguali alla base tante volte quanto indicato dall'esponente.
    Per esempio:
    image
    5 ³ = 125

    La potenza ammette due tipi diversi di operazione inversa : la radice ed il logaritmo.

    Radici.
    Consideriamo la potenza 5 ³ = 125 . Possiamo allora definire l' "operazione" di radice a indice 3 (o radice cubica) :

    image

    Logaritmi.
    Esiste un altro modo di definire l'operazione inversa dell'elevamento a potenza : il logaritmo.

    Consideriamo ancora la potenza 5 ³ = 125 . Chiediamoci : qual'è il numero per cui elevare la base 5 per ottenere 125 ? Ovviamente questo numero è 3 .

    Abbiamo così definito il concetto di logaritmo. Scriviamo allora :
    image

    dove il numero 5 scritto in basso a destra del simbolo *log * si chiama base ed il numero di cui si fa il logaritmo si chiama argomento.

    La definizione di logaritmo è allora :

    Il logaritmo di un numero secondo una certa base è quel numero per cui si deve elevare quella base per ottenere il numero dato.

    La caratteristica più interessante della funzione di logaritmo è che i log dei valori fra 0 e 1 sono numeri negativi.
    Per esempio, log (0,5) = -0,301029996.
    Molte volte vedremo* -log(x)* in un'equazione.

    Se il valore di quel segno è negativo, ora sappiamo dunque che la X è una variabile che varia da zero ad uno.

    Così ora se vediamo il log (N) in un'equazione, abbiamo un?idea di che cosa significhi e con esso possiamo valutare alcuni valori.

    Un logaritmo misura quindi l'ordine di grandezza di un numero N.
    E? solo un più piccolo numero che sostituisce quello originale.

    E nel caso speciale dove la N è uno, allora il log(N) sarà zero.


    Un ardito Gruppo di Geniacci ha già iniziato a tramare per realizzare un semplice motore di ricerca.

    Passo passo vi terrò informati sugli sviluppi, cercando di spiegare cosa hanno realizzato e perchè i nostri eroi.

    Oggi abbiamo visto i logaritmi.

    La prossima puntata studieremo i coseni. :ciauz:


  • Super User

    Il coseno
    Il coseno è una funzione trigonometrica con alcune proprietà che sono molto utili nell'analizzare i vettori. [vector model]

    Stiamo raffigurando i** documenti** della nostra raccolta del nostro motore come vettori.
    Inoltre raffiguriamo la **query **dell'utente come vettore.
    Se potessimo confrontare in qualche modo il vettore di domanda ai vettori di ciascuno dei documenti, potremmo dire quale dei documenti sia "il più vicino" alla domanda.
    Ciò ci darebbe una classifica per la nostra ricerca.

    Dunque, come classificare la prossimità dei vettori?

    Una via da considerare (un pò complicata) è misurare l'angolo fra loro.
    Se l'angolo è molto piccolo, significa che i due vettori sono abbastanza vicini. Se l'angolo è grande, allora non lo sono.
    Facile.

    Tuttavia, se desideriamo usare la matematica occupandoci di angoli, otteniamo numeri-gradi bizzarri.
    Gli angoli non sono difficili da manipolare se sono predisposti per variare in modo regolare ... come fra uno e zero per esempio.

    **0 **potrebbe significare "completamente differente" e 1 potrebbe significare "identico" con una gamma completa di valori (somiglianze) fra 0 e 1.

    Ora, se facciamo una tabella di alcuni angoli e dei loro coseni, possiamo vedere come il coseno semplifica gli angoli:

    Angolo A --> Coseno (A)
    0° --> 1
    30° --> .86
    45° --> .70
    60° --> .5
    90° --> 0

    La tabella indica che quando l'angolo fra due vettori è molto piccolo, il coseno è prossimo a 1.
    Effettivamente, se i due vettori combinano perfettamente, il coseno è uguale a 1.
    Nella nostra applicazione IR, quello sarebbe una accostazione perfetta fra il vettore di domanda e un vettore del documento. 🙂

    Mentre l'angolo aumenta, il coseno (il grado di somiglianza fra i vettori) diminuisce fino a che non raggiunge zero quando i vettori sono a 90 gradi.
    Guardiamo l?immagine:
    imageimageimage
    In un sistema organizzato in cui ogni coordinata ha avuto la sua dimensione, quella potrebbe essere una misura approssimativa di somiglianza. Tuttavia per il nostro modello di vettore desideriamo stimare diverse coordinate (termini di ricerca) anche usando sistemi diversi; dobbiamo quindi rendere il sistema un po? più complicato 🙂
    E lo faremo presto!

    **Per ora, vediamo che il coseno è una funzione che misura un rapporto fra due vettori. **

    Il coseno dell'angolo fra loro è prossimo a UNO se i vettori convergono ed è prossimo a ZERO se l?angolo fra i vettori si avvicina a novanta gradi.


    Abbiamo già visto che usando la funzione matematica dei logaritmi log (N) possiamo suddividere valori fra 0 e 1;

    • log (1) = 0
    • -log(x) [i log dei valori fra 0 e 1 sono numeri negativi, per esempio, log (0,5) = -0,301029996. ] Se il valore di quel segno è negativo, sappiamo che la X è una variabile che varia da zero ad uno.
      Nel caso speciale log (N) dove il valore (N) è uno, allora il log(N) sarà zero.

    Sappiamo ora anche che con l'uso dei coseni possiamo misurare un rapporto fra due vettori; il coseno dell'angolo fra loro è:

    • prossimo a UNO se i vettori convergono.

    • prossimo a ZERO se l?angolo fra i vettori si avvicina a novanta gradi.

    La prossima puntata studieremo la Sommatoria
    image

    :ciauz:


  • User Attivo

    Ciao a tutti ragazzi, progetto davvero interessante :vai:

    mi sarebbe piaciuto potermi unire al gruppo, ma non posso farne neanche richiesta perchè sono troppo impegnato. 😞

    preparare il meccanismo base credo sia la cosa più complicata, ma nessuno si è posto il problema di come individuare il testo illeggibile

    Non sottovalutate questo aspetto, ci sono dichiarazioni nei fogli di stile complicatissime

    es: UL#categoria_destra LI A.gruppo

    associare del testo a queste dichiarazioni è davvero difficle. Per non parlere dei livelli a diversi z-index e/o posizionati fuori dalla visibilità.

    Insomma, sebbene per ora non sia una cosa fondamentale, è bene che qualcuno ci inizi a lavorare perchè non mi sembra una cosa semplice.

    In bocca al lupo a tutti! :ciauz:


  • Bannato User

    Mi posso unire anche io ??
    Io avevo gia incominciato qualcosa da solo per me
    Ho utilizzato openwebspider leggermente modificato

    Sto usando mysql come db anche se non mi sembra il massimo Io sono arrivato a spiderizzare qualcosa come 500 mila siti ed il db supera i 2 giga per questo dico che non va troppo bene perchè appena mi fa una query complessa muore li e arriva anche a 2 minuti

    Io sto usando lavorando in una sorta di logica fuzzy (anche se la trovo parecchio inadatta per come ho strutturato io) e dove attribuisco al numero dei caratteri della pagina un valore massimo di 1 la numero decimale delle lettere presenti e lo divido per il numero fuzzy degli spazi e cosi ottengo una sorta di coefficiente che mi da la media di distanza tra parola e parola . A questa guardo quanti spazi ho tra una frase mia e quella che è stata cercata dall'utente. Poi provo a suggerire con la funzione levenshtein in php 5 eventuali possibilità di suggerimento (ma anche questo lo devo ottimizzare perche troppo lento - salvo i valori in un array e poi li estraggo ma non mi piace) . Ora mi sono fatto un bot in php che segue gli url nelle pagine (avevo pensato a sto bot per far creare online la mappa di google proprio per risolvere il problema dei siti dinamici e dover far mettere a mano agli utenti i singoli link) e devo dire che funziona davvero bene . Il limite è il timeout di esecuzione che ha i limiti di apache

    A me la cosa interessa tantissimo
    se mi posso aggregare mi farebbe piacere

    PS : io so programmare in php e mysql


  • Super User

    Il nostro obiettivo è: > - creare un piccolo Gruppo molto preparato [ i Geniacci] e coordinato da un Responsabile che realizzino un semplice motore di ricercaal fine di comprendere il funzionamento dell' IR e del vector model. [questo Gruppo è già partito]

    • coinvolgere la parte più attiva del ForumGT nella discussione e nell'approfondimento di ciò che il Gruppo stà creando e metterlo in condizioni di comprendere il Progetto spiegando loro come è stato fatto, rendendoli partecipi del suo funzionamento ed innalzandone il livello conoscitivo

    Caro Gasmor 🙂
    Non ho capito perchè dobbiamo assolutamente porci il problema di come individuare il testo illeggibile. Il nostro obiettivo è ben altro che individuare il testo illeggibile.

    Caro Cached, certo che ti puoi unire, sei il benvenuto 🙂
    Per la realizzazione del semplice motore di ricerca, come puoi immaginare occorre un Gruppo molto affiatato, ed i nostri Geniacci sono già all'opera ;)... vi terrò costantemente informati.
    Per quanto riguarda invece il discutere ed approfondire l'argomento del funzionamento dei MDR, ogni contributo è il benvenuto.

    Ovviamente qui approfondiamo *questa *esperienza e potrebbe risultare fuorviante aprire discussioni sulle proprie esperienze personali, per le quali ti consiglio eventualmente di aprire un altro thread.

    :ciauz: