jueves, noviembre 30, 2006

Técnica para facilitar búsquedas tolerantes a errores en la consulta o en el índice

Esto días estuve revisando algoritmos de apoyo a la ortografía y encontré una página donde se presenta una técnica basada en el uso de ngramas. Cada término del diccionario se divide en trigramas -segmentos de tres caracteres (casa = 6 trigramas {--c, -ca, cas, asa, sa-, a--})- y se almacenan en una tabla índice (trigrama(“a—“)=doc1, doc5,...,doc_n). Luego, cuando un usuario necesita consultar por un término al mismo se lo descompone en sus trigramas y se recuperan las entradas del índice relacionadas con cada uno de ellos. A continuación se aplica una fórmula de semejanza ortográfica (yo la conozco como distancia de Tanimoto) entre el término consultado y los distintos términos candidatos aportados por el índice. Si la semejanza supera un umbral U entonces se muestra el término como posible candidato en la respuesta. La salida de términos puede ordenarse por distancia con respecto al término de la consulta.

Hace unos años atrás un ex alumno Diego Barrientos puso a punto y valido una técnica semejante, la cual usamos para corrección ortográfica o sugerencias del tipo Google "Ud. quizo decir". Aquí pueden hallar un documento que habla acerca del algoritmo y aquí encuentran unas librerías C desarrolladas por Diego.El trabajo aún no está totalmente finalizado, se puede mejorar la calidad de las sugerencias utilizando técnicas que permitan manejar los casos de empate de términos candidatos en las listas de sugerencias, una posible herramienta sería modelos de lenguaje. SI hay alguien que le interese el tema y el C podemos discutirlo.

No hay comentarios.: