misura di somiglianza tra milioni di documenti [chiuso]

-1

Ho milioni di documenti (quasi 100 milioni), ogni documento ha campi come competenze, hobby, certificazione e istruzione. Voglio trovare la somiglianza tra ogni documento insieme a un punteggio.

Di seguito è riportato un esempio di dati.

skills  hobbies        certification    education
Java    fishing        PMP              MS
Python  reading novel  SCM              BS
C#      video game     PMP              B.Tech.
C++     fishing        PMP              MS

quindi quello che voglio è la somiglianza tra la prima riga e tutte le altre righe, la somiglianza tra la seconda riga e tutte le altre righe e così via. Quindi, ogni documento dovrebbe essere confrontato con ogni altro documento. per ottenere i punteggi di somiglianza.

Scopo è che interrogo il mio database per convincere le persone in base alle competenze. In aggiunta a ciò, ora voglio persone che, pur non avendo le competenze, sono in qualche modo in sintonia con le persone con le competenze specifiche. Ad esempio, se volevo ottenere dati per le persone che hanno abilità JAVA, apparirà la prima riga e ancora una volta, l'ultima riga apparirà uguale alla prima riga in base al punteggio di somiglianza.

Sfida: la mia sfida principale è calcolare un punteggio di somiglianza per ogni documento rispetto ad ogni altro documento, come si può vedere dallo pseudo codice sottostante. Come posso farlo più velocemente? C'è qualche modo diverso per farlo con questo pseudo codice o c'è qualche altro approccio computazionale (hardware / algoritmo) per farlo più velocemente?

document = all_document_in_db
For i in document:
   for j in document:
      if i != j :
        compute_similarity(i,j)

PS: io uso python

    
posta Enthusiast 27.07.2017 - 05:25
fonte

1 risposta

5

Penso che tu stia prendendo l'approccio sbagliato confrontando ogni documento con ogni altro documento. È necessario definire uno spazio N-dimensionale per contenere i documenti, quindi utilizzare un algoritmo adiacente più vicino per trovare le corrispondenze migliori. Questo sarà molte volte più veloce di fare 100.000.000 x 100.000.000 confronti tra documenti.

Esistono numerosi algoritmi che puoi prendere in considerazione. Se non hai familiarità con loro ti suggerisco di iniziare provando kd tree e vedi come funziona il tuo problema specifico.

    
risposta data 27.07.2017 - 05:55
fonte

Leggi altre domande sui tag