2010-07-13 10 views
9

Il seguente testo non strutturato ha tre temi distinti: Stallone, Philadelphia e la rivoluzione americana. Ma quale algoritmo o tecnica useresti per separare questo contenuto in paragrafi distinti?Come utilizzare la PNL per separare un contenuto di testo non strutturato in paragrafi distinti?

I classificatori non funzionano in questa situazione. Ho anche provato a usare l'analizzatore di similarità Jaccard per trovare la distanza tra le frasi successive e ho cercato di raggruppare frasi successive in un paragrafo se la distanza tra loro era inferiore a un dato valore. C'è un metodo migliore?

Questo è il mio testo di esempio:

Sylvester Stallone Gardenzio, soprannominato Sly Stallone, è un attore, regista e sceneggiatore. Stallone è noto per il suo machismo e i ruoli d'azione di Hollywood. Il film di Stallone, Rocky, è stato inserito nel National Film Registry e ha i suoi oggetti di scena collocati nello Smithsonian Museum. L'uso di Stallone dell'ingresso principale del Philadelphia Museum of Art nella serie Rocky ha portato l'area ad essere soprannominata Rocky Steps. Centro commerciale, educativo e culturale, Philadelphia era una volta la seconda città dell'Impero Britannico (dopo Londra), e il centro sociale e geografico delle 13 colonie americane originali. Fu il fulcro della storia americana, ospitò molte delle idee e delle azioni che diedero vita alla Rivoluzione americana e all'indipendenza. La Rivoluzione americana fu lo sconvolgimento politico durante l'ultima metà del XVIII secolo in cui tredici colonie nel Nord America si unirono insieme per liberarsi dall'impero britannico, combinando per diventare gli Stati Uniti d'America. Per prima cosa hanno respinto l'autorità del parlamento della Gran Bretagna per governarli dall'estero senza rappresentanza, e quindi espulso tutti i funzionari reali. Nel 1774 ciascuna colonia aveva istituito un Congresso provinciale, o un'istituzione governativa equivalente, per formare singoli stati autonomi.

risposta

1

Non so molto di questo, quindi questa risposta è una trappola per una migliore. Tuttavia, due punti

  1. Un nome per questo problema è l'identificazione argomento, ed è un http://research.microsoft.com/en-us/um/people/cyl/download/papers/thesis97.pdf frequentemente citate carta in quest'area.
  2. Questo è probabilmente molto difficile. Non avrei separato Filadelfia dalla rivoluzione americana se non mi avessi detto.
14

Quindi ho lavorato in PNL per un lungo periodo e questo è un problema davvero difficile che stai cercando di affrontare. Non sarai mai in grado di implementare una soluzione con un'accuratezza del 100%, quindi dovresti decidere in anticipo se è meglio prendere decisioni false-negative (non riuscendo a trovare un punto di segmentazione del paragrafo) o prendere decisioni false-positive (inserendo segmentazione spuria punti). Una volta fatto ciò, assemblare un corpus di documenti e annotare i veri punti di segmentazione che ci si aspetta di trovare.

Una volta fatto, avrete bisogno di un meccanismo per trovare i punti EOS (alla fine della frase). Quindi, tra ogni coppia di frasi, dovrai prendere una decisione binaria: dovrebbe essere inserito un limite di paragrafo qui?

È possibile misurare la coesione di concetti all'interno di ciascun paragrafo in base a diversi punti di segmentazione. Per esempio, in un documento con cinque frasi (ABCDE), ci sono sedici diversi modi di segmentare esso:

ABCDE ABCD|E ABC|DE ABC|D|E AB|CDE AB|CD|E AB|C|DE AB|C|D|E 
A|BCDE A|BCD|E A|BC|DE A|BC|D|E A|B|CDE A|B|CD|E A|B|C|DE A|B|C|D|E 

Per misurare la coesione, si potrebbe utilizzare una somiglianza frase-per-frase metrica (in base a qualche raccolta di caratteristiche estratte per ogni frase). Per semplicità, se due frasi adiacenti hanno una metrica di similitudine pari a 0.95, quindi c'è un "costo" di 0,05 per combinarli nello stesso paragrafo. Il costo totale di un piano di segmentazione del documento è l'insieme di tutti i costi di iscrizione della frase. Per arrivare alla segmentazione finale, si sceglie il piano con il costo aggregato meno costoso.

Ovviamente, per un documento con più di poche frasi, ci sono troppe diverse permutazioni di segmentazione possibili per la forza bruta che valuta tutti i loro costi. Quindi avrai bisogno di un po 'di euristica per guidare il processo. La programmazione dinamica potrebbe essere utile qui.

Per quanto riguarda l'effettiva estrazione della frase ... beh, è ​​qui che diventa davvero complicato.

Probabilmente vuoi ignorare le parole altamente sintattiche (parole connettive come preposizioni, congiunzioni, verbi d'aiuto e marcatori di clausole) e basare la tua somiglianza su parole più semanticamente rilevanti (nomi e verbi e, in misura minore, aggettivi e avverbi).

Un'implementazione ingenuo potrebbe semplicemente contare il numero di istanze di ogni parola e confrontare i parola conta in una frase con i conteggi di parola in una frase adiacente. Se una parola importante (come "Philadelphia") appare in due frasi adiacenti, allora potrebbe ottenere un punteggio di somiglianza elevato.

Ma il problema è che due frasi adiacenti potrebbero avere argomenti molto simili, anche se quelle frasi hanno serie di parole completamente non sovrapposte.

Quindi è necessario valutare il "senso" di ogni parola (il suo significato specifico, dato il contesto circostante) e generalizzare tale significato per racchiudere un dominio più ampio.

Ad esempio, immagina una frase con la parola "verdastro" in essa. Durante il mio processo di estrazione di caratteristiche, mi piacerebbe sicuramente includere il valore esatto lessicale ("verde"), ma mi piacerebbe anche applicare un morfologica trasformare, normalizzando la parola alla sua forma radice ("verde"). Poi cercherò quella parola in una tassonomia e scoprirò che si tratta di un colore, che può essere ulteriormente generalizzato come descrittore visivo. Quindi, basandomi su quell'unica parola, potrei aggiungere quattro caratteristiche diverse alla mia collezione di caratteristiche di frase ("verdastro", "verde", "[colore]", "[visivo]"). Se la frase successiva nel documento si riferisse nuovamente al colore "verde", allora le due frasi sarebbero molto simili. Se la frase successiva usasse la parola "rosso", allora avrebbero ancora un grado di somiglianza, ma in misura minore.

Quindi, ci sono alcune idee di base. Potresti elaborare questi infiniti e modificare l'algoritmo per ottenere buoni risultati sul tuo set di dati specifico. Ci sono un milione di modi diversi per attaccare questo problema, ma spero che alcuni di questi suggerimenti siano utili per iniziare.

0

Per questo esempio, il metodo migliore è quello di trovare punti fermi che non sono seguiti da uno spazio!

Problemi correlati