Las mejores herramientas de NLP

20 diciembre 2019
Las mejores herramientas de NLP
En este artículo recolectamos las mejores demostraciones en vivo de las herramientas de Procesamiento de Lenguaje Natural (NLP) y de Compresión del Lenguaje Natural (NLU) disponibles en el mercado como código abierto o servicio, que no requieren registro ni ser un experto en programación.

El objetivo no será sumergirse en la profundidad de los aspectos técnicos ni cubrir todos los beneficios que proporcionan estas herramientas, sino aportar una mayor claridad sobre qué sucede en el mundo del NLP moderno y comprender mejor qué logros podrían aprovecharse en tareas prácticas de forma automática.

1. BERT: la comprensión de textos

Disponible en: https://www.pragnakalp.com/demos/BERT-NLP-QnA-Demo/

BERT es un modelo de entrenamiento previo publicado por Google, cuyo objetivo es comprender mejor qué buscan las personas. A diferencia de otros enfoques libres de contexto más antiguos, tal como word2vec o GloVe, BERT toma en cuenta el entorno de una palabra para comprender el mensaje del usuario en una situación específica, considerando que una palabra puede llegar a tener diferentes connotaciones o significados dependiendo el contexto. 

Se publicó por primera vez en 2018 y, a principios de 2019, BERT se comenzó a utilizar de forma oficial en las búsquedas de Google.

Probemos escribiendo un párrafo de un texto y hagámosle preguntas.

image

2. GPT-2: la creación de textos

Disponible en: https://talktotransformer.com/

GPT-2 también fue denominado modelo transformer por OpenAI en su primer lanzamiento, en febrero de 2019. Su objetivo principal es adivinar la siguiente palabra, teniendo en cuenta todas las palabras previas dentro de un mismo texto. Hasta fines de 2019, se habían publicado solo versiones de GRT-2 más pequeñas y menos coherentes, por temor a que pudiera utilizarse para difundir noticias falsas, correo basura, y desinformación. Sin embargo, en noviembre de 2019, OpenAI afirmó que no existía “ninguna prueba sólida de uso indebido” y lanzó el modelo completo.

Ahora pueden divertirse mientras completan el texto que escriben. 

image
image

Otro sitio en inglés para divertirse con GPT-2 y con XLNet es: Write With Transformer.

3. SpaCy: NLP aplicado a la producción

Disponible en: https://explosion.ai/demos/

SpaCy es una librería NLP de código abierto gratuita, desarrollada por ExplosionAI. Su objetivo es colaborar con los desarrolladores en las tareas de producción y, la verdad, es increíble. También tiene buenas capacidades de visualización. 

Veamos algunas de sus funciones:

Analizador léxico: en palabras sencillas, fragmenta el texto en segmentos significativos: palabras, artículos, puntuación.  Luego, de manera conjunta o separada, podrían ser vectorizados para poder compararlos entre sí (incrustaciones de palabras o word embeddings). A modo enunciativo, las palabras “gato” y “peludo” en el espacio vectorial se encuentran más cerca que “gato” y “nave espacial”.  Observen este ejemplo de los comentarios de Reddit, que muestra los conceptos cercanos a las palabras que se escriben: https://explosion.ai/demos/sense2vec

Veamos los conceptos cercanos a “Kevin Spacey”. En 2015 solo aparecían otros actores, pero en 2019 los resultados están relacionados con el fenómeno de “#metoo”.

image
image

Reconocimiento de entidades nombradas (NER): con un conjunto de entidades proporcionadas (personas, organizaciones, datos, ubicaciones, etc.), pueden modificarse sus propias etiquetas (por ejemplo: direcciones, contrapartes, número de artículo u otros), cualquier cosa que se quiera extraer de los documentos. Disponible en: https://explosion.ai/demos/displacy-ent 

image

Reconocimiento de dependencias sintácticas: ayuda a crear las reglas cuando se necesita extraer las estructuras conectadas de una oración. Disponible en: https://explosion.ai/demos/displacy 

image

4. AllenNLP: una famosa alternativa

Disponible en: https://demo.allennlp.org/

Una combinación poderosa para crear prototipos, con buenas capacidades de procesamiento previo de texto. No está tan optimizado para la producción de tareas como SpaCy, pero se utiliza en gran medida para la investigación, es posible personalizarlo y viene con PyTorch. Tiene muchas funcionalidades en común con SpaCy, y es interesante ver la demostración de implicación textual (TE).

La TE analiza un par de oraciones y decide si los hechos de la primera oración implican lo mismo que los hechos de la segunda oración.  No siempre funciona bien, pero tipo de implicaciones es uno de los retos que tiene la inteligencia artificial conversacional. Disponible en: https://demo.allennlp.org/textual-entailment

image

5. Resúmenes de textos: WP: DL

Disponible en: http://textsummarization.net/text-summarizer

A menudo, existe tanta información disponible que es importante seleccionarla antes de procesarla. Por lo general, existen dos enfoques: el resumen basado en la extracción y el basado en la abstracción. El primero, significa que solo quedan las palabras o las oraciones más importantes que representan el contenido del artículo. 

Esta demostración utiliza ese enfoque y lo único que debemos hacer es decidir la cantidad de oraciones que queremos ver como resultado. Por el contrario, el basado en la abstracción de información, permite que el software parafrasee el texto de una forma más concisa. 

Tomemos un artículo como ejemplo, pueden encontrar la versión completa aquí. El contenido, resumido en tan solo dos oraciones, es el siguiente: 

Versión en inglés:

For the past three years, I have led Machine Learning and Data Science at DataArt, researching the pain points of different businesses, proposing technological solutions and carrying out implementation.

Cloud providers are rapidly developing ML services, treading the same path that Big Data services did before them.

Otras herramientas disponibles:

6. Google AutoML: lenguaje natural

Disponible en: https://cloud.google.com/natural-language/#natural-language-api-demo

Probablemente, Google sea la empresa que procesa la mayor cantidad de información en el mundo, y es por eso que Google AutoML ofrece resultados más precisos cuando se utiliza el tradicional reconocimiento de nombres de entidades (NER) que las nuevas herramientas de código abierto. También tiene un registro de la interfaz del usuario (UI) práctico y permite comenzar a utilizarlo de inmediato. Es igual de eficaz con otras tareas.

Veamos un ejemplo del análisis de sentimientos al evaluar cada oración y el texto completo en cuanto a la connotación positiva o negativa: 

image

7. IBM Watson

Disponible en: https://natural-language-understanding-demo.ng.bluemix.net/

IBM no se queda atrás y también permite controlar las características emocionales y la información que se describen en el texto. Probemos con un diálogo: 

– Sabes, dijo Arthur, en momentos como estos, cuando me encuentro atrapado en una escotilla neumática vogona con un habitante de Betelgeuse y a punto de morir asfixiado en el espacio profundo, realmente desearía haber escuchado lo que me decía mi madre cuando era joven.

– ¿Por qué? ¿qué te decía?

–  No lo sé, no la escuchaba.

Watson cree que es 70% triste y el contenido también incluye “Guía del autoestopista galáctico”, que es el nombre original del texto.

Vale la pena mencionar a Microsoft Azure Text Analytics, la demostración está aquí. La demostración de Amazon Comprehend requiere registro previo y tiene pocas funciones.

También vale la pena mencionar:

8. HuggingFace: muy útil para producción

Disponible en: https://huggingface.co/hmtl/

HuggingFace realiza varios modelos de NLP que son fáciles de usar en producción al agregarle o conectarlo con diferentes librerías. En particular, el módulo de resolución de correferencias basado en AllenNLP, es una de las soluciones más populares del mercado. 

Es muy útil cuando necesitas procesar un texto para comprender las dependencias internas.  

Por ejemplo:

image

9. Berkley Neural Parser: análisis sintáctico

Disponible en: https://parser.kitaev.io/

El análisis sintáctico de Berkley analiza una oración y su estructura sintáctica al dividirla en varias frases más pequeñas.  

image

Es muy práctico si necesitas extraer la información de una oración que puede estar escrita con una especie de plantilla (por ejemplo: si estás buscando un sintagma nominal).

Aquí hay otros ejemplos para tomar en cuenta, por lo general estas librerías se utilizan para aprender y pueden respaldar las herramientas previamente mencionadas: NLTK, Stanford CoreNLP, TextRazor.