Anuncios

Bienvenidos sean a este post, hoy veremos un resumen teorico de como manejar los errores tipograficos.

Anuncios

Algo que sucede muy habitualmente son los errores tipograficos al momento de hacer la busqueda. Aunque no lo parezca, este tipo de error puede dar como resultado respuestas inadecuadas. Tomemos el caso de busqueda del post anterior y lo hacemos de la siguiente manera:

Anuncios
Anuncios

Observen como el buscador no corrige lo que escribimos sino que nos muestra una opcion sugiriendo lo que quisimos buscar. Igualmente, ofrece buscar lo que escribimos porque no deja de ser una sugerencia pero en realidad necesitamos saber sobre lo que escribimos. Por eso, al momento de desarrollar un engine de busqueda desde el inicio debemos solucionar como manejar las solicitudes del usuario. Como mencionamos en el post anterior, lo primero que debemos hacer es proveer una interfaz adecuada para que puedan ingresar las solicitudes los usuarios. Como mencionamos recien, no solamente debemos proveer lo solicitado sino tambien una mejor experiencia y entre ellas son las posibles sugerencias. Ya sea, para corregir lo que escribimos medainte sugerencias o ir mostrando resultados a medida que lo vamos escribiendo.

Anuncios

Con esto comentado, lo siguiente es el chequeo de los errores tipograficos y/o las palabras incompletas, y como se imaginaran no es una tarea nada facil. Si retenemos todas las palabras en una lista y las vamos comparando con un diccionario nos va a llevar muchisimo tiempo. Como podran deducir, el uso de estructura de datos especificos y algoritmos es un deber. Tomemos como ejemplo, encontrar la distancia Levenshtein entre la distintas palabras puede ser algo muy util para chequear por errores tipograficos en las solicitudes del usuario.

Anuncios

La distancia Levenshtein es el numero de caracteres que deben ser agregados, removidos o substituidos en una palabra para ser igual a otro. Tomemos el caso de la imagen, la diferencia entre worl y world es 1 porque remover la d de una de las dos palabras o agregarla en la faltante pero en ambos casos hara que las dos sean iguales. Analicemos lo siguiente, la distancia Levenshtein entre coding y sitting es 4 porque son la cantidad de pasos que necesitamos realizar para convertirla en una o en otra. Veamos como puede ser esto:

  • coding -> codting (agregado de la t en el medio)
  • codting -> cotting (sustituicion de la t para la d)
  • cotting -> citting (sustitucion de la i para la o)
  • citting -> sitting (sustitucion de la s para la c)
Anuncios
Anuncios

Esto dara como resultado la conversion de la palabra coding en sitting. Para entender esto, vamos a analizar la palabra worl del ejemplo. Como mencionamos para analizar cada palabra utiliza una estructura de datos donde descompone a cada caracter como un nodo de la misma. La primera es w, y al ser la primera estara bien en todo sentido, lo mismo ocurre con la o y con la r pero luego de esta tenemos un tema. Como existe la palabra word, este asume que el siguiente nodo sera la letra pero no pasamos este caracter sino que al caracter l. Como este nodo no tiene uno que siga, asume que la palabra es world y se asocia con este nodo. Dando como resultado la sugerencia de la palabra world.

Anuncios
Anuncios

Aqui entramos en otro inconveniente porque para dar mejores sugerencias para corregir errores tipograficos deberiamos tener un diccionario completo de palabras del lenguaje del usuario. Y con los tiempos actuales, no solamente en ingles sino que para cada lenguaje registrado. Si bien almacenar las palabras de un diccionario no es una tarea dificil, ardua si pero no dificil. Sin embargo, el recolectar todos los documentos (paginas web) y almacenarlos para ejecutar una busqueda rapida si es una tarea dificil. La herramienta, programa, o modulo del engine de busqueda que recolecta y analiza las paginas web para crear la base de datos del engine se lo denomida como rastreador (crawler) pero sobre esto hablaremos en el proximo post.

Anuncios

En resumen, hoy hemos visto como manejar errores tipograficos en forma teorica, vimos como es una posibilidad y a su vez como permite mejorar la experiencia de los usuarios mediante otras posibilidades. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50