IBM Cloud Docs
Utilizar modelos de aprendizaje automático con Elasticsearch para etiquetar contenido

Utilizar modelos de aprendizaje automático con Elasticsearch para etiquetar contenido

Objetivos

Databases for Elasticsearch da soporte a cargas de trabajo de aprendizaje automático. En esta guía de aprendizaje, aprenderá a suministrar un modelo de aprendizaje automático a una instancia de Databases for Elasticsearch y a utilizarlo para extraer información adicional significativa de un conjunto de datos de prueba. Sólo se necesitan algunos conocimientos básicos de los mandatos de terminal para suministrar y comprender esta guía de aprendizaje.

Machine learning es una rama de la inteligencia artificial (IA) y la informática que se centra en el uso de datos y algoritmos para imitar la forma en que los humanos aprenden, mejorando gradualmente su precisión. Mediante el uso de métodos estadísticos, los algoritmos se entrenan para realizar clasificaciones o predicciones, y para descubrir información clave en proyectos de minería de datos.

Estos algoritmos de aprendizaje se conocen como "modelos". En esta guía de aprendizaje, utilizamos un modelo preconstruido de procesamiento del lenguaje natural (NLP), que extrae el significado de las frases en lenguaje escrito (Natural). Específicamente, utilizamos el modelo distilbert-base-uncased-finetuned-conll03-english que intenta identificar los nombres de personas, ubicaciones y organizaciones dentro del texto.

Muchos otros modelos se especializan en analizar otras formas de datos, como la extracción de texto de imágenes, la conversión de voz a texto o la identificación de objetos en imágenes. Para obtener una lista completa de los modelos soportados por la pila Elastic, consulte Modelos de NLP de terceros compatibles. Los modelos se pueden entrenar con conocimientos específicos del dominio, pero el entrenamiento de nuevos modelos está fuera del ámbito de esta guía de aprendizaje.

Este tutorial le guía a través del proceso de:

  • Suministro de una instancia de Databases for Elasticsearch

  • Cargar un modelo de aprendizaje automático

  • Carga de un conjunto de datos de titulares y resúmenes de artículos de noticias

  • Pasar el conjunto de datos a través del modelo NLP

  • Consulta de los datos aumentados para ver los resultados del modelo en los datos.

Consulte las otras guías de aprendizaje en esta serie de aprendizaje automático Elasticsearch:

Conseguir productividad

Para empezar el proceso de suministro, instale algunas herramientas de productividad necesarias:

Obtenga una clave API para dotar de infraestructura a su cuenta

Siga estos pasos para crear una clave de API IBM Cloud que permita a Terraform suministrar infraestructura a su cuenta. Puede crear hasta 20 claves de API.

Por motivos de seguridad, la clave de API sólo está disponible para copiarse o descargarse en el momento de la creación. Si se pierde la clave de API, deberá crear una nueva clave de API.

Clonar el proyecto

Clone el proyecto desde el repositorio GitHub.

git clone https://github.com/IBM/elasticsearch-nlp-ml-tutorial.git
cd elasticsearch-nlp-ml-tutorial/terraform

Instalar la infraestructura

Suministre la instancia de Databases for Elasticsearch.

  1. En la máquina, cree un documento denominado terraform.tfvars, con los campos siguientes:

    ibmcloud_api_key = "<your_api_key_from_step_1>"
    region = "<your_region>"
    es_password  = "<make_up_a_password>"
    

    El documento terraform.tfvars contiene variables que tal vez desee mantener en secreto para que sea ignorado por el repositorio GitHub.

  2. Instale la infraestructura con el siguiente comando:

    terraform init
    terraform apply --auto-approve
    

    El script de Terraform genera los datos de configuración necesarios para ejecutar la aplicación, por lo que debe copiarlos en la carpeta scripts :

    terraform output -json >../scripts/config.json
    cd ../scripts
    

Instalar Eland

Eland es un cliente Python Elasticsearch para explorar y analizar datos en Elasticsearch. Instálelo con un mandato como:

   python3 -m pip install 'eland[pytorch]'

Cargar y analizar datos

Esta guía de aprendizaje utiliza un pequeño conjunto de datos de 132 artículos que se obtienen de los sitios web de BBC News y Guardian a través de sus canales de información RSS.

Estos se han transformado en un archivo json con el formato que requiere el método de carga masiva Elasticsearch.

Ejecute el script upload.sh, que hace lo siguiente:

  • Carga el modelo NLP en Elasticsearch.

  • Crea una interconexión de proceso de datos en Elasticsearch que toma los datos entrantes y los analiza en busca de términos significativos.

  • Carga los datos preformateados en Elasticsearch y los pasa a través de la interconexión para su análisis.

Puesto que se trata de una demostración, nos conectamos de forma no segura a su base de datos. Para producción, utilice conexiones seguras.

Para ejecutar el script, asegúrese de que está en el directorio scripts y utilice el mandato:

ES_PASSWORD=`cat config.json | jq -r .es_password.value`
ES_PORT=`cat config.json | jq -r .es_port.value`
ES_HOST=`cat config.json | jq -r .es_host.value`
export ES="https://admin:${ES_PASSWORD}@${ES_HOST}:${ES_PORT}"
./upload.sh

Consultar los datos

Ahora tiene un índice denominado test que tiene 132 registros. Cada uno de estos registros contiene los datos de noticias (ID de artículo, titular y resumen) y un objeto adicional llamado tags. Aquí es donde el modelo de aprendizaje automático ha insertado cualquier persona (PER), ubicación (LOC) u organización (ORG) que haya encontrado en el texto.

El índice también contiene otro objeto, llamado ml, que muestra algo de cómo funciona el modelo. Por ejemplo, le indica qué probabilidad de precisión ha asignado a cada uno de los términos que ha encontrado.

Por ejemplo, utilice esta consulta para recuperar un único registro para inspeccionarlo:

curl -k "$ES/test/_search?size=1" | jq .

Este modelo de aprendizaje automático ha generado información valiosa. Por ejemplo, si ejecuta un sitio web de noticias, puede generar páginas de contenido basado en etiquetas. Si, por ejemplo, los usuarios van a una página como www.mynewssite.com/tag/rishi-sunak, todo lo que el sistema tendría que hacer es buscar por esa etiqueta en el índice de artículos de noticias para recuperar una lista de los que mencionan Rishi Sunak:

curl -kX POST -d@body.json -H "Content-Type: application/json" "$ES/test/_search" | jq .

Hay un archivo body.json en el directorio scripts con el que puede reproducir para realizar búsquedas diferentes.

Conclusión

Esta guía de aprendizaje muestra cómo utilizar Databases for Elasticsearch para aprovechar la potencia del aprendizaje automático para generar información adicional valiosa a partir de los datos. Esperamos que pueda utilizarlo como trampolín para explorar otras formas de aumentar y crear valor a partir de sus datos.

Para dejar de incurrir en cargos, no olvide eliminar toda la infraestructura desplegada. En el directorio terraform, utilice el mandato:

terraform destroy