• User Attivo

    eventuali nuovi algoritmi

    ho letto ke per quanto riguarda teecno stiamo implementando un algoritmo per la ricerca e per l inserimento dei siti web nel database.
    scusate l'ignoranza ma ci rifacciamo a qlc algoritmo opern source o sarebbero ben accette eventuale analisi di nuovi algoritmi?
    sono un programmatore c++ quindi nn so se potrebbe servire una mano per quanto riguarda un eventuale analisi
    grazie


  • Community Manager

    Ciao freedoom,

    attualmente abbiamo varie basi da seguire, fatte da noi.

    Puoi studiare quelle perchè il nostro obiettivo è trasformare il php anche in C 🙂

    Quindi...


  • User Attivo

    beh da dove piglio il codice?
    posso gia confertirlo in c++?
    saluti


  • Community Manager

    Spetta 4 giorni che torna Tonyx, chiedigli in pvt l'accesso al subversion, da li scarichi le ultime versioni 🙂

    E decidiamo un piano di azione 🙂


  • User Attivo

    ok gg


  • User

    ragazzi, non credo sia molto utile trasformare il nostro linguaggio in C ... perchè il C è utilizzato per le applicazioni desktop e il php per le applicazioni web.
    Anche volendo usare C++ o C# come ben sapete, la maggior parte di suite di sviluppo per questi due linguaggi (soprattutto il secondo ) è priprietaria .. e noi nn vogliamo di certo sviluppare un open source con suite proprietarie.
    Come già accennato in altri post, sarebbe utile la traduzione in Python o Perl.. ma tradurre il software in c++ sarebbe non solo uno spreco di tempo, ma anche una cosa inutile.
    Sbaglio o è così? 😄 Buon Lavoro .. :yuppi:


  • User

    allora il discorso open source nn riguarda il tipo di architettura ma come viene gestito il progetto, cioè se ne vengono rilasciati i sorgenti (come dice il nome :D), infatti puoi fare sw open source anche con c.
    forse quello ke volevi dire tu è forse la compatibilità con linux, c e c++ sono supportati, invece c# ha come base Mono che sarebbe un "port" (meglio dire una suite x sviluppare .net x altre piattaforme) per il framework .net.


  • Community Manager

    Anche Python non sarebbe male.

    In entrambi i casi per il motore di ricerca Teecno.it dovremmo usare un altro linguaggio 🙂

    Come motore interno va bene anche in php 🙂


  • User

    sto studiando un manualone di python (guardacaso :P) ...se quando l'avrò finito non c sta nessuno + esperto di me, lo faccio io il motore (ovviamente collaborando con chiunque voglia).
    😮


  • Community Manager

    @^woznihack^ said:

    sto studiando un manualone di python (guardacaso :P) ...se quando l'avrò finito non c sta nessuno + esperto di me, lo faccio io il motore (ovviamente collaborando con chiunque voglia).
    😮

    Bravo studia Python, così poi possiamo fare un piano di sviluppo per l'attuale motore.

    Tra un pochino torna Tonyx 🙂


  • User Attivo

    Salve a tutti,

    sono tornato da qualche giorno ora riorganizziamo un po il tutto.

    Per quanto riguarda il mio pensiero sui linguaggi da adottare io la vedo la situazione un po in modo differente, ovvero io penso che stiamo usando giustamente il php come tecnologia per il web e per le interfacce utente (ricerca e risultati), ma ne facciamo un abuso per quanto riguarda la parte dello spider.

    Per lo spider preferirei come linguaggio proprio il c++ e se freedoom ci guida in questo magari riusciamo a farlo. Era stato proposto in alternativa python in quanto poteva avere gli stessi risultati o quasi del c++ ma con molto meno impegno. Anche se sempre in c++ sò che ci sono libreri già pronte per l'uso dei socket (badate bene su linux) che potrebbero facilitare la cosa.
    Motivo essenziale di questa sceltà (oltre alla questione performance) è motivato dal fatto che un sistema di spidering dovrebbe sempre correre in background scaricando nuovi siti e riscaricando vecchi siti se questi sono stati cambiati dall'ultima volta che lo spider è passato. Usando invece il php lo spider si muove solo quando viene chiamato, ci sarebbero metodi per farlo chiamare tramite "cron" ma il tutto è come già ho detto prima una forzatura.

    Ricordo che chiunque volesse ricevere un account per poter gestire i sorgenti di teecno mi deve mandare un messagio privato PM 😄

    freedoom facci sapere se ci puoi dare un contributo al progetto, lo spider deve viaggiare tra i server e colloquiare con il database per sapere quali url scaricare. In pratica sarebbè utilizzo di socket implementazione di una gestione delle intestazioni HTTP restituite (i vari codici: 200 ok, 404 page not found, 302 e 301 i redirect e la lettura della data di creazione del documento, dei cookie ecc.) e iterazione con mysql.

    Siete della stessa mia idea o avete vedute differenti?

    Per quanto riguarda gli algoritmi attualmente in teecno ce ne sono 2, uno creato dalle idee di questo forum che attribuisce pesi differenti alle parole in base alla loro posizione nella pagina, e l'altro è il Tf*IDF che non è nostro, ma già usato da altri motori. Qualsiasi altro algoritmo nuovo o usato da altri può essere implementato, ovviamente discutendone qui.

    Saluti
    Tony


  • User Attivo

    beh io sono a completa disposizione.
    ovviamente dovrei studiarmi gli eventuali modi di interazione tra c++ e db ( cosa ke a dir la verità non ho mai fatto ). Studiarli ovviamente non mi spaventa, decidiamo se conviene utilizzarlo che cosi me metto la lavoro 😄


  • User

    Salve a tutti ragassuoli .. da un po di tempo mi stavo (e continuo) dedicando allo sviluppo di un motore di ricerca .. poi vengo a conoscere teecno ... 🙂 innanzitutto vi faccio i miei complimenti perchè so che è un lavoraccio immane gia il semplice fatto di accomunare tantissime idee 😄 e tantissime teste 😄 e poi visto che in questo post si parla di nuovi algoritmi vorrei proporvi la strada che abbiamo intrapreso noi 😉 per ora perdonatemi se non rivelo il nome del nostro progetto che è nato da una semplice passione personale che sta sfociando in qualcosa di interessante.

    La mia idea che volevo suggerirvi è sulla falsa riga del Tf * IDF, l'algoritmo che avete implementato.

    Noi siamo partiti da una semplice supposizione. L'algoritmo in questione (in parole povere) per imparare fa una statistica sui documenti che reputa importanti e compara i nuovi per generare il loro posizionamento.

    Ecco noi partiti da questo semplice concetto, invece di avere documenti ritenuti importanti vogliamo usare la testa, il cervello che riteniamo importante e quindi studiare e determinare in base alle scelte effettuate dagli utenti il posizionamente di un documento che abbiamo in archivio e comparare i nuovi in base a quelle scelte.

    So che parlo in cinese e anche le miei spiegazioni sono scritte a volte in modo incomprensibile .. 😄 ma x chi vuole approfondire .. o ne parliamo qui oppure in privato con msn et simila ... 😉

    Come ho gia detto a Giorgio non mi sono offerto per lo sviluppo perchè potrei essere in conflitto con voi .. ma mi fa piacere poter discutere di alcune cosette che ci accomunano 😉

    in bocca al lupo per tutto 😄


  • User Attivo

    @'[CapoBecchino said:

    '] invece di avere documenti ritenuti importanti vogliamo usare la testa, il cervello che riteniamo importante e quindi studiare e determinare in base alle scelte effettuate dagli utenti il posizionamente di un documento che abbiamo in archivio e comparare i nuovi in base a quelle scelte.

    Ciao [CapoBecchino] e benvenuto nel forum GT, :ciauz:

    vuoi dire che partendo dalla ricerca che esegue l'utente e vedendo quale sito lui sceglie tra quelli proposti, voi attribuite più importanza ai siti visitati e meno a quelli poco cliccati?

    Interessante ciò che dici e soprattuto mi piace chi ha voglia di discutere e di condividere problemi, possiamo cercare insieme le soluzioni, se vogliamo è proprio questo lo spirito del forum. Posso farti delle domande generiche in merito?

    Il vostro algoritmo lo usate per migliorare i risultati ottenuti da un algoritmo base quale Tf*idf oppure usate solo quello?

    La cosa non è un pò falsata? Nel senso che l'utente sceglie il documento da leggere tra quelli restituiti dalla ricerca, se ad esempio il documenti più attinente si trova in 3a pagina e lui si sofferma a leggere solo gli articoli della prima, al vostro algoritmo risulterà che il tale documento presente in 1a pagina è il più attinente perchè scelto dall'utente, mentre non è così!
    Bisognerebbe che l'utente leggesse tutti i documenti per poter stabilire quale sia quello che risponde meglio alla sua ricerca e ciò, secondo me (conoscendo gli utenti medi) è impossibile.

    Se poi non ho capito ciò che volevi dire puoi gentilmente spiegare meglio?
    Tony.


  • User

    in sostanza è come tu hai detto .. analizziamo il comportamento diretto degli utenti anche se la cosa è un po + grande ..

    cerco di spiegarti ..

    allora mettiamo che io cerco "sedia" mi verranno dati dei risultati, ora noi misuriamo il tempo di permanenza su una pagina dei risultati, il numero di click che una pagina ha avuto in relazione ad una ricerca, il numero di volte che un utente ha fatto quella ricerca o che ha cambiato pagina nei risultati (cosi capiamo i suoi gusti) ... e alla fine analizziamo e settiamo la posizione.

    Ad ogni ricerca viene analizzato il contesto in cui è effettuata ..

    Ora come tu hai detto il risultato potrebbe essere falsato ma non è cosi perchè è vero che il mio termine "sedia" potrebbe avere una rilevanza dalla 3^ pagina dei risultati ma è anche vero (come nella realtà) che finchè non impara non sa dove posizionarlo .. anche l'uomo per sua natura deve catalogare le informazioni in suo possesso e lo fa per gradi man mano che impara ..

    cioè prima puoi imparare il termine guerra e lo associ alla distruzione, carestia, e tante cose brutte .. poi impari chi è saddam e quindi lo associ a guerra che di conseguenza viene associato a distruzione etc etc.. ecco il nostro algoritmo ricalcola la posizione in seguito a queste nuove info e analizza i gusti (risultati) in base alla nuova proposta ..

    questo in termini facili facili quello che noi facciamo ..

    spero che sia stato + chiaro .. 😄 e se vuoi appena pronto una demo funzionante ti passo i sorgenti per lo studio ...

    ora come ora sto cercando di preparare pagine quando + tra di loro disomogenee ..


  • User Newbie

    mmm...non so che dirti su questa idea. Penso bisognerebbe vedere il tutto in azione, solo cosi potremo vedere ,dopo un po di ricerche, il motore come risponderà. Però dico io... ma le pagini che risponderanno per prima alle query, al momento del lancio della prima versione, non saranno sempre avantaggiate ??? cmq...tutto sommato è una buona idea. In che linguaggio stai scrivendo il codice ???


  • User

    le pagine iniziali non saranno svantaggiati proprio per lo stesso motivo che una persona normale non è svantaggiata a scuola .. perchè? .. ma dai è facile .. i prof 😄

    cmq .. hai ragione bisogna vedere in funziona il tutto e testare 😉 infatti spero che a breve riesca a fare una alphissima versione 😄

    Il linguaggio che sto usando per ora è php lato utente .. ma credo che userò vb.net o c# per le parti server .. anche se per ora lo sviluppo in php 😉

    anche ruby non è niente male .. e volevo provarlo .. bah! vedrò .. per ora mi interessano gli algoritmi 😉 poi l'ottimizzazione 😄


  • User

    <convenevoli="leccata di fondoschiena"> Complimenti bla bla bla, progetto interessante bla bla bla, stima e rispetto bla bla bla </convenevoli>

    Veniamo al dunque:
    Ordinare le serp in base alle preferenze degli utenti è potenzialmente interessante, ma al contempo potenzialmente fallace... il numero di click (se fatto senza un controllo IP) si falsa con uno scriptino js di 4 righe con greasemonkey+FF, il tempo di permanenza su una pagina si falsa aprendo una pagina del browser e andando a fare una passeggiata in centro...
    Credo sarebbe più rilevante un ranking che dia un PR relativo, utilizzando un sistema di ranking fatto dall'utente, ma ovviamente con delle limitazioni.
    Cioè, il voto (da -1 a 10) ha magari una rilevanza dell' -1(10)/10.000, si logga il voto dell'IP associato al sito (magari creando una sorta di hash in un unico campo DB) e tanto per una pseudo sicurezza "per n00bs" gli si scrive un banalissimo cookie nella cache per evitare voti multipli da IP dinamici.

    In questo modo un IP vota solo 1 volta per risultato.
    Lo stesso metodo (magari solo l'IP) si potrebbe applicare anche ai click, ma sempre dandogli un valore bassissimo 1/10.000 o 5/100.000

    L'idea trova riscontro anche per fini statistici, ad esempio si potrebbe usare i dati dei click per proporre all'utente una pubblicità mirata ai suoi interessi... (è la prima cosa che mi viene in mente) ma questo è un altro discorso...