Universidad de Costa Rica
|
|
Un documento HTML es un archivo de texto en el que aparecen marcas que definen cómo debe ser desplegado por el navegador (Mozilla, Opera, etc). Su programa html2par
debe leer un conjunto de archivos de texto que tienen marcas HTML, las que usará para determinar cuáles son los párrafos que contiene. Usted debe crear en un lista los siguientes datos para cada párrafo: texto del párrafo, número de párrafo (secuencia), archivo del que proviene y también, lista de palabras significativas encontradas en el párrafo.
Para extraer todos los datos, su programa debe eliminar la mayor parte de las etiquetas HTML del archivo que procesará. Es fácil reconocer una etiqueta HTML, pues siempre viene precedida por el caracter '<'
, como en el caso de
<p align="center">
o de
<h2>
. Su programa usará un archivo de configuración en la que estarán definidas las etiquetas HTML que hay que usar para marcar el inicio del cada párrafo.
; html2par.cfg ; ============ par=p h1 h2 h3 h4 h5 h6 ; parrafo y marcas de encabezado par=tr li dt ; tablas y listas (falta td) lt = á é í ó ú ñ Ñ ü lt = á é í ó ú ñ Ñ equiv= a|á e|é i|í o|ó u|ú equiv= n|ñ N|Ñ u|ü del= a e i o u h ignr=a ante bajo cabe con contra ; ... ignr=el la los las e |
Si un párrafo no contiene texto, su programa debe ignorarlo, de manera que en la lista solo queden párrafos que sí contienen algún texto. Además, su programa debe ignorar cualquier argumento para la estiqueta HTML. Por ejemplo, su programa debe ignorar el argumento align="center"
en la etiqueta <p align="center">
. Las etiquetas que marcan el principio de un párrafo son las definidas por la llave par
en el archivo de configuración. Para ejecutar su programa, de manera que procese recursivamente el directorio actual y todos sus subdirectorios, use como primer parámetro el nombre del archivo de configuración:
X:\DIR\SubDir> html2par.exe html2par.cfg *.htm*
En los documentos HTML las letras tildadas del español son caracteres especiales, pues no tienen un código
ASCII asociado, por lo que un programa que procese texto las podría tomar como una marca que separa palabras. Su programa evita este comportamiento si la letra aparece asociada a la llave [lt]
en el archivo de configuración, en donde se indica que esos caracteres, ya sean simples como 'á'
o compuestos como á
, forman parte de las palabras.
Asociado a cada párrafo, su programa debe contruir una lista que contiene las palabras clave del párrafo. Esta lista está compuesta de parejas <palabra,#>
que indica cuál es la palabra que aparece en el párrafo junto con un número que indica cuántas veces aparece. Como cada palabra puede aparecer varias veces en el párrafo, en la lista de palabras también hay que apuntar la cantidad de veces que esa palabra aparece en el párrafo (por eso la lista no tiene duplicados).
Para evitar que las letras con acentos sean consideradas como diferentes a las letras sin acentos, al procesar una palabra su programa debe aplicar las sustituciones definidas en la llave [equiv]
: si aparece
a|á
hay que remplazar la letra á
por 'a'
(y si aparece
á|a
la sustitución es a la inversa 'a'
por á
). Además, html2par
debe ignorar las diferencias entre mayúsculas y minúsculas y debe eliminar palabras mencionadas en la llave [ignr]
. Más aún, antes de determinar si una palabra es o no una palabra clave, su programa debe eliminar las letras que aparecen asociadas a la llave [del]
. Por ejemplo, suponga que el párrafo a procesar es este:
<p align="center"> Cabe más decir que no te había amado que en el amor te había dejado.</p> <h3>
Como los argumentos que aparecen en las marcas que definen un párrafo deben ser ignorados, y además en archivo de configuración está definido que letras tildadas son similares a las no tildadas, este párrafo produce las mismas llaves que este otro:
<p> Cabe mas decir que no te habia amado que en el amor te habia dejado.</p> <h3>
En la llave [ignr]
están definidas las palabras que deben ser excluidas de las palabras clave de párrafo (eliminación de las palabras "Cabe"
y "el"
):
<p> mas decir que no te habia amado que en amor te habia dejado.</p> <h3>
En la llave [del]
se ha definido que hay que eliminar las letras { a e i o u h
}, y como también hay que ignorar las diferencias entre mayúsculas y minúsculas, por lo que este párrafo produce las mimas llaves que el siguiente:
<p> dcr q n t b md q n l mr t b djd.</p> <h3>
Para obtener la lista de palabras clave, una técnicas sencilla es ordenar las palabras del párrafo y contar repetidos. Al ordenar { dcr q n t b md q n l mr t b djd
} se obtiene la secuencia { b b dcr djd l md mr n n q q t t
} por lo que la lista de palabras clave de este párrafo es { <b,2> <dcr,1> <djd,1> <l,1> <md,1> <mr,1> <n,2> <q,2> <t,2>
}. Aunque su programa asocia a este párrafo estas palabras clave, debe guardar el texto completo del párrafo en la lista general, de manera que sea posible identificar el párrafo de donde vienen las palabras clave.
"cola"
y le salen párrafos que contienen "c*lo"
.
¿No es mejor quitar esas equivalencias?===========
).<p>
:
<p> Cabe mas decir que no te habia amado que en el amor te habia dejado.</p> <h3>
<p>
es una de las que aparece
en el renglón "par"
en el archivo de configuración
"html2par.cfg"
y por eso marca el principio de un párrafo.
</p>
(párrafo número tres ya que la etiqueta dice
<h3>
). <p>
, ni
tampoco su </p>
o <h3>
. Sin
embargo, como también ese <h3>
aparece en el renglón
"par"
en el archivo de configuración
"html2par.cfg"
, cada vez que <h3>
aparece comienza un nuevo párrafo. Además, el número 3 en
<h3>
no es una numeración de párrafos pues las
etiquetas desde <h1>
hasta <h6>
marcan encabezados.<hx>
no está presente. <p class=MsoNormal style='line-height:200%'><span lang=ES style='mso-ansi-language: ES'><span style='mso-tab-count:1'> </span></span>En el presente documento se encuentra la documentación externa. También posee detalles específicos acerca del IDE de preferencia y otros aspectos importantes. <span style='mso-tab-count:1'></span>Asimismo, corresponde también a la descripción de la cuarta tarea programada como tal perteneciente curso de CI-1201, Programación II.</p>
"par"
en el archivo de configuración
"html2par.cfg"
. Si quitás las etiquetas HTML junto
con sus parámetros todo eso queda en un solo párrafo:En el presente documento se encuentra la documentación externa. También posee detalles específicos acerca del IDE de preferencia y otros aspectos importantes. Asimismo, corresponde también a la descripción de la cuarta tarea programada como tal perteneciente curso de CI-1201, Programación II.
no aparece mencionado en
"html2par.cfg"
hay que eliminarlo: En el presente documento se encuentra la documentación externa. También posee detalles específicos acerca del IDE de preferencia y otros aspectos importantes. Asimismo, corresponde también a la descripción de la cuarta tarea programada como tal perteneciente curso de CI-1201, Programación II.
Entregue su tarea por correo electrónico, como lo hizo anteriormente.
Tiempo de entrega: | 7 días |
|
|
Segunda etapa: | 3 días | ||
Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|