Un aspetto molto affascinante del machine learning è la possibilità di
istruire un sistema informatico per comprendere il significato di un testo scritto da un essere umano.
Le possibilità di applicazione dei risultati ottenuti e ottenibili in questo campo sono svariate e tra le più promettenti del panorama attuale.
Il primo passo per entrare in questo mondo è quello del riconoscimento o classificazione di un testo.
Questo pacchetto contiene un'applicazione del concetto di Bag of Words (BoW).
Il BoW è la struttura dati più usata nella trattazione elementare dell'analisi automatica del testo. Dal punto di vista matematico si tratta di un multiset cioè un insieme che permette la presenza di più istanze dello stesso elemento. In pratica, si tratta di realizzare un sporta che contenga tutte le parole di un testo.
Il testo è trasformato in una sporta di parole. Si perdono le strutture sintattiche perché si perde l'ordine con cui le parole entrano nelle frasi del testo.
L'applicazione presentata tenta il riconoscimento dell'autore di un testo basandosi su un database di BoW precedemtemente acquisito.
Descrizione del tool
- Il tool si usa sia per popolare il database di testi che per riconoscere l'autore del testo.
- Il testo deve essere un documento in formato testuale.
- Eventuali caratteri accentati vengono trasformati nelle corrispondenti vocali senza accento.
Addestramento/istruzione del sistema
In realtà, non si tratta propriamente di un addestramento, comunque non discutiamo della terminologia in questo contesto.
Affinché il sistema sia capace di riconoscere il testo di un certo autore, è necessario che sia stato prima addestrato con un altro testo dello stesso autore.
Per addestrare il sistema verso un autore bisogna quindi disporre di un testo di quest'ultimo e poi bisogna assegargli una classe univoca che lo contraddistingua:
Salgari = 0
Supponendo di disporre del testo
La Tigre della Malesia nel file
LaTigredellaMalesia.txt si lancia il tool da linea di comando:
./cognitiva_bow aggiungi LaTigredellaMalesia.txt 0
L'argomento
aggiungi specifica che il tool è lanciato per aggiungere un testo alla Bag of Words, quindi per l'addestramento.
L'output mostra che sono state aggiunte 151909 parole alla BoW dell'autore specificato dalla classe 0, nella fattispecie Emilio Salgari.
La prima volta che si lancia il tool viene creato il file
Bow.txt. Questo file viene aggiornato ad ogni ulteriore addestramento.
Ricerca dell'autore
La ricerca dell'autore di un testo è limitata agli autori già processati dal sisteme, quindi è necessario che almeno un testo dell'autore sia conetnuto nel file
Bow.txt. Dalla linea di comando si lancia
./cognitiva_bow classifica LaTigredellaMalesia.txt
Test del sistema
Nel tool, sotto la directory
esempi/testo, sono presenti quindici semplici testi formati da una singola proposizione. I nomi dei file hanno la strutura:
A<classe autore>_<indice testo>.txt
Sono presenti tre testi per cinque classi di autori. Prima si inseriscono due testi per autore (per esempio il primo e il secodo) poi si usa il terzo per verificare se il sistema ne riconosce l'authorship.
I testi sono stati creati apposta per questo esempio e non rappresentano un vero test del sistema.
Per testare seriamente il sistema si possono usare invece i romanzi pubblicati sul sito
gutenberg.org come abbiamo fatto noi.
Conclusioni
Questo tool del pacchetto Cognitiva introduce un concetto fondamentale del Natural Language Processing, cioè il Bag of Words. È sorprendente verifcare con mano, come già un semplice naive Bayes, possa usare il Bow per identificare l'autore di un romanzo tra decine, centinaia e migliaia di autori diversi.
The tools are Open Source code distributed under GNU-GPL license. The tools are developed in the Scuola Sisini using GNU-gcc and GNU-Emacs editor only. Please, visit the Free Software Foundation and GNU project for more information about that.