You are on page 1of 4

777777Facultad de Ingeniería eléctrica y computación

Fundamentos de Programación
Proyecto 2Parcial
2Término – 2017

Objetivo:
El objetivo de este proyecto es ganar más práctica en el uso de funciones, diccionarios, manejo de
colecciones y archivos.

Descripción:

Document retrieval (Recuperación de documentos) es la tarea de encontrar documentos que


cumplen con criterios de búsqueda ingresados por un usuario. El ejemplo más conocido es las
búsquedas en internet, donde un usuario ingresa un conjunto de palabras y el motor de
búsqueda (por ejemplo, google) encuentra que páginas web son relevantes a su consulta.
Verdadero document retrieval puede ser difícil ya que tiene que tomar en cuenta algunos
factores. En este proyecto usted implementará una versión sencilla de document retrieval.

Especificaciones del Programa:

El archivo indice_archivos.txt contiene los nombres de los archivos sobre los cuáles se hará la
búsqueda de los términos ingresados por el usuario. Un ejemplo del archivo se muestra a
continuación:

archivo1.txt
archivo2.txt
archivo3.txt
….
….

Para poder obtener los archivos en dónde se encuentran los términos ingresados por el
usuario, nosotros necesitamos saber cuál palabra aparece en cada documento. Para este
propósito usaremos un diccionario de términos dónde las claves son los términos que
aparecen en los archivos y sus valores son otro diccionario dónde la claves son los
nombres de los archivos dónde aparece el término y el valor el número de veces que
aparece. Este diccionario permite buscar un término en el diccionario e inmediatamente
conseguir todos los documentos en los cuáles este término aparece. Esta estructura es conocida
como inverted list.

archivo1.txt
Desde Apple acaban de confirmar las sospechas de que los viejos modelos de su teléfono
inteligente, el iPhone, se hacen más lentos con cada actualización del sistema operativo.

archivo2.txt
Un sistema operativo es el software principal o conjunto de programas de un sistema
informático, que gestiona los recursos de hardware y provee servicios a los programas de
aplicación de software.
archivo3.txt

Apple Inc. es una empresa multinacional estadounidense que diseña y produce equipos
electrónicos, software y servicios en línea, con sede en Cupertino.

A continuación, un ejemplo de la estructura que se crearía si mi colección de archivos fuera


archivo1.txt , archivo2.txt y archivo3.txt.

{
‘sistema’: {“archivo1.txt”:1, “archivo2.txt”,2, #... },
‘apple’: {“archivo1.txt”:1, “archivo3.txt”,1, #... },
‘operativo’: {“archivo1.txt”:1, “archivo2.txt”,1, #... },
‘software’: {“archivo2.txt”:2, “archivo3.txt”,1, #... },
‘teléfono’: {“archivo1.txt”:1, #... },#....
}

Instrucciones:

1. Cree una función que lea el archivo indice_archivos.txt y retorne un conjunto con los
nombres de los archivos.

{
“archivo1.txt”,“archivo2.txt”,“archivo3.txt”, “archivo4.txt”, …
}

2. Cree una función que reciba el conjunto con los nombres de los archivos y retorne
un diccionario de términos dónde las claves son los términos que aparecen en los
archivos y sus valores son otro diccionario dónde la claves son los nombres de los
archivos dónde aparece el término y el valor el número de veces que aparece.
a. Lea cada archivo en el conjunto línea a línea.
i. Divida cada línea en palabras y remueva los signos de puntación que
se encuentren al inicio o final de las palabras.
ii. Agregar los términos al diccionario resultante si este no se
encuentra previamente o actualizarlo. Recuerde además que para
la búsqueda no importa si el término está en mayúscula o
minúsculas, por lo que debe guardar cada palabra en el diccionario
en minúscula.

3. Cree una función que recibe el diccionario de términos (el diccionario devuelto por la
función 2) y una lista con palabras y retorne un conjunto con los nombres de los
documentos dónde aparece al menos uno de los términos consultados.

4. Cree una función que reciba el diccionario devuelto por la función 2 y retorne un arreglo
de dos dimensiones dónde las filas representan los documentos y las columnas las
palabras en el diccionario de términos y las celdas la frecuencia con la que aparece cada
término el documento.
sistema apple operativo software telefono …
archivo1.txt 1 1 1 0 1 ..
archivo2.txt 2 0 1 2 0 ..
archivo3.txt 0 1 0 1 0 ..
…. .. .. .. .. .. ..
…. .. .. .. .. .. ..

5. Cree una función que calcule la similaridad entre una lista de palabras y cada uno de
los archivos que se listan en indice_archivos.txt. La función recibe la lista de palabras,
el diccionario de la función 2 y la matriz de frecuencia y retorna un diccionario dónde
las claves son los nombres de los archivos y los valores la similaridad calculada.

Para calcular la similaridad usaremos la siguiente fórmula

A .Q
𝐶𝑜𝑠(𝐴, 𝑄) =
|A||𝑄|

A -> El vector de uno de los archivos.


Q -> El vector del query
Los mejores valores son los más próximos a 1.

Para el cálculo primero debemos crear un vector (arreglo de una dimensión) con los
términos que se quieren buscar. Por ejemplo, si la lista de término es [‘sistema’,
‘operativo’] el vector sería:

sistema apple operativo software telefono …


Q= 1 0 1 0 0 …

La similaridad entre el archivo2.txt y el query en cuestión sería

< 2,0,1,2,0 >. < 1,0,1,0,0 >


𝐶𝑜𝑠(𝑎𝑟𝑐ℎ𝑖𝑣𝑜2. 𝑡𝑥𝑡, 𝑄) =
| < 2,0,1,2,0 > || < 1,0,1,0,0 > |

2∗1+0∗0+1∗1+2∗0+0∗0
𝐶𝑜𝑠(𝑎𝑟𝑐ℎ𝑖𝑣𝑜2. 𝑡𝑥𝑡, 𝑄) =
(√22 + 02 + 12 + 22 + 02 ) ∗ (√12 + 02 + 12 + 02 + 02 )
3
𝐶𝑜𝑠(𝑎𝑟𝑐ℎ𝑖𝑣𝑜2. 𝑡𝑥𝑡, 𝑄) =
9 ∗ √2

𝐶𝑜𝑠(𝑎𝑟𝑐ℎ𝑖𝑣𝑜2. 𝑡𝑥𝑡, 𝑄) = 0.2357

La similaridad entre el 𝑎𝑟𝑐ℎ𝑖𝑣𝑜2. 𝑡𝑥𝑡 y los términos ingresados es 0.2357.


{
“archivo1.txt”:0.34
“archivo2.txt”:0.35,
“archivo3.txt”:0.20,

}
6. Cree una función que reciba el nombre de un documento y el diccionario de archivos y
muestra en pantalla el contenido del archivo. Esta función deberá imprimir no existe en
caso de que no exista el archivo anterior.

Programa Principal

Su programa debe presentar un menú con las siguientes opciones:


1. Consulta booleana.
Se le pide al usuario que ingrese los términos que quiere consultar y debe retornar los
nombres de los documentos en los que se encuentran presentes todos los términos
ingresados por el usuario. Si ningún documento cumple con los criterios de búsqueda
debe retornar un mensaje apropiado.

Ingrese términos a buscar: sistema operativo


Documentos dónde se encuentran los términos:
archivo1.txt
archivo2.txt

Ingrese términos a buscar: actualización sistema operativo


Documentos dónde se encuentran los términos:
archivo1.txt

2. Consulta rankeada.
Esta opción retorna los documentos que tienen un porcentaje de similaridad con los
términos ingresados mayor a cero. Se debe mostrar los documentos y el porcentaje de
similaridad del que tiene mayor similaridad al que tiene menor similaridad.

Ingrese términos a buscar: sistema operativo


Documentos dónde se encuentran los términos:
archivo1.txt 30%
archivo2.txt 15%

(NOTA: los porcentajes mostrados son ejemplos, no han sido calculados).

3. Consultar documento.
Se le pide al usuario que ingrese el nombre del documento que quiere consultar y
muestra su contenido en pantalla. Si el documento no existe debe imprimir un
mensaje apropiado.
4. Salir
Esta función termina el programa

Consideraciones Finales
El menú debe ejecutarse continuamente.
Su programa no se debe caer en medio de la ejecución.
Las funciones aquí indicadas son las mínimas necesarias, usted puede definir más funciones
si lo cree necesario.
El proyecto es el grupo de dos personas.

You might also like