domingo, 19 de julio de 2015

El demonio está en las mayúsculas

Al escribir cualquier aplicación de procesamiento del lenguaje natural, aspectos que suelen pasarse por alto en un principio acaban demostrando tener una importancia crucial. Como por ejemplo, los espacios, que con frecuencia se ignoran prácticamente, al figurar en los habituales tokens y, sin embargo, son con frecuencia la causa de cierto errores de errores muy difíciles de rastrear. O las mayúsculas, de las que bien podríamos decir que carecen de importancia hasta que se convierten en lo único importante.


Por ejemplo, en petraREV recientemente hemos tenido que replantear nuestro sistema de buscar y copiar términos para tratar de manera más inteligente el uso de las mayúsculas y minúsculas.

En principio, la estrategia que se seguía era buscar cualquier resultado, independientemente del uso de mayúsculas y minúsculas. Por ejemplo, imaginemos que buscamos el término «setup» y encontramos el siguiente resultado:

1. Setup → Configuración

La mayúscula con la que comienza el término encontrado carece en este caso de poca importancia, ya que es preferible probablemente ver este resultado, a pesar de que no sea una coincidencia perfecta, que no ver ninguno.

Esta estrategia, si bien es agradablemente general, resulta poco precisa. Por ejemplo, imaginemos que encontramos dos resultados:

1. Setup → Configuración
2. setup configuración

En este caso, parece evidente que el resultado más interesante es el segundo, ya que no solo coincide el texto, sino también el uso de mayúsculas y minúsculas. Por tanto, resulta más útil cambiar la estrategia a buscar cualquier resultado, independientemente del uso de mayúsculas y minúsculas, pero dando prioridad a los casos en los que también coinciden mayúsculas y minúsculas.

A pesar de ser una mejora, sigue habiendo casos en los que esta estrategia no funciona de manera óptima. Por ejemplo, imaginemos que obtenemos los siguientes resultados:
 
1. Setup → instalación
2. setup configuración

Si bien el segundo resultado sigue siendo más interesante, el primero también puede tener interés, ya que es el síntoma de una posible incoherencia terminológica que habría que estudiar. ¿Hay motivos para traducir «setup» como «instalación» o como «configuración»? ¿Cuál es la opción que se ha utilizado con mayor frecuencia en casos anteriores? ¿Es posible que haya conflictos con otros términos, como «configuration»? En cualquier caso, parece conveniente informar de esta incoherencia al usuario.

Por tanto, nuestra estrategia inicial deberá evolucionar a buscar cualquier resultado, independientemente del uso de mayúsculas y minúsculas, pero dando prioridad a los casos en los que también coinciden mayúsculas y minúsculas, pudiendo descartarse los casos en los que la única diferencia entre las opciones presentadas es el uso de mayúsculas, pero no aquellos en los que hay diferencias de caracteres.

Y si alguien piensa que estas matizaciones no son más que cuestiones teóricas sin utilidad práctica, se equivoca. La precisión de nuestro método hará que al usuario se le ofrezcan más o menos opciones, lo que incide directamente sobre el tiempo que dedica a consultar la terminología. Por tanto, menos y mejores opciones se traducen directamente en menos tiempo y más productividad. Tal como siempre se ha dicho, el demonio está en los detalles o, al menos en este caso, en las mayúsculas.