Hoy vamos a intentar poner un poco de orden sobre las herramientas lingüísticas y semánticas que están apareciendo en el incipiente mundo del Procesamiento de Lenguaje Natural (NLP). Sin embargo, no nos centraremos en las ramas encargadas de comprender íntegramente el texto de entrada (para traducirlo o interpretarlo), sino en el mecanismo habitual que se utiliza para procesar un determinado contenido y enriquecerlo con datos externos.
Para llegar a conseguir este comportamiento final, aparentemente sencillo, existe una amplia amalgama de herramientas o motores disponibles, cada uno de ellos encargado de agrupar un conjunto de funcionalidades similares. En cada caso, trataremos de indicar dichas funcionalidades y algunas alternativas de software libre y comercial que las implementan.
Preprocessing engines: son los primeros en enfrentarse al texto de entrada, y por tanto, les toca realizar el trabajo sucio de generar un modelo homogéneo a partir de la gran diversidad de formatos, idiomas y metadatos disponibles. En algunas ocasiones, sus responsabilidades se solapan con las de herramientas ETL. Sus principales funciones son:
Algunas soluciones de software libre que los implementan son Apache Tika, Metaxa Engine y Aperture Framework. Dentro de las comerciales, no podemos dejar de destacar a Autonomy, aunque también nos gustaría mencionar a alternativas más modestas como la finlandesa Connector Machinese.
Named-Entity Recognition Engines: el reconocimiento de entidades con nombre consiste, como su propio nombre indica, en la detección de elementos con nombre propio dentro de un determinado texto, y su clasificación en categorías predefinidas, como personas, organizaciones, empresas, lugares, etc. La complejidad de este proceso se basa en que muchas entidades equivalentes pueden aparecer escritas de diferentes formas, por lo que es necesario contar con un conjunto de reglas semánticas avanzadas y un corpus contra el que cruzar la información para realizar desambiguaciones.
El reconocimiento de entidades con nombre se suele utilizar para hacer etiquetado automático de textos (por ejemplo, en las noticias de un diario digital) y como paso previo para el enriquecimiento semántico. El gran problema del NER es que el tratamiento de temas (topics) como prima de riesgo, o crisis eurozona es más complejo y requiere utilizar metainformación semántica.
Algunas reglas típicas de motores NER se pueden resumir en expresiones regulares como:
(N)ombre (A)pellido : Nombre / Apellido / N. Apellido / Nombre A. / N. A.
Ejemplo: Fernando Alonso: Fernando / Alonso / F. Alonso / Fernando A. / F. A.
(A)aa [de|del|la|los|las]? (B)bb [de|del|la|los|las]? (C)cc : ABC
Ejemplo: Organización de Naciones Unidas: ONU
Soluciones de software libre que implementan motores NER son, por ejemplo: Apache OpenNLP y Stanford NER (dirigido por el profesor Christopher Manning). Dentro de las soluciones comerciales cabe destacar, por ejemplo, Extractiv, Lingpipe NER, Daedalus Stilus NER, Connexor NER o Text Mining Engine. Por supuesto, en ese terreno también tiene cabida la omnipresente Autonomy. Finalmente, no podemos dejar de mencionar nuestra propia alternativa, Classora Autotagging, que además de entidades con nombre reconoce temas.
Semantic Enhancement Engines: representan el eslabón más avanzado de desarrollo técnico, ya que requieren que se hayan llevado a cabo los procesos anteriores (preprocesado y NER) junto con otros algoritmos semánticos adicionales (por ejemplo, POST: Part-of-Speech Tagging) para finalmente cruzar los resultados con una base de conocimiento que les permita enriquecer los contenidos con datos adicionales procedentes de fuentes externas.
En este sentido, los motores de enriquecimiento semántico se subdividen en tres grupos principales:
Entre las soluciones de software libre para los Content Enhancement Engines cabe destacar Apache Stanbol, que también da soporte a otros tipos motores para procesamiento de textos y Apache Jena, orientado a construir aplicaciones semánticas. En cuanto a las alternativas comerciales, cabe destacar soluciones como Zemanta (para enriquecer blogs con contenidos externos desde el panel de administración), Apture (comprada por Google, que enriquecía cualquier web desde dentro con un simple javascript, o desde fuera como plugin para el navegador). Y por supuesto, en este punto cabe destacar Classora Media Support, nuestra alternativa comercial y –con humildad– la herramienta más avanzada en muchos sentidos.
Todos estos motores están diseñados para poder ser integrados en plataformas CMS. Como ya hemos comentado en ocasiones anteriores, los motores de enriquecimiento semántico se están convirtiendo en una de las principales tendencias en CMS y medios digitales. Su objetivo no es otro que dar un paso más sobre el tratamiento tradicional de los contenidos, ofreciendo un evidente valor añadido al usuario.
Entradas que son tratados! Enhorabuena por el trabajo y ahoa a digerirlo poco a poco.
Saludos molineros y muchos ánimos!
Eduardo
Muchas gracias por tus comentarios Eduardo. Como siempre, estás ahí para animar 😉
Un fuerte abrazo!