Giter Club home page Giter Club logo

classificatoretesti's Introduction

Classificatore di Testi

Autore: Marco Scanu

Obiettivo

Scrivere un programma che realizzi un classificatore binario di testi utilizzando tecniche di classificazione supervisionata "nearest neighbors" basate sul conteggio delle occorrenze delle singole parole in un testo.

Il programma si dovrà articolare in due fasi:
Una fase di addestramento (training) in cui il programma riceve in input:

  • un file contenente tutte le parole ammissibili e
  • due insiemi di file, uno etichettato come “SPAM” e uno etichettato come “OK”.

In questa fase il programma analizza i file in ingresso e salva su un file di output i dati relativi alle occorrenze delle singole parole nei file “SPAM” e nei file “OK”. L’output di questa fase è un file contenente informazioni sulle occorrenze delle parole nei file.

Una fase di classificazione (testing) in cui il programma riceve in input:

  • il file contenente i dati relativi alle occorrenze generato nella fase precedente e
  • un insieme di file da classificare come “OK” e “SPAM”.

L’output di questa fase è la classificazione risultante.

Specifiche funzionali

La prima fase del programma (fase di training) deve essere invocata tramite la linea di comando:

java Main TRAIN <file_dizionario> <directory_ok> <directory_spam> <file_occorrenze>

dove: <file_dizionario> è il nome del file completo di percorso contenente l’elenco di parole lecite;
<directory_ok> (<directory_spam>) è il nome della directory completa di percorso in cui sono contenuti i file "OK" ("SPAM") per l’addestramento;
<file_occorrenze> è il nome del file completo di percorso su cui viene registrato il risultato della fase di training.

La seconda fase del programma (fase di testing) deve essere invocata tramite la linea di comando:

java Main TEST <file_dizionario> <file_occorrenze> <directory_testi>

dove:
<file_dizionario> è il nome del file completo di percorso contenente l’elenco di parole lecite;
<file_occorrenze> è il nome del file completo di percorso contenente l’output della fase precedente;
<directory_testi> è il nome della directory completa di percorso in cui sono contenuti i file da classificare.

Formato di input

Il formato dei file di input nella fase di training è il seguente:

  • Il dizionario (parametro <file_dizionario>) è un file di testo contenente un elenco di parole in ordine alfabetico, e tale per cui in ogni riga compare una sola parola scritta in caratteri minuscoli.
  • La directory dei file "OK" (parametro <directory_ok>) contiene un insieme di file di testo in cui compaiono solamente le parole lecite del dizionario. I file sono privi di segni di interpunzione e altri caratteri non alfabetici. Le parole sono separate esclusivamente da uno o più spazi e dal ritorno a capo.
  • I file della directory "SPAM" (parametro <directory_spam>) hanno lo stesso formato di quello dei file "OK".

Il formato dei file di input nella fase di testing è il seguente:

  • Il file dizionario (parametro <file_dizionario>) ha lo stesso formato descritto sopra.
  • Se n è il numero di file "OK", m è il numero di file "SPAM" e d è il numero di parole lecite acquisite nella fase di training, il file delle occorrenze (parametro <file_occorrenze>) contiene un numero di righe pari a n + m + 2 e un numero di colonne pari a d + 1.

All’interno il file è organizzato come segue:

OK
<file_OK_1> <occ_1_1> ... <occ_1_d>
...
<file_OK_n> <occ_n_1> ... <occ_n_d>
SPAM
<file_SPAM_1> <occ_1_1> ... <occ_1_d>
...
<file_SPAM_m> <occ_m_1> ... <occ_m_d>

dove:
<file_OK_i> è il nome dello i-esimo file "OK" letto nella fase di training;
<file_SPAM_i> è il nome dello i-esimo file "SPAM";
<occ_i_j> è il numero di occorrenze della j-esima parola del dizionario nello i-esimo file ("OK" o "SPAM").

Il file è suddiviso in due sezioni, la prima delimitata dalla parola chiave OK e la seconda delimitata dalla parola chiave SPAM.
Nelle due fasi, il programma non prende nessun altro tipo di input se non quello specificato e nelle modalità indicate.

Formato di output

Il formato del file di output della prima fase (training) è descritto sopra.
L’output della seconda fase (testing) è una serie di p righe a console in cui ogni riga contiene le seguenti informazioni:

<file_1> <etichetta>
...
<file_p> <etichetta>

dove:
<file_i> è il nome di uno dei p file da classificare contenuto nella direcotry passata in input alla seconda fase;
"etichetta" è un valore a scelta fra OK oppure SPAM.

Nelle due fasi, il programma non emette nessun altro tipo di output se non quello specificato.

classificatoretesti's People

Contributors

gitmarco19 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.