2010-07-23 7 views
8

In un'app che sto creando, voglio aggiungere funzionalità che raggruppino le notizie. Voglio raggruppare notizie sullo stesso argomento da diverse fonti nello stesso gruppo. Ad esempio, un articolo su XYZ da CNN e MSNBC si troverebbe nello stesso gruppo. Sto indovinando una sorta di paragone fuzzy. Come potrei fare questo dal punto di vista tecnico? Quali sono le mie opzioni? Non abbiamo ancora iniziato l'app, quindi non siamo limitati nelle tecnologie che possiamo usare.Come raggruppare/confrontare articoli di notizie simili

Grazie in anticipo per l'aiuto!

risposta

8

Questo problema si scompone in alcuni sottoproblemi dal punto di vista dell'apprendimento automatico.

In primo luogo, vorrai capire quali proprietà delle notizie vuoi raggruppare in base a. Una tecnica comune è usare 'word bags': solo un elenco delle parole che appaiono nel corpo della storia o nel titolo. È possibile eseguire alcune operazioni aggiuntive come la rimozione dell'inglese comune "stop words" che non fornisce alcun significato, come "il", "perché". Puoi anche fare porter stemming per rimuovere le ridondanze con parole al plurale e termini come "-ion". Questo elenco di parole è il vettore di funzionalità di ciascun documento e verrà utilizzato per misurare la somiglianza. Potrebbe essere necessario eseguire un po 'di pre-elaborazione per rimuovere il markup html.

In secondo luogo, è necessario definire una metrica di somiglianza: storie simili hanno un punteggio elevato nella similarità. Andando avanti con il sacco di parole si avvicinano, due storie sono simili se hanno parole simili in loro (io sono vago qui, perché ci sono un sacco di cose che puoi provare, e dovrai vedere quale funziona meglio).

Infine, è possibile utilizzare un algoritmo di clustering classico, ad esempio k-means clustering, che raggruppa le storie insieme, in base alla metrica di somiglianza.

In breve: converte una notizia in un vettore di funzionalità -> definisce una metrica di somiglianza basata su questo vettore di funzionalità -> clustering senza supervisione.

Check out Google scholar, probabilmente ci sono stati alcuni articoli su questo argomento specifico nella letteratura recente. Molte di queste cose che ho appena discusso sono implementate nei moduli di elaborazione del linguaggio naturale e di apprendimento automatico per la maggior parte delle principali lingue.

+0

Ottima risposta! Questo e 'esattamente quello che stavo cercando. Domanda di follow-up veloce. Se stavo cercando uno sviluppatore con questi set di abilità, che tipo di cose dovrei chiedere? Non so nemmeno cosa si chiama questo campo di studi. – Randy

+0

Cerca uno studente di informatica che abbia seguito una lezione o abbia avuto esperienza con "elaborazione del linguaggio naturale" o "apprendimento automatico". La tua domanda è stata molto semplice per rispondere in un contesto di apprendimento automatico, quindi basta chiedere loro come implementare qualcosa che raggruppa le notizie. Inoltre, progetti come questo non sempre funzionano perché ci sono un sacco di cose che possono andare in rovina in ML e NLP - ma quando funziona, è davvero fantastico. –

1

Un approccio sarebbe quello di aggiungere tag agli articoli quando sono elencati. Un tag sarebbe XYZ. Altri tag potrebbero descrivere l'argomento dell'articolo.

È possibile farlo in un database. Puoi avere un numero illimitato di tag per ogni articolo. Quindi, i "gruppi" potrebbero essere identificati da uno o più tag.

Questo approccio è fortemente dipendente dall'essere umano che assegna tag appropriati, in modo che gli articoli giusti vengano restituiti dalla ricerca, ma non troppi articoli. Non è facile fare davvero bene.

+0

hmmm, buona soluzione, ma non penso che funzionerebbe per noi. la nostra soluzione estrae automaticamente articoli dal Web senza alcuna interazione umana, quindi non possiamo etichettarli. – Randy

2

Il problema può essere suddiviso a:

  • Come rappresentare articoli (caratteristiche, di solito un sacco di parole con il TF-IDF)
  • Come calcolare similarità tra due articoli (coseno di similitudine è la più popolare)
  • come raggruppare gli articoli insieme sulla base di quanto sopra

ci sono due grandi gruppi di algoritmi di clustering: batch e incrementale. Batch è fantastico se hai tutti i tuoi articoli in anticipo. Poiché stai raggruppando notizie, probabilmente i tuoi articoli sono arrivati ​​in modo incrementale, quindi non puoi raggrupparli tutti in una volta. Avrai bisogno di un algoritmo incrementale (alias sequenziale), e questi tendono ad essere complicati.

Puoi provare anche a http://www.similetrix.com, una rapida ricerca su Google li ha spuntati e pretendono di offrire questo servizio tramite API.