Se debe construir un programa llamado indexador que toma en la línea de comando la base de texto (base_texto.txt) y un archivo de "stopwords.txt" que contiene una lista de palabras irrelevantes (e.g., el, la, las, los, ellos, ellas,...etc), y genera el índice invertido para la colección de documentos almacenados en "base_texto.txt".Utilizar C++, Librería STL y Lex (no se pueden definir estructuras de datos y clases C++, sólo STL).
El índice invertido esta formado por los siguientes archivos:
- vocabulario.txt, el cual contiene todas las palabras relevantes de la colección en orden lexicográfico junto con un indentificador para cada palabra y el número de documentos en que aparece cada palabra, con el siguiente formato (noten que "," se utiliza como separador),
ambos,0,1 aparecer,1,1 atraviesan,2,1 .... - documentos.txt, el cual contiene un identificador para cada documento de la base de texto y el URL del documento, con el siguiente formato (ver ejemplo parte 1),
0,/home/diario/2000/11/19/t-19.00.3a.REP.CLARA.html 1,/home/diario/2000/11/19/t-19.25.3a.CYS.RENDIMIENTO.html .... - listas_invertidas.txt el cual contiene una lista de pares (doc,frec) por cada palabra de "vocabulario.txt". Por ejemplo, si una palabra con identificador "15" aparece en los documentos con identificadores "70", "256" y "300", entonces en el archivo aparece la línea,
.... 15,70,0.3,256,0.1,300,0.6 .... la explicación de las frecuencias normalizadas (frec) 0.3, 0.1 y 0.6 es la siguiente. Supongamos que la palabra "15" aparece 3 veces en el documento "70" y que la palabra relevante más frecuente en el documento "70" aparece 10 veces en él, entonces se escribe 3/10 = 0.3.En general, sea Frec(t,i) la frecuencia normalizada de la palabra relevante t en el documento i, sea Fmx(i) el número de veces en que aparece la palabra relevante más frecuente en el documento i, y sea F(t,i) el número de veces en que la palabra relevante t aparece en el documento i. Entonces la frecuencia normalizada esta dada por,
Frec(t,i) = F(t,i) / Fmx(i).
Ejemplo: hola mundo mundo chao mundo hola chao hola --------- vocabulario arbol,0,1 casa,1,1 chao,2,2 hola,3,2 mundo,4,1 --------- listas invertidas 0,3,0.500 1,3,1.000 2,1,0.333,2,0.500 3,1,0.333,2,1.000 4,1,1.000 --------- casa arbol casa