Attualmente sto conducendo un progetto simile (anche se più generico) con il mio laboratorio. In quanto tale, voglio avvertirti che questa funzionalità è una tana del coniglio che può diventare molto complicata molto rapidamente. La prima cosa che devi fare è pensare ai tuoi utenti e ai tuoi obiettivi e decidere cosa è "abbastanza buono" o passerai molto tempo a sviluppare una funzionalità che, nel grande schema del tuo sito, potrebbe non essere così importante.
Fondamentalmente vuoi una sorta di sistema di recupero delle informazioni . Pensa a un mini-Google ma non altrettanto complesso. Per prima cosa devi decidere come definire la similarità tra gli articoli (una metrica ). Questo sarà gestito nella tua pre-elaborazione. Generalmente il tuo confronto reale sarà lo stesso indipendentemente dalla tua metrica (tipicamente somiglianza di cossine ).
Definizione di una metrica
Per prima cosa, devi decidere cosa rende gli articoli simili. Esistono due approcci principali: cercare somiglianze negli argomenti dell'articolo o cercare somiglianze nel testo dell'articolo. Gli argomenti forniranno risultati migliori, ma il testo è più facile da implementare.
Somiglianza per argomento
Come accennato più volte, il modo più semplice per implementare questo sistema è consentire di specificare argomenti tramite tag specificati dall'autore. Dovresti quindi cercare articoli con grandi sovrapposizioni nei tag. Se i tag sono numerosi e sufficientemente dettagliati, questo dovrebbe dare i risultati migliori.
Lo svantaggio è che è necessario riflettere molto su quali sono i tag per garantire copertura, chiarezza e mancanza di ridondanza. Se si utilizza l'approccio Stack Exchange per consentire agli utenti di creare tag personalizzati, è possibile aumentare la copertura, ma è necessario moderare i tag per mantenere la chiarezza / mancanza di ridondanza. Tuttavia, il più grande svantaggio di questo approccio è che ti fidi che gli utenti taggano in modo appropriato i loro post. SE aggira questo problema consentendo ad altri utenti di modificare e dare suggerimenti per i tag.
Puoi ottenere risultati ancora migliori taggando gli argomenti a livello di frase o di paragrafo. Fornisce una rappresentazione migliore di quali argomenti sono più importanti in un articolo, ma è più lavoro. Man mano che l'ambito di codifica si riduce, la complessità di questo compito diventa esponenzialmente più difficile.
Che ne pensi di una soluzione automatizzata per togliere il carico di lavoro agli utenti? Automatic Topic Identification è qualcosa che è stato studiato molto Non sono un esperto, ma ti suggerisco di leggere alcuni documenti e decidere se ritieni che queste soluzioni siano abbastanza mature da dare risultati affidabili. La mia preoccupazione per questo approccio è che, poiché ammetti che il tuo dominio è di nicchia, potresti avere difficoltà a trovare una soluzione pronta per l'uso e dovrai implementare l'identificatore dell'argomento da solo. A quel punto potresti anche fare una similarità basata sul testo perché sarà molto più semplice e esistono soluzioni pronte all'uso.
Similarità per testo
In questo approccio invece di confrontare i tag argomento, si confrontano le parole effettive nell'articolo. Il vantaggio è che la pre-elaborazione è molto più facile da realizzare. Lo svantaggio è che presuppone che un testo simile significhi un argomento simile, che non è sempre il caso.
Operazione funzionante
In generale, qualunque metrica tu scelga, finirai con un vettore che rappresenta i tuoi articoli. Forse il vettore è di frequenze di parola o di tag di argomento. Ora devi confrontare i vettori per i tuoi articoli per vedere quali sono simili.
Il corso di elaborazione linguistica naturale di Stanford offerto su coursera.com è una buona introduzione al recupero delle informazioni (in particolare le lezioni della settimana 7). Tieni presente che le soluzioni presentate in queste lezioni sono relativamente semplici, ma è un buon inizio.
Suggerirei caldamente di provare a trovare un'implementazione pronta all'uso qui. In caso contrario, l'utilizzo di un toolkit come Apache Lucene semplificherà notevolmente il tuo sviluppo.
Ora è necessario testare un sacco di algoritmi di ponderazione dei termini e vedere quale fornisce i migliori risultati per i dati. TREC è una competizione per trovare algoritmi di ponderazione migliori e migliori. Controlla gli atti sul loro sito Web per trovare discussioni sugli algoritmi di ponderazione più recenti e più accurati.