Otros artículos en esta sección

No hay entradas relacionadas

Procesamiento inteligente de los datos

Want create site? Find Free WordPress Themes and plugins.

¿Cómo procesar los mensajes de nuestros usuarios?

El procesar los mensajes de los usuarios de forma "inteligente", es decir, el poder automatizar la comprensión del lenguaje. Es una de las formas más útiles de dar valor a nuestros datos.

Para ello, la disciplina que se utiliza es Natural Lenguage Processing (NLP) que actualmente está siendo combinada con técnicas de Machine Learning para desarrollar modelos capaces de aprender a realizar cada vez mejor esta tarea.

Existen diversos frameworks comerciales orientados al procesamiento de lenguaje natural. Como el proyecto LUIS (Language Understanding Intelligence Service) desarrollado por Micrososft, Watson de IBM, Wit.ai de Facebook o Api.ai de Google. La idea de este artículo es la de presentar un paquete enfocado a este sector pero con licencia Apache 2.0 llamado Rasa NLU.

Rasa NLU para entender los mensajes

Rasa NLU consiste en una suite Open Source que va a permitir extraer los “Intents” o intenciones expresados en cada frase. También las “entities” que se podrían considerar como los parámetros de dichas intenciones.

Para entender mejor cómo funciona, lo vamos a llevar a la práctica mediante un ejemplo, con una pregunta procedente del terminal del usuario:

“Me gustaría reservar un vuelo a Pekín para el 19 de agosto”

La intención se correspondería con “ReservarVuelo” y se podrían distinguir 2 entidades, “Localización” que tomaría el valor concreto de Pekín y “Fecha”: 19 de agosto.

La instalación de Rasa NLU puede realizarse de diversas formas. La más sencilla es mediante pip:

Procesamiento inteligente de los datos. Pip Rasa NLU

Otra opción es clonar el repositorio y ejecutar el script setup.py:

Git para clonar el repositorio y ejecutar scrippt setup

Para poder procesar el contenido de texto Rasa necesita disponer de un motor de backend. Que puede ser el proporcionado por MITIE, por spaCy y sklearn, o por la combinación spaCy + sklearn + MITIE.

Como este post tiene el objetivo de servir como punto de partida para recorrer diversas técnicas y herramientas sobre NLP tanto de textos como de voz. Comenzamos mostrando un ejemplo de utilización de Rasa teniendo como backend MITIE.

Utilicemos Rasa con backend MITIE

Para ello, habrá que elegir el idioma en el que se quiere trabajar. Para esta prueba de concepto se utilizará el castellano. Actualmente, Rasa en combinación con MITIE tiene soporte para inglés y cuando trabaja con spaCy-sklearn identifica inglés y alemán.

La idea es disponer de un vocabulario que contenga una lista de todas las palabras únicas que se quieran identificar. Para, a continuación, obtener el word embedding de cada una de esas palabras.

Cuando se trabaja con texto, que será la entrada de un modelo predictivo, hay que buscar una representación numérica de los componentes de ese texto (palabras, frases, etc).  Además, interesa que esa representación numérica contenga información semántica de la unidad de texto a la que representa.

Los word embeddings codifican en forma de vectores numéricos de tamaño fijo de baja dimensionalidad (mediante un número moderado de features) a dichas unidades de texto. Además lo hacen de forma que guardan ese significado semántico de esas palabras o frases.

Para ello, se dispondrá de un espacio de vectores que se corresponden con esos word embeddings. Si se representa cada uno como un punto en ese espacio, las palabras que estén relacionadas aparecerán dibujadas como puntos próximos en la gráfica. Mientras que las palabras que no guardan relación, se encontrarán mucho más alejadas al representarlas.

MITIE proporciona una herramienta llamada “wordrep” que permite crear los word embeddings a partir de un conjunto de textos que toma como entrada. La forma de realizar esto es mediante el siguiente comando:Procesamiento inteligente de los datos wordep

La salida de esa ejecución devolverá un fichero llamado “total_word_feature_extractor.dat” que contendrá los word embeddings de las palabras del vocabulario presente en los textos proporcionados.

Por suerte, en el repositorio de github de MITIE está disponible ese fichero que ha sido previamente generado para el castellano. Se puede descargar accediendo a esta url:

Procesamiento inteligente de los datos, enlace de descarga

A continuación, hay que generar un fichero en el que se proporcionarán los ejemplos que serán utilizados para entrenar a Rasa para generar a un modelo que sea capaz de detectar los intents y las entities deseadas.

Suponiendo que se desean detectar los siguientes intents: “greet” (para detectar la intención de saludar), “goodbye” (para despedidas), “clothes_search” (para buscar ropa) y como entities: “clothes” (para hacer referencia a una prenda de ropa concreta) y “colour” (para representar un color), el formato del fichero (se ha elegido llamarle bot.json) con los ejemplos de entrenamiento sería el siguiente:Procesamiento inteligente con datos fichero

Rasa se puede utilizar como un servidor HTTP al que realizar peticiones enviándole frases para que detecte los intents y las entities, o se puede emplear desde scripts en Python.

En este primer artículo se va a comenzar enseñando la forma de ejecución como servidor HTTP. El paso siguiente correspondería con la creación de un fichero llamado “config.json” que contendrá la ruta del fichero “bot.json” con los datos de entrenamiento así como el backend elegido (MITIE en este caso) y la ruta del fichero “total_word_feature_extractor.dat” que contiene los word vectors de las palabras del vocabulario.

El formato de “config.json” será el siguiente:

Procesamiento inteligente de los datos

Una vez hecho esto, llega el momento de entrenar el modelo proporcionando a Rasa el fichero config.json. El comando necesario para que comience el entrenamiento será:

Procesamiento inteligente de los datos con python

 Cuando haya finalizado dicho entrenamiento se habrá creado un nuevo directorio que tendrá un patrón de nombre como “models/model_YYYYMMDD-HHMMSS”. En él se encontrará el modelo predictivo generado.

Para ejecutar el servidor HTTP con el modelo entrenado se deberá ejecutar de la siguiente manera:
Python para el procesamiento inteligente de los datos

En la siguiente imagen se puede comprobar la salida que genera ese comando:Código para el procesamiento inteligente de los datos
En este momento ya se encuentra escuchado el servidor HTTP de Rasa en el puerto 5000 con el modelo cargado. Por último, se deberá enviar peticiones POST con la frase de la que se desean extraer los intents y las entities. Este proceso puede verse en la próxima captura de pantalla:Código 2 para el procesamiento inteligente de los datos

Se le ha pasado la frase “Quiero un traje rojo” y Rasa ha detectado que el intent es “clothes_search” y ls entities “clothes” (con el valor de “traje” comenzado en la posición 10 y terminando en la 15) y “colour” (con el valor de “rojo” entre las posiciones 16 y 20).

En este primer artículo se han introducido conceptos básicos de NLP y se ha comenzado a mostrar el potencial de una herramienta “open-source” para realizar esta tarea.

En futuras publicaciones se profundizará más tanto en esta aplicación como en diversas técnicas enfocadas al procesamiento de lenguaje natural mediante el uso de Redes Neuronales Recurrentes.

Did you find apk for android? You can find new Free Android Games and apps.

¿Te ha parecido de ayuda este artículo?

Si
No
0
de
0
lo encontró de ayuda

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

d

datahack

91 091 28 42
Iniciar sesión