Copyrigtht © 2001 Universita' di Firenze. All rights reserved.
Free license available.
Viene trattata l'implementazione dell'algoritmo precedentemente descritto, illustrando i moduli principali e le loro correlazioni. Nella seconda parte si forniscono gli elementi necessari all'utilizzo del programma. Poiché circa il 60% delle pagine disponibili nel web sono in lingua inglese, le stop word e l'algoritmo di stemming sono stati modellati per gestire termini inglesi.
La realizzazione del programma è stata fatta in C++ utilizzando la libreria standard STL. In questo modo non ci sono problemi di portabilità tra più sistemi operativi. La scelta del linguaggio di programmazione è stata dettata dal fatto che c'è una fase piuttosto onerosa di elaborazione dei documenti e di raccolta delle statistiche. Inoltre anche il calcolo del valore di similarità di due documenti può coinvolgere un numero molto elevato di moltiplicazioni e divisioni, proporzionale alla lunghezza del vocabolario.
La struttura del programma rispecchia le due fasi dell'algoritmo di confronto. In particolare vi sono due classi che modellano rispettivamente il vocabolario ed una pagina web. Essendo un programma a linea di comando, una funzione si occupa di gestire l'input dell'utente. Un'altra funzione esegue l'algoritmo di stemming ai termini che gli vengono passati come argomento.
Le due classi presenti nel programma modellano il vocabolario ed una pagina web.
La classe che gestisce il vocabolario ha dei metodi per effettuare tutte le operazioni che possono essere utili. Innanzitutto una funzione si occupa della creazione del vocabolario partendo da un file indice contenente il percorso ed i nomi di tutte le pagine che si voglio utilizzare per generarlo. Gli altri due metodi permettono il salvataggio e la lettura del vocabolario in un file: si può così creare il vocabolario una sola volta ed utilizzarlo senza doverlo rigenerare ogni volta. Al limite si possono inserire manualmente i termini nel file che memorizza il vocabolario.
La classe che gestisce una pagina html raccoglie tutti i metodi necessari per elaborare una pagina. In dettaglio, vi sono funzioni che cancellano i tag html, che eliminano i caratteri non alfanumerici, che rendono una pagina case insensitive, che suddividono la pagina in elementi lessicali detti token, che cancellano le stop words, che trovano delle sottostringhe ed altre ancora meno importanti. Un problema che si incontra nell'analizzare una pagina html riguarda gli errori presenti nella pagina. Il parser della pagina è stato progettato in modo da gestire gli errori presenti e da recuperare il testo che ne è coinvolto. Essendo stato testato su 8280 pagine, si può affermare che sia sufficientemente robusto agli errori.
Il programma a linea di comando permette di fare tre cose:
stampare l'help;
creare un vocabolario di termini;
confrontare due pagine html.
Per stampare l'help basta digitare:
./wchange --help
oppure più semplicemente solo il nome del programma:
./wchange
Per creare un vocabolario di termini significativi per il dominio di interesse, basta digitare:
./wchange --create-vocabulary
Se non viene specificato altro, vengono usati di default i seguenti file:
vocabulary per il vocabolario;
indexFile per il file contenente il percorso ed il nome di tutte le pagine necessarie
a creare il vocabolario;
stopwords per la lista delle stop word.
La sintassi completa per la creazione del vocabolario è la seguente:
./wchange --create-vocabulary
[-v vocabulary-file-name=vocabulary]
[-i index-file-name=indexFile]
[-s stop-words-file-name=stopwords]
Per confrontare due pagine html, basta digitare:
./wchange --compare-html-page
Se non viene specificato altro, vengono usati di default i seguenti file:
vocabulary per il vocabolario;
htmlpage1 per la prima pagina html;
htmlpage2 per la seconda pagina html.
La sintassi completa per confrontare due pagine html è la seguente:
./wchange --compare-html-page
[-v vocabulary-file-name=vocabulary]
[-h1 html-page-1-file-name=htmlpage1 -h2 html-page-2-file-name=htmlpage1]