Algoritmia - Algoritmo de búsqueda (Fuzzy Search)

 
Vista:
sin imagen de perfil

Algoritmo de búsqueda (Fuzzy Search)

Publicado por Mario (2 intervenciones) el 12/12/2013 09:27:04
Buenas, os planteo mi problema a ver si alguien me puede echar una mano:

Actualmente estoy trabajando con OCR para reconocer texto, tras realizar el OCR necesito realizar consultas en una base de datos, donde dicho texto (en este caso un nick de usuario) puede que sea o no encontrado.
El problema viene a la hora de aplicar el OCR ya que este falla bastante, y la mayoría de veces confunde letras, por ejemplo:
I y l
0 y O
1 e i

He pensado que antes de realizar la consulta podría buscar usando un margen de error si hay algún nick de usuario en la base de datos que se parezca al que voy a usar para realizar la consulta, y si es así, ya puedo sustituir este por el correcto.

Para ello he usado una implementación del algoritmo de búsqueda basado en la distancia Levenshtein:

http://www.codeproject.com/Articles/36869/Fuzzy-Search

El algoritmo funciona bastante bien, pero no tiene en cuenta pesos en base a los tipos frecuentes de errores, es decir yo quiero que si tengo este texto obtenido por OCR:

programadror1ntel1gente

y en la base de datos tengo estos dos usuarios: programadorinteligente y programadorontelogente, me devuelva el primero y no un empate, ya que debería tener más peso el que un 1 se convierta en una "i" que el que un 1 se convierta en una "o".

¿Alguien sabe implementar esto?

Espero haberme explicado.

Muchísimas gracias

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder