2010-05-13 15 views
5

Sto cercando di determinare la somiglianza del documento tra un singolo documento e ciascuno di un grande numero di documenti (n ~ = 1 milione) il più rapidamente possibile. Più in particolare, i documenti che sto confrontando sono e-mail; sono raggruppati (cioè ci sono cartelle o tag) e vorrei determinare quale gruppo è più appropriato per una nuova e-mail. Le prestazioni veloci sono fondamentali.Somiglianza documento molto veloce

mio un'assunzione priori è che la somiglianza coseno tra vettori termine è appropriato per questa applicazione; per favore commenta se questa è una buona misura da usare o no!

ho già preso in considerazione le seguenti possibilità per accelerare le prestazioni:

  1. Pre-normalizzare tutti i vettori termine

  2. Calcolo un vettore termine per ogni gruppo (n ~ = 10.000) piuttosto che ogni e-mail (n ~ = 1.000.000); probabilmente sarebbe accettabile per la mia applicazione, ma se riesci a pensare a un motivo per non farlo, fammi sapere!

ho alcune domande:

  1. Se una nuova e-mail ha un nuovo termine mai visto prima in una qualsiasi delle precedenti messaggi di posta elettronica, significa che ho bisogno di ri- compute all dei miei vettori termine? Questo sembra costoso.

  2. Esiste un modo intelligente per considerare solo i vettori che potrebbero essere vicini al documento di query?

  3. C'è un modo per essere più parsimoniosi sulla quantità di memoria che sto usando per tutti questi vettori?

Grazie!

risposta

4

Utilizzare Bayesian filtering. Il collegamento fornito si riferisce al filtro antispam, ma è possibile adattare l'algoritmo abbastanza facilmente a più categorie/tag.

Ci sono molti buoni SO question about Bayesian filtering, anche.

+0

Grazie per la raccomandazione. Il filtraggio bayesiano è un'idea interessante. Ho alcune domande: 1. Perché pensi che BF sia meglio della somiglianza del coseno per questa istanza? 2. Potrei mancare qualcosa, ma il mio tempo di categorizzazione non sarà ancora O (n) per n = numero di categorie, proprio come farebbe per la somiglianza del coseno? Penso che quello di cui ho bisogno è una tabella di ricerca O (log n) o O (1) per classificare i probabili candidati alla categorizzazione. – Peyton

+0

Tornando a questo - ora sto provando il filtro bayesiano per il problema - mi sembra una buona idea, quindi accetta questa risposta. – Peyton

Problemi correlati