Universidad
de Costa Rica
Facultad
de Ingenieria
Escuela
de Ciencias de Computación e Informática
Autómatas
y Compiladores
CI
– 1322
Profesor:
Adolfo
Di Mare
Estudiantes:
Alonso
Ramirez Araya A44254
818
– 13 – 69
Carlos
Gourzong Gómez A32314
829
– 76 – 37
Martes
20 de Marzo del 2007
Contenido
2. Arquitectura Interna del programa:
El presente documento
puede ser accesado en formato html en el sitio
www.angelfire.com/planet/automatas/tarea1_xecnx.html
Se requiere implementar un programa
traductor de avisos económicos de formato html a xml. El programa deberá tomar
los anuncios de la página del diario extra clasificarlos y generar un documento
xml con los anuncios ordenados por categorías.
· El programa debe ser capaz de extraer el texto de los anuncios de un archivo en formato html.
· El programa debe ser capaz de clasificar los anuncios por categorías (casas, vehículos).
· El programa debe generar un archivo en formato xml con los anuncios debidamente clasificados.
· El nuevo archivo solo contendrá la información relevante al documento, es decir, la información que concierne a cada anuncio económico.
· El programa debe manejar la codificación habitual en este tipo de avisos económicos.
Metodos: Int main (string).
Atributos:Contenedor miContenedor;
ifstream lectorHtml;
ofstream escritorXml; string paginaHTML;vector<Palabra> Diccionario;
Metodos:Traductor(string);
~Traductor(); void lector(); void abrirXml(); void cerrarXml(); void ejecutar(); void cerrarXML() void cargaDiccionario();string clasifica(string);
string ctoken(string); bool numeral(string); string mayusc(string);
Atributos: vector<Palabra> lista; vector<Palabra> diccionario;ifstream lector;
ofstream escritor;
string pag; string categoria; Métodos: Generador(); ~Generador(); void leeAnuncios(char*,string); void encuentraFrecuentes(); void enlistar(string);void ordenaLista();
bool numeral(string); string mayusc(string); void guardaDiccionario();
Atributos: int cont;string pal;
string cat; Metodos:Palabra();
Palabra(string,string); ~Palabra(); bool menor(Palabra); bool compara(string);void incrementa();
string getPal(); string getCat();int getCont();
Atributos:std::vector<String> categorias std::vector<std::vector<string>> anuncios;
Metodos: void agregarCategoria(string);void agregarAnuncio(string,string);
void guardarXml(ofstream& xml); int buscarCategoria(string cat);
La metodología utilizada funciona con un buen diccionario de categorías, sin embargo el generador del diccionario no es del todo eficiente porque existen palabras que se repiten muchas veces en anuncios de varias categorías (ambigüedad), por ejemplo la palabra vendo aparece tanto en carros como en casas. Por otro lado el traductor tampoco analiza el contexto del anuncio lo que también genera ambigüedad. Concluimos así que para obtener una solución realmente eficiente seria necesario ahondar más en los aspectos anteriormente mencionados.

Es la clase principal se encarga de recibir por parámetro la ruta y nombre del archivo html.Llama al método identificador de la clase traductor y le envía el argumento que recibe del usuario como parámetro.
Es la clase encargada de leer el documento html, extraer los anuncios, clasificarlos y generar el documento xml. Métodos:
· Traductor: Constructor
· lector: Busca en la pagina HTML el inicio de la seccion de los anuncios, lo procesa y le pide al clasificador que lo clasifique, finalmente agrega el anuncio ya clasificadoal contenedor.
· abrirXml: Abre el flujo de escritura del archivo en formato XML y le solicita al contenedor que dicho documento.
· cerrarXml: Cierra el flujo de escritura del archivo en formato XML..
· ejecutar: Metodo principal de la clase. Se encarga de llamar al metodo que lee y procesa la pagina HTML, a los que abren y cierran los flujos de escritura y al encargado de escribir el documento XML.
· cargaDiccionario: Metodo que carga el diccionario que se va a utilizar para clasificar los anuncios.
· clasifica: Recibe un anuncio y devuelve la categoria a la que pertenece.
· ctoken: Recibe una hilera de caractares y busca en el diccionario alguna correspondencia.
· numeral: Recibe una palabra y devuelve verdadero si corresponde a un numer.
· mayusc: Recibe un string y trasnforma su contenido a mayuscula.
Atributos: · miContenedor: almacena los anuncios y sus categorias
· lectorHtml: flujo de lectura usado para leer el documento HTML
· escritorXml: flujo de escritura usado para escribir el documento XML
· paginaHTML: string donde se almacena el nombre de la pagina que se desea traducir
· Diccionario: vector que contiene el diccionario que se utiliza para clasificar los anuncios
Esta clase se implemento para que analice páginas html de anuncios ya clasificadas y a partir de ellas genere un diccionario de correspondencias entre palabras y categorías. Produce un archivo “diccionario.txt” con las veinte palabras más comunes en anuncios de una categoría. Esta clase no esta dentro del flujo de ejecución del programa ya que el diccionario solamente es necesario generarlo una vez. Métodos:· Generador : Constructor de la clase. Inicializa los atributos.
· leeAnuncios: Metodo que procesa una pagina HTML y la descompone en sus anuncios.
· encuentraFrecuentes: Procesa los anuncios de una pagina HTML y encuentra las palabras que mas se repiten.
· enlistar: Metodo que descomponde un anuncio en palabras y estas las almacena en una lista.
· ordenaLista: Metodo que ordena el vector de palabras de acuerdo al contador.
· numeral: Recibe una hilera de caracteres y evalua si coorresponde a un numero
· mayusc: Recibe una hilera de caracteres y la transforma a mayusculas
· guardaDiccionario: Guarda en disco el diccionario resultante.
Atributos: · lista: almacena las palabras de de un anuncio
· diccionario: diccionario que se utiliza para clasificar los anuncios