(Este post es la continuación de uno anterior que deberías leer antes, si no lo has hecho ya).
Antes de hablar de la solución me gustaría destacar que la falta de precisión en las búsquedas es un problema generalizado, presente en todos los sistemas de gestión de documentos. No solo se presenta en las búsquedas en Internet (la madre de todas las gestiones documentales) sino en muchas otras situaciones. El buscador de Google es un buen ejemplo, pero no es un caso aislado.
Por ejemplo, a escala local, en empresas o instituciones con bases de datos de cierto tamaño. Un investigador en un centro de referencia sobre el cáncer usa algunas palabras clave para localizar un artículo médico sobre determinadas proteínas y su efecto en el sistema inmunológico, y recibe 2.000 documentos como respuesta. Demasiados para echarles un vistazo. O yo mismo, si busco «MTC Soft» en mi programa de gestión documental, recibo cientos de documentos ya que es una palabra muy corriente en mi documentación. Cuanto mayor es la base de datos y más «popular» es la palabra que busco mayor es la lista de resultados que obtengo… y más tiempo necesitaré para encontrar el documento que me interesa.
El problema lo resume muy bien una frase que oí hace años hablando de Internet: «La información es poder, pero el exceso de información es caos«.
Y la palabra clave para resolver este caos, para reducir el número de respuestas a mi búsqueda hasta un número manejable que me permita encontrar lo que realmente estoy buscando es «filtrado«. Después de tantos años usando esta palabra, no estoy seguro de si se entiende bien fuera del ambiente de los programadores, que la usan (usamos) con frecuencia. «Filtrar» una base de datos es hacer lo mismo que con el café: usar un filtro (condiciones) que retenga parte del líquido (documentos originales), que deje pasar sólo una parte de lo filtrado (los documentos que cumplen la condición impuesta).
Dejando el café aparte y usando un ejemplo más adecuado, en una base de datos empresarial filtrar una lista de clientes es tan sencillo como pedir al programa de consulta que me muestre los que empiezan por «M». O tan complejo como: «muéstrame los que se llaman Martínez de primer apellido, tienen una factura pendiente de pago, y la fecha de emisión de la factura es de hace más de un año». Este sencillo «filtro» (condición) que se utiliza a diario en cualquier programa de contabilidad, nos vendría de perlas en más de una ocasión al buscar un documento en Internet.
Google ofrece, aparentemente, esta solución. Al pie de su página de búsquedas hay una opción (que no creo que se use más de una vez por cada millón de consultas) con el sugerente título: «Búsqueda avanzada«. ¡Bien por Google! La pulso y qué me encuentro: unas cuantas condiciones adicionales que apenas me permiten mejorar mi «filtro». ¡Con razón nadie usa estas búsquedas supuestamente avanzadas! No sirve para nada. ¿Por qué? Porque no resuelve el principal problema que produce el exceso de resultados irrelevanes: la ambigüedad del lenguaje (esto ya lo he dicho en mi post anterior, pero lo repito porque es la clave).
¿Por qué funcionan tan bien las búsquedas en los programas de contabilidad y tan mal en Internet? Porque los primeros usan información precisa y estructurada: apellidos, fechas, números… que podemos ordenar, comparar… datos cuantificables con los que podemos operar con precisión.
Mientras que en internet usamos palabras que se encuentran repartidas por los documentos sin ningún tipo de orden, todas con el mismo «peso» relativo, sin relación entre ellas. Una sopa de letras caótica y uniforme que no ofrece la posibilidad de establecer comparaciones que permitan organizar los resultados.
Y los programas de búsquedas como Google no pueden resolver la ambigüedad del lenguaje, su infinita variedad, con cuatro opciones «avanzadas» que no atacan el problema en su raíz.
Existe una solución, aunque no es fácil. Hay que ir al ORIGEN del problema. Hay que trabajar con la «materia prima», con los documentos originales ANTES de indexarlos. Esa es la clave. Mejorar los datos que vamos a utilizar para hacer las búsquedas, las palabras que forman las frases y que son nuestra fuente de información.
Y hay que hacerlo con las propias herramientas del lenguaje: el análisis gramatical, sintáctico… usando diccionarios con información semántica, sinónimos, familias de palabras… Los ingenieros informáticos tienen una tendencia irrefrenable a utilizar sus propias herramientas para resolver cualquier problema: análisis estadístico, redes neuronales, sistemas expertos… Pero los que saben de esto son los lingüistas y a ellos hay que recurrir.
Volviendo al problema de las búsquedas, Google, y tantos otros, intentarn sacar información de una materia prima muy pobre: de textos «planos», de palabras que son solo palabras en una lista, sin mayor peso o relevancia unas que otras. Palabras ambigüas, con múltiples significados que no se tienen en cuenta. Palabras que forman frases sin saber cual es la más importante, que otras palabras se relacionan con ella y cuales son irrelevantes… en esa frase.
Es un problema «de fondo». Hay un principio básico en la gestión de la calidad: se puede empeorar pero nunca mejorar. Si parto de una información muy deficiente (que no distingue «casa-edificio» de «casa-verbo para el matrimonio»), esta falta de precisión inicial la arrastraré en adelante. ¡Hay que mejorar la materia prima antes de procesarla!
La solución es, por tanto, mejorar la calidad de esa «materia prima» como paso previo a indexarla. Y esto es tan sencillo, y tan difícil, como realizar un análisis lingüístico exhaustivo y añadir a cada palabra información adicional que nos aporte nuevas posibilidades. Especialmente que nos permita hacer tres cosas muy importantes:
1.- Saber cuales son las palabras más relevantes en una frase, a cuales les debo prestar más atención.
2.- Conocer las relaciones entre ellas, cual modifica a cual.
3.- Desambigüar los significados. Eliminar o reducir la polisemia, origen de muchos problemas.
Con unos ejemplos (el recurso del torpe, por eso lo uso continuamente) se entiende perfectamente.
1.- Importancia relativa en la frase. No es lo mismo el sujeto de la oración (el que hace algo o del que se dice algo), o el complemento directo (lo que hace o lo que se dice del sujeto) que un complemento circunstancial (cuándo, cómo, con quién se realiza la acción).
«Arguiñano frie una tortilla de patatas con gran habilidad«, es relevante si quiero saber cómo se desenvuelve el famoso cocinero con la sartén. Pero la frase «Yo frio una tortilla de patatas mientras veo a Arguiñano en la TV» no me aporta ninguna información sobre Arguiñano, por más que aparezca en la frase. Habla de mí, que soy el sujeto de la oración. En el primer caso, es Arguiñano el sujeto y es, indudablemente, un texto en el que se habla de él y de cómo cocina. En la segunda frase se habla de mí. Es un texto irrelevante para saber cómo cocina Arguiñano, pero aparecerá en los resultados de una búsqueda tan destacado como el primero.
2.- Relaciones entre palabras. Quiero saber el precio de la última casa que compró Tom Cruise. La frase «ideal» que espero encontrar es algo así como «Tom Cruise se ha comprado una casa por 1,000.000 de dólares«. Pero un buscador como Google nos ofrecerá miles de textos como este:«Tom Cruise ha comprado un anillo de compromiso a su novia en una joyería cerca de su casa«.
La clave para que el buscador ofrezca el primer resultado y no el segundo es que impongamos la condición de que el complemento directo asociado al verbo comprar sea «casa». Es mucho más «valioso» o representativo un complemento directo respecto a un sujeto que el resto de posibles complementos del verbo que se referirán a circunstancias temporales, espaciales… (hay que repasar el libro de Lengua del colegio).
Más evidente es la relación sustantivo-adjetivo. En estos casos es mucho más directa la relevancia de estas palabras. Por ejemplo, si queremos saber si Arguiñano frie una tortilla española, poder imponer la condición al buscador de que estas dos palabras estén relacionadas sintácticamente será mucho más preciso que pedirle que aparezcan en el texto, sin más. Esta opción añadirá muchos documentos con las palabras, pero sin que necesariamente se hable de tortillas españolas.
Sé que se pueden usar comillas, pero es un filtrado que limita mucho los resultados. «tortilla española» elimina ambigüedades, pero la variedad del lenguaje, la riqueza de las expresiones que podemos usar para decir lo mismo de diferentes formas, hace que una búsqueda con textos entre comillas sea demasiado restrictiva en muchos casos. No queremos demasiada basura en nuestra búsqueda, pero tampoco perder resultados válidos, ese es el reto.
3.- Polisemia, quizás el mayor problema. El lenguaje es enormemente «polisémico» (si es que existe esa palabra). No hay más que abrir un diccionario. Para cada palabra hay 2, 3… 5 significados posibles. Piensa en cualquiera: «casa», edificio o acción de contraer matrimonio. «Banco», para sentarse o guardar el dinero… Con los nombres propios a veces es peor: «Zapatero», «Alonso»… Me comentaron que a Esperanza Aguirre le fastidia un montón que en Google siempre aparece un antiguo portero del Atlético de Madrid antes que ella.
Y si quieres un ejemplo divertido, y absolutamente cierto, busca en Google «imágenes» de «Iglesias de Triana» (Triana es un barrio de Sevilla). La hija de ocho años de un amigo buscaba fotos para un trabajo del colegio y se llevó una sorpresa.
Cuanto las palabras no son más que registros en una base de datos, las confusiones están aseguradas. Hay que identificar la palabra a la que se refiere el texto antes de indexarla y distinguirlas al hacer las búsquedas. Simplemente saber que «casa» en una frase concreta es un sustantivo y no un verbo mejora sustancialmente la búsqueda posterior.
Si puedo escribir en mi «buscador avanzado»: Muéstrame los documentos en los que aparecen las palabras «Tom Cruise» «compra» «casa», relacionados sintácticamente entre sí (en la misma frase), y que son sujeto, verbo y complemento directo respectivamente y «casa» es un sustantivo (esto sí es una búsqueda avanzada).
¿Demasiado difícil? No. En realidad es lo que realmente queremos escribir cuando ponemos estas palabras en el buscador. Pero como el buscador no distingue «en origen» no nos da la opción de añadir este filtro o condición que, en realidad, está implícito en mi búsqueda.
En definitiva, Google y demás buscadores: analiza los textos, enriquécelos con información lingüística adicional y podrás ofrecer resultados mucho mejores, mucho más precisos. No solo encontraremos «menciones», sino que sabremos «de qué se habla» en Internet. (¿No es ese el futuro de la Web, la Web semántica? 😉
(Pincha aquí para ver un video con la presentación que hice sobre este tema en la World Wide Web Conference de 2009).
Deja una respuesta