2011-01-22 16 views
15

Immaginiamo, ho due testi in lingua inglese scritti dalla stessa persona. È possibile applicare alcuni algoritmi di catena di Markov per analizzarli: creare una sorta di impronta digitale basata su dati statistici e confrontare le impronte digitali ottenute da testi diversi? Diciamo che abbiamo una libreria con 100 testi. Qualcuno ha scritto il testo numero 1 e anche un altro, e abbiamo bisogno di indovinare quale analizzando il suo stile di scrittura. Esiste un algoritmo noto che lo fa? Possono essere applicate le catene Markov qui?È possibile utilizzare lo "stile letterario" di un autore per identificarlo come autore di un testo?

+0

Un esempio famoso è, chi ha scritto quale [Federalist Papers] (http://en.wikipedia.org/wiki/Federalist_Papers)? Vedi le note 19 e 20 lì. – denis

risposta

12

Assolutamente è possibile, e in effetti il ​​record di successo nell'identificare un autore dato un testo o una parte di esso, è impressionante.

Un paio di studi rappresentativi (avvertenza: i link sono in file PDF):

per aiutare la vostra web-search, questa disciplina è spesso chiamato Stylometry (e occasionalmente, Stylogenetics).

Quindi le due domande più importanti sono suppongo: quali classificatori sono utili per questo scopo e quali dati vengono forniti al classificatore?

Quello che continuo a sorprendere è la quantità di dati necessaria per ottenere una classificazione molto accurata. Spesso i dati sono solo una lista di frequenze di parole. (Un elenco di elenchi di frequenze di parole è disponibile online here.)

Ad esempio, un set di dati ampiamente utilizzato in Machine Learning e disponibile da un numero di punti sul Web, è composto da dati di quattro autori: Shakespeare, Jane Austen, Jack London, Milton. queste opere furono divise in 872 pezzi (corrispondenti approssimativamente ai capitoli), in altre parole, circa 220 diverse parti sostanziali di testo per ciascuno dei quattro autori; ognuno di questi pezzi diventa un singolo punto di dati nel set di dati. Successivamente è stata eseguita una scansione a frequenza di parola su ciascun testo e le 70 parole più comuni sono state utilizzate per lo studio, mentre il resto dei risultati della scansione di frequenza è stato scartato. Ecco i primi 20 di questa lista di 70 parole.

['a', 'all', 'also', 'an', 'and', 'any', 'are', 'as', 'at', 'be', 'been', 
    'but', 'by', 'can', 'do', 'down', 'even', 'every', 'for', 'from'] 

Ciascun punto dati quindi è solo un conteggio di ogni parola di 70 parole in ciascuna delle 872 capitoli.

[78, 34, 21, 45, 76, 9, 23, 12, 43, 54, 110, 21, 45, 59, 87, 59, 34, 104, 93, 40] 

Ciascuno di questi punti dati è un'istanza dell'impronta letteraria dell'autore.

L'elemento finale in ciascun punto dati è un numero intero (1-4) che rappresenta uno dei quattro autori a cui appartiene quel testo.

Recentemente, ho eseguito questo set di dati tramite un semplice algoritmo ML non supervisionato; i risultati sono stati molto buoni - quasi completa separazione delle quattro classi, che potete vedere nel mio Answer a un precedente Q su StackOverflow relativo alla classificazione del testo usando ML in generale, piuttosto che l'identificazione dell'autore.

Quindi quali altri algoritmi vengono utilizzati? Apparentemente, la maggior parte degli algoritmi di Machine Learning nella categoria supervisionata può risolvere con successo questo tipo di dati. Tra questi, spesso vengono utilizzati percettori multistrato (MLP, ovvero reti neurali) (Author Attribution Using Neural Networks è uno di questi studi frequentemente citati).

+0

E 'possibile quindi tracciare un articolo anonimo al suo autore analizzando i testi SNS pubblici? – FRIdSUN

+0

@FRIdSUN non sono sicuro di cosa intendi per "SNS", assumerò che si tratti di un errore di battitura e che intendevi per SMS. Se è così, la mia risposta è no. Il motivo è che i messaggi SMS hanno il loro stile (informale), la sintassi e le regole di utilizzo, e tali regole lo farebbero. nascondere in modo efficace lo stile letterario della prosa di un autore. Ad esempio, interrompere la frequenza delle parole, spesso una firma forte dello stile dell'autore (cioè coerente su molti dei testi dell'autore) è probabilmente inutile per gli SMS - ad esempio, i testi SMS raramente hanno parole di stop ("un", "un" , "il") per brevità, spesso usano i simboli invece delle parole di stop ("&" per "e"), ecc. – doug

+0

SNS = Social Network Service. Intendevo se è possibile analizzare post di Facebook, tweet di Twitter, articoli medi e simili per fare una tale identificazione. – FRIdSUN

1

È possibile iniziare con una visita al sito Web Apache Mahout. Esiste una gigantesca letteratura sulla classificazione e il raggruppamento. In sostanza, si desidera eseguire un algoritmo di clustering, quindi sperare che "quale writer" determini i cluster.

+0

+1 per il riferimento Apach Mahout – thkala