Abbinando gli articoli con quelli simili

4

Sto creando un sito dove le persone possono scrivere su un argomento di nicchia. È quasi come un blog, tuttavia l'area che ho menzionato è una piccola nicchia con (spero) utenti appassionati.

Voglio una funzionalità in cui una volta che qualcuno pubblica il suo articolo. Le persone con un'esperienza simile possono essere avvisate, in modo che possano leggere. Ora la mia domanda è: come determinare articoli simili? So che il tagging è un modo - proprio come qui in StackExchange e lo implementerò. Ma supponiamo che le persone non taggano, o taggano in modo errato, l'intera esperienza utente sarà difficile da indulgere.

Qualcuno ha dei suggerimenti su come abbinare gli articoli oltre al metodo di tagging?

    
posta open_sourse 24.01.2013 - 22:42
fonte

3 risposte

7

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.

    
risposta data 25.01.2013 - 14:55
fonte
3

Ho alcune idee:

A) È possibile pre-definire una selezione di categorie che ciascun poster deve selezionare, con una categoria o più categorie per post. Questo elenco di categorie dovrebbe essere piuttosto completo, ma potrebbe essere modificato nel tempo.

B) Potresti implementare un sistema insieme al tagging del poster per consentire agli utenti di suggerire tag che dovrebbero essere aggiunti. Poiché i tag sono suggeriti, il poster verrebbe notificato e potrebbe facilmente approvare o rifiutare i tag secondo necessità.

C) Un approccio ibrido: implementa un sistema di tagging, ma consenti agli utenti di iscriversi a una raccolta di tag, consentendo a ciascun utente di personalizzare le categorie che potrebbero richiedere un articolo per avere più tag per qualificarsi.

Non penso che dovresti preoccuparti troppo degli utenti che non etichettano gli articoli. C'è un incentivo per loro di taggare correttamente se sanno che il sistema di tagging è ciò che attrae i lettori (e quindi il feedback e la fama futura).

    
risposta data 25.01.2013 - 00:10
fonte
0

Forse dovresti fare la tua indicizzazione degli articoli e aggiungere metadati ai tuoi articoli per facilitare la ricerca e il raggruppamento di categorie.

Ho implementato un sistema del genere insieme ad alcuni colleghi, abbiamo utilizzato Lucene.net per creare un ambiente di lavoro ecologico. Questo sarebbe utile per indicizzare i tuoi articoli, potresti creare più ricerche sulla base dei dati dei documenti. Esistono molti sistemi di indicizzazione che creano metadati e tag ampiamente disponibili su Internet. Ho trovato questo link per favore prova questo.

    
risposta data 25.01.2013 - 08:07
fonte

Leggi altre domande sui tag