2012-01-01 44 views
16

Mi trovo a dover imparare cose nuove tutto il tempo. Ho cercato di pensare a modi in cui avrei potuto accelerare il processo di apprendimento di nuove materie. Ho pensato che sarebbe stato bello scrivere un programma per analizzare un articolo di Wikipedia e rimuovere tutto tranne le informazioni più preziose.Riassumere un articolo di Wikipedia

Ho iniziato prendendo l'articolo di Wikipedia su PDFs ed estraendo le prime 100 frasi. Ho dato a ciascuna frase un punteggio basato sul valore che ritenevo fosse. Ho finito per creare un file seguendo questo formato:

<sentence> 
<value> 
<sentence> 
<value> 
etc. 

Ho poi analizzati questo file e cercato di trovare varie funzioni che avrebbero correlare ogni frase con il valore che avevo dato. Ho appena iniziato a conoscere l'apprendimento automatico e le statistiche e quant'altro, quindi sto facendo un sacco di problemi qui intorno. Questo è il mio ultimo tentativo: https://github.com/JesseAldridge/Wikipedia-Summarizer/blob/master/plot_sentences.py.

Ho provato un po 'di roba che non sembra produrre molto di alcuna correlazione - lunghezza media delle parole, posizione nell'articolo, ecc. Praticamente l'unica cosa che ha prodotto una qualche relazione utile è stata la lunghezza della stringa (in particolare, il conteggio del numero di lettere minuscole "e" sembra funzionare meglio). Ma sembra un po 'schifoso, perché sembra ovvio che frasi più lunghe potrebbero più facilmente contenere informazioni utili.

A un certo punto ho pensato di aver trovato alcune funzioni interessanti, ma poi quando ho provato a rimuovere i valori anomali (con il solo conteggio dei quartili interni), si è scoperto per produrre risultati peggiori, semplicemente restituendo 0 per ogni frase. Questo mi ha fatto pensare a quante altre cose potrei sbagliare ... Mi sto anche chiedendo se questo sia anche un buon modo per affrontare questo problema.

Pensi che sia sulla strada giusta? O è solo una commissione da scemo? Ci sono delle vistose carenze nel codice collegato? Qualcuno sa di un modo migliore per affrontare il problema di riassumere un articolo di Wikipedia? Preferirei avere una soluzione rapida e sporca rispetto a qualcosa di perfetto che richiede molto tempo per essere assemblato. Qualsiasi consiglio generale sarebbe anche il benvenuto.

+0

Successivamente, vorrai che usiamo newspeak per rendere l'articolo scansionato ancora più breve;) – tylerthemiler

+4

Sei chiaramente troppo vecchio. Lascia questo tipo di cose ai 16 anni http://www.wired.com/gadgetlab/2011/12/summly-app-summarization/ – ColinE

+0

:) Summly sembra interessante. Non riesco a eseguirlo sul mio ipod, ma posso leggere le recensioni. Erano piuttosto misti. Ho avuto l'impressione che non funzioni così bene. –

risposta

13

Considerando che la tua domanda si riferisce più a un'attività di ricerca che a un problema di programmazione, dovresti probabilmente guardare alla letteratura scientifica. Qui troverai i dettagli pubblicati di un certo numero di algoritmi che eseguono esattamente ciò che desideri. Una ricerca su Google per "riepilogo parola chiave" trova il seguente:

Single document Summarization based on Clustering Coefficient and Transitivity Analysis

Multi-document Summarization for Query Answering E-learning System

Intelligent Email: Aiding Users with AI

Se avete letto quanto sopra, quindi seguire i riferimenti in esse contenuti, troverete tutta una ricchezza di informazione. Certamente abbastanza per costruire un'applicazione funzionale.

+2

Ok, quindi devo solo frustare un grafico delle dipendenze basato sull'analisi della relazione di dipendenza sintattica e utilizzare un coefficiente di clustering per misurare le connessioni del nodo. Quindi si tratta semplicemente di estrarre i triangoli dei nodi e usarli per estrarre le frasi chiave. ffs ... così tanto per veloce e sporco. Seriamente, grazie per i documenti. Questa è probabilmente la migliore informazione che sarò in grado di ottenere. –

+4

Ehi ... hai appena sintetizzato le parole chiave per quel documento. Forse questo è un lavoro per un meccanico turk! – ColinE

1

Solo i miei due centesimi ...

Ogni volta che sto navigando un nuovo soggetto su Wikipedia, io di solito eseguire un "breadth-first" ricerca; Mi rifiuto di passare a un altro argomento fino a quando non ho scansionato ogni singolo collegamento a cui si collega la pagina (che introduce un argomento con cui non ho ancora familiarità). Ho letto la prima frase di di ogni paragrafo, e se vedo qualcosa in quell'articolo che sembra riguardare l'argomento originale, ripeto il processo.

Se dovessi progettare l'interfaccia per un "summarizer" Wikipedia, avrei

  1. Stampa sempre l'intero paragrafo introduttivo.

  2. Per il resto dell'articolo, stampare qualsiasi frase contenente un collegamento.

    2a. Stampa qualsiasi elenco di collegamenti separati da virgola come elenco puntato.

  3. Se il collegamento all'articolo è "espanso", stampare il primo paragrafo per tale articolo.

  4. Se il paragrafo introduttivo è espanso, ripetere l'elenco di frasi con collegamenti.

Questo processo potrebbe ripetersi indefinitamente.

Quello che sto dicendo è che riassumere articoli di Wikipedia non equivale a riassumere un articolo di una rivista o un post su un blog. L'atto di strisciare è una parte importante dell'apprendimento rapido di concetti introduttivi tramite Wikipedia, e ritengo che sia il meglio. In genere, la metà inferiore degli articoli è il punto in cui i tag citation needed iniziano a spuntare, ma la prima metà di un determinato articolo viene considerata dalla community come conoscenza.

Problemi correlati