Un classificatore di testo che spiega le sue decisioni


11

Sto costruendo un classificatore di testo per frasi brevi. Oltre a dire all'utente "la categoria del testo che hai inserito è C", voglio essere in grado di spiegare perché ho preso questa decisione, in modo breve e comprensibile. Ad esempio, non voglio dire all'utente "Ho inserito la tua frase in una complessa rete neurale a 3 livelli e questa è la risposta che ha ottenuto il miglior punteggio"; Voglio spiegazioni come "La tua frase contiene le parole U, V e W, che sono caratteristiche di questa categoria, a causa di frasi come X, Y e Z che sono comparse nei dati di allenamento".

La mia domanda è: quali algoritmi di classificazione sono più adatti a tale applicazione?

k-più vicini di casa sembra un buon candidato, perché posso dire all'utente "La tua frase ha categoria C perché è simile alle frasi X, Y e Z che hanno la stessa categoria. Ma è noto che le sue prestazioni sui problemi di categorizzazione del testo sono essere povero. Sto cercando un classico che bilancia le prestazioni con la capacità di spiegazione.

EDIT: Dopo aver trascorso molto tempo alla ricerca di un simile classificatore, ho iniziato a costruire una libreria di apprendimento automatico chiamata limdu , che consente ai classificatori di spiegare le loro decisioni. È ancora in fase di sviluppo, ma mi ha già aiutato a spiegare a me stesso e ai miei colleghi perché i nostri classificatori falliscono così spesso ...


Il punto dell'apprendimento automatico è che non ti interessa ciò che accade sotto il cofano, ti preoccupi solo delle prestazioni. L'altro approccio ha fallito, ed è per questo che oggigiorno tutti usano questi approcci statistici opachi: sono semplicemente molto meglio.
Yuval Filmus,

2
@Yuval Non sono completamente d'accordo sul fatto che gli altri approcci abbiano fallito. Non sono ottimali ma raggiungono comunque l'obiettivo di automatizzare le attività di classificazione ben al di sopra di ciò che un essere umano ha la capacità o la pazienza di fare. Le scatole nere opache non sono l'unico modo per eseguire in modo efficace l'apprendimento automatico soprattutto in situazioni come questa in cui le prestazioni non sono l'unica considerazione. Sii un po 'più aperto di mente riguardo ai diversi obiettivi alla base delle attività di apprendimento automatico.
Richard D,

Risposte:


7

Sebbene funzioni male nelle attività di classificazione del testo, se si desidera una chiara spiegazione del ragionamento della classificazione, un albero decisionale sarebbe l'opzione migliore in quanto fornisce regole chiare per la classificazione di un'istanza. Una traccia dell'albero fornirebbe i valori determinanti e analizzando le istanze vicine al nodo radice, potresti persino essere in grado di determinare quali attributi fossero più significativi nella classificazione.

Un'altra opzione sarebbe quella di utilizzare un classificatore Naive Bayes , che si comporta meglio per le attività di estrazione del testo e ti darebbe uno schema di valutazione comprensibile basato sulle probabilità che potresti utilizzare per generare il "perché" che stai cercando, anche fornendo un'indicazione di quali valori di attributo erano più importanti di altri nel prendere la decisione.

Support Vector Machines , in particolare l'ottimizzazione minima sequenziale (SMO), sembrano funzionare bene con questi compiti e allo stesso modo fornire indicazioni sui valori usati per fare la classificazione sotto forma di pesi di attributo e vettori di supporto, ma penso che potresti avere un momento più difficile rendendo esplicito il modo in cui questi pesi e vettori hanno influenzato la decisione generale di classificazione.

Buona fortuna con il vostro progetto! Sembra molto interessante.


1
Grazie. Ho anche scoperto che i classificatori online, come perceptron e winnow, sono abbastanza bravi in ​​questo compito (almeno nel mio scenario), ed è facile spiegare la decisione osservando il valore assoluto che ogni caratteristica aggiunge al punteggio della classifica. Per ogni campione, ordino le caratteristiche in base al valore assoluto di (caratteristica * peso) e ne mostro le prime.
Erel Segal-Halevi,

3

Ricordo vagamente che Peter Norvig aveva implementato MYCIN , un sistema esperto di diagnosi medica , scritto in LISP nel suo libro Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp , che ha fatto esattamente questo.

Forse è un buon posto per iniziare la tua ricerca. Troverai il codice sorgente online, insieme a una rule base , tuttavia, consiglio vivamente di leggere il testo e di non provare a capirlo solo dal codice sorgente.

Puoi anche andare direttamente alla pagina per Emycin (la mia enfasi),

Emycin è una shell di sistema esperto , un framework per la creazione di programmi che registrano le conoscenze degli esperti di dominio e utilizzano tali conoscenze per aiutare gli utenti non esperti a risolvere i problemi. Fornisce un'interfaccia che aiuta gli esperti a definire tipi di dati e regole, un algoritmo di ragionamento concatenato all'indietro (simile a Prolog, ma con differenze chiave), un meccanismo per gestire l'incertezza e strutture per l'introspezione che consentono agli utenti di apprendere ciò che il sistema conosce e cosa sta facendo .


2
C'è un motivo per cui i sistemi esperti non sono più molto popolari, è difficile codificare tutte le regole.
adrianN,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.