funzionalità web intelligenti, algoritmi (persone si può seguire, simili a voi ...)

StackOverflow https://stackoverflow.com/questions/4436348

  •  09-10-2019
  •  | 
  •  

Domanda

Ho 3 domande principali circa algoritmi intelligenti web (web 2.0)

Ecco il libro che sto leggendo http://www.amazon.com/ algoritmi-intelligente-Web-Haralambos-Marmanis / dp / 1933988665 e voglio imparare gli algoritmi più a fondo

1. persone che possono seguire (Twitter)

Come si può determinare il risultato più vicino alle mie richieste? Estrazione dei dati? che gli algoritmi?

2. come si sta funzione connessa (Linkedin)

Semplicemente algoritmo funziona così. Si disegna il percorso tra due nodi diciamo tra Me e l'altra persona è C . Me -> A, B -> Connessioni A -> C . Non è qualsiasi algoritmo di forza bruta o qualsiasi altro come algoritmi per grafi:)

3. simile a te (Twitter, Facebook)    Questo algoritmi è simile a 1. Ha semplicemente funziona al massimo (conteggio) amico in comune (Facebook) o massimo (conteggio) seguace twitter? o qualsiasi altri algoritmi attuano? Penso che la seconda parte è vero, perché l'esecuzione del ciclo

 dict{count, person}
 for person in contacts:
        dict.add(count(common(person)))
 return dict(max)

è un atto stupido in ogni pagina rinfrescante.

4. Cercavi (Google)     So che possono attuare con fonetica algoritmo http: //en.wikipedia .org / wiki / Phonetic_algorithm semplicemente soundex http: // it .wikipedia.org / wiki / Soundex e qui è la Google VP of Engineering e CIO Douglas Merrill parlare http://www.youtube.com/watch?v=syKY8CrHkck#t=22m03s

Che dire di prime 3 domande? Tutte le idee sono benvenute!

Grazie

È stato utile?

Soluzione

Le persone che si può seguire

È possibile utilizzare i fattori di calcoli basati:

factorA = getFactorA(); // say double(0.3)
factorB = getFactorB(); // say double(0.6)
factorC = getFactorC(); // say double(0.8)

result = (factorA+factorB+factorC) / 3 // double(0.5666666666666667)
// if result is more than 0.5, you show this person

Quindi, dire, nel caso di Twitter, "Le persone che si può seguire" possono in base ai seguenti fattori (utente A è l'utente che visualizza questo "Le persone che si può seguire" caratteristica, ci possono essere più o meno fattori):

  • Relatività tra le parole chiave frequenti trovato nel tweet dell'utente B per l'utente A e
  • Relatività tra la descrizione del profilo di entrambi gli utenti
  • Relatività tra la posizione di utente A e B
  • Sono persone Utente A seguendo segue l'utente B?

Quindi, da dove si confronta "Le persone che si può seguire" da? L'elenco probabilmente proveniva da una combinazione di persone con elevata quantità di seguaci (che sono probabilmente le celebrità, alfa geek, prodotti famosi / servizi, ecc) e [persone che l'utente A seguendo] sta seguendo.

In pratica c'è un certo livello di data mining per essere fatto qui, leggendo i tweet e bios, calcoli. Questo può essere fatto su un lavoro cron giornaliera o settimanale quando il carico del server è almeno per il giorno (o forse fatto 24/7 su un server separato).

Come si è collegato

Questo è probabilmente un lavoro intelligente qui per farvi sentire che i carichi di forza bruta è stato fatto per determinare il percorso. Tuttavia dopo alcune ricerche di superficie, trovo che questo è semplice:

Diciamo che sono l'utente A; L'utente B è il tuo collegamento; e l'utente C è una connessione di utente B.

Al fine di poter visitare l'utente C, è necessario vedere il profilo dell'utente B prima. Visitando Profilo utente B, il sito già salvare le informazioni indiciating che l'utente A è al profilo dell'utente B. Quindi, quando si visita l'utente C da utente B, il sito ti dice subito che 'utente A -> utente B -> User C'., Ignorando tutti gli altri percorsi possibili

Questo è il livello massimo al User C, l'utente Acannot andare avanti a guardare il suo connessioni fino a quando l'utente C è la connessione dell'utente A.

Fonte: osservando LinkedIN

Simile a voi

E 'la stessa cosa come # 1 (persone che possono seguire), salvo che l'algoritmo si legge in un elenco diverso di persone. L'elenco delle persone che l'algoritmo legge in è il popolo che si segue.

Cercavi

Bene avete capito bene proprio lì, se non che Google probabilmente usato più di un semplice soundex. C'è traduzione, la sostituzione di parola, e molti altri algoritmi utilizzati per il caso di Google. Non posso commentare molto su questo perché sarà probabilmente ottenere molto complesso e io non sono un esperto di lingue maniglia.

Se si ricerca un po 'più in infrastruttura di Google, possiamo trovare che Google dispone di server dedicati a ortografia e servizi di traduzione. È possibile ottenere ulteriori informazioni sulla piattaforma di Google a http://en.wikipedia.org/wiki/Google_platform.

Conclusione

La chiave di algoritmi altamente intensificati è caching. Una volta che si memorizzare nella cache il risultato, non c'è bisogno di caricare ogni pagina. Google lo fa, Stack Overflow lo fa (per la maggior parte delle pagine con la lista di domande) e Twitter non sorprende troppo!

In sostanza, gli algoritmi sono definiti dagli sviluppatori. È possibile utilizzare algoritmi di altri, ma alla fine, è anche possibile creare il proprio.

Altri suggerimenti

La gente si può seguire

Potrebbe essere uno dei molti tipi di algoritmi di raccomandazione, forse collaborativo filtraggio ?

Come si è connessi

Questa è solo un algoritmo di percorso più breve sul grafico sociale. Presumere che vi sia alcun peso ai collegamenti, sarà sufficiente utilizzare ampiezza .

Simile a voi

Semplicemente un ri-arrangiamento del set di dati utilizzando lo stesso algoritmo persone che possono seguire .

Scopri il libro Programmazione Intelligenza Collettiva per una buona introduzione al tipo di algoritmi che vengono utilizzati per persone che possono seguire e simile a voi , si ha il codice di grande pitone disponibili anche.

  1. La gente si può seguire Da Twitter blog - "suggerimenti sono basati su diversi fattori, tra cui persone che segui e le persone che seguono" http://blog.twitter.com/2010/07/discovering-who-to-follow.html Quindi, se si seguono A e B ed entrambi follow C, allora Twitter suggerirà C a voi ...
  2. come si sta funzione collegato Penso di aver risposto questo.
  3. Simile a voi Per quanto sopra e come dici tu, anche se i risultati sono probabilmente memorizzati nella cache - così il suo solo fatto una volta per sessione o forse anche meno frequentemente ...

Speranza che aiuta, Chris

Non uso Twitter; ma con questo in mente:

1). In superficie, questo non è poi così difficile: Per ogni persona seguo, vedere chi seguono. Poi per ciascuna delle persone che seguono, vedono che seguono, ecc Il più profondo si va, naturalmente, il più macinare numeri che ci vuole.

Si può prendere questo un po 'più lontano, se si può anche estrarre in modo efficiente il contrario:? Per coloro che seguo, che li segue anche

Per entrambi i modi, ciò che è non detto è un modo per pesare i tweeter per vedere se sei una persona che avrei molta voglia di seguire: Un seguace liberale può anche seguire un tweeter conservatore, ma questo non significa che mi piacerebbe vuole seguire il conservatore (vedi # 3).

2). Non è sicuro, a pensarci ...

3). Supponendo che il bio e tweets sono l'unica cosa da andare avanti, le parti dure sono:

  • Decidere quali attributi dovrebbe esistere (appartenenza politica, i tipi di argomento, ecc.)
  • Pulizia ogni 140 caratteri ai dati-mine.

Una volta che hai il giusto insieme di attributi, poi due diversi algoritmi vengono in mente:

  • K-Means, per decidere quali attributi tendo a discriminare.
  • N-più vicino prossimo, per trovare le N tweeter più simili a voi dato gli attributi tendo a dare peso.
  • EDIT: In realtà, un albero di decisione è probabilmente un modo di gran lunga migliore per fare tutto questo ...

Questo è tutto speculativa, ma suona divertente se si dovesse essere pagati per farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top