10
Resolución de Ejercicios Planteados en el Curso de Tópicos Especiales Curso: Tópicos Especiales Docente: Ing. Iván Soria Solís Alumno: Zúñiga Muñoz Heinz Andahuaylas, Apurimac-2015

ZuñigaMuñozHeinz_Topicos

Embed Size (px)

DESCRIPTION

fef

Citation preview

Resolucin de Ejercicios Planteados en el Curso de Tpicos Especiales

Curso: Tpicos Especiales

Docente: Ing. Ivn Soria Sols

Alumno: Ziga Muoz Heinz

Andahuaylas, Apurimac-2015

1. Separacin de palabras. El mtodo separatewords actualmente considera cualquier carcter no alfabtico como separador, lo que significa que no indexar apropiadamente entradas de ndice como C++,$20,Ph.D, o 617-555-1212. Cul es la mejor forma de separar palabras? Funciona utilizar espacios en blanco cmo separador? Escriba una mejor funcin separadora de palabras.

Problema: Efectivamente el mtodo implementado separatewords no es muy efectivo puesto que lo toma a los caracteres no alfanumricos como separadores y por ende se pierden algunos caracteres que son de utilidad o necesarios indexarlos como por ejemplo C++ que aparentemente es absurdo escribirlo o buscarlo, pero lo que de repente muchos no saben es que C++ es un lenguaje de programacin la cual tiene muchos usuarios o interesados en este lenguaje que requieren documentacin a cerca de esta, y sera algo molestoso o lamentable que el buscador no muestre resultados de documentos que contengan informacin acerca de C++, por el simple hecho de que se omiti indexar caracteres especiales no alfanumricos; de igual manera sucede para los otros caracteres como $,-,., +, #,etc.

Anlisis del mtodo original implementado:

Como se puede observar en la siguiente figura se defini la funcin separatewords con un parmetro de entrada que ser el texto a la cual se tendr que separar.

En este caso se implement haciendo uso de expresiones regulares, en Python existe una biblioteca muy completa para lo que es el manejo de expresiones regulares, esta es la biblioteca re.Para hacer uso de esta biblioteca primero se tiene que importar, con el siguiente comando:

Una vez hecho los pasos anteriores, lo que se hace es almacenar la expresin regular en una instancia de la memoria para su fcil acceso, esto se hace justamente con la librera re y su mtodo compile.

Con el comando anterior tambin se especific que se obtendrn todos los valores Alfanumricos de los caracteres.

Finalmente la funcin retornar una lista de las palabras en minscula obviando los espacios o caracteres en blanco.

Y en conclusin

Pruebas con el mtodo original

Cargamos al mtodo separatewords una cadena de texto incluyendo caracteres especiales como +,$,., - y @

Luego imprimindolo la lista o el retorno de la funcin como se puede observar en la siguiente figura se perdieron los caracteres no alfanumricos, y solo se muestran aquellos que no lo son e indexarlos las siguientes palabras en la base de datos no sera de mucha utilidad.

Y en conclusin existe la necesidad de cambiar la manera de separacin de los textos a una en donde que sea lo ms ptimo posible.

Solucin

Viendo las deficiencias del mtodo separatewords, se analiz las diferentes maneras de poder separar textos o palabras para una indexacin adecuada, y se lleg a disear el siguiente algoritmo la cual es una ligera variacin del mtodo separatewords, de hecho solo se cambi en la manera de definir las expresiones regulares, puesto que en el mtodo separatewords se tomaba como punto de separacin a todos aquellos caracteres que no fueran alfanumricos.

Anlisis del mtodo implementado:

Se defini el mtodo SepararPalabras con un parmetro de entrada y luego se carga una instancia a memoria de una expresin regular ('\\s*') que capture todos los caracteres en blanco o espacio ( ), luego la funcin retornar una lista de palabras en minscula partidas por el carcter espacio o blanco ( ) solo si no es una cadena en blanco.

Pruebas

Como se puede observar en la siguiente figura al cargar el texto al mtodo SepararPalabras, el texto incluye caracteres especiales; luego de imprimir se ve claramente la lista la cual contiene justamente las palabras escritas sin sufrir alteraciones bruscas, esta mtodo puede funcionar mucho mejor que el mtodo separatewords, por que realizar una indexacin adecuada y por lo tanto los contenidos de los documentos en la web si estarn visibles a la vista de un navegador.

Conclusin

Con la implementacin de estos cdigos tambin se tena que ver de manera obligatoria creo yo, acerca del tema de expresiones regulares las cuales son muy fundamentales para el tema de anlisis sintctico de las cadenas o letras y /o textos.

Esta codificacin o mejora que se ha realizado al mtodo podra ser una de las miles formas de hacer ms ptimo el tema de indexacin de palabras, puesto que no existe un solo rozamiento para escribir algoritmos y como tambin no podra ser la manera ptima.

Escribir realmente una funcin para hacerlo lo ms ptimo posible es muy difcil, y depender del razonamiento y los conocimientos que se pueda tener.

2. Operaciones boolenas. Muchos motores de bsqueda soportan consultas booelanas, las cuales permiten a los usuarios construir bsquedas como python OR perl. Una bsqueda OR puede funcionar haciendo las consultas por separado y combinando los resultados, pero Qu ocurre con Python AND (program OR code)? Modifique los mtodos de consulta para soportar algunas operaciones booleanas bsicas.

Visualizando el Contenido de la Base de Datos Embebida Sqlite searchindex.db

Datos almacenados en la tabla urllist, como se puede ver en la siguiente figura se tienen 116 elementos que se encuentran almacenados en esta tabla.

En la siguiente figura se puede ver los elementos almacenados en la tabla wordlist en esta tabla se almacenan cada una de las palabras separadas de los documentos web, como se puede ver actualmente se cuenta con 512 registros.

En la siguiente tabla se visualizan el indexador; es decir la ubicacin de las palabras con sus id respectivos que se encuentran en cada link.