Utilizzare i modelli di machine learning con Elasticsearch per aggiungere tag al contenuto
Obiettivi
Databases for Elasticsearch supporta i carichi di lavoro di machine learning. In questa esercitazione, imparerai come eseguire il provisioning di un modello di machine learning a una istanza di Databases for Elasticsearch e quindi utilizzarla per estrarre ulteriori informazioni significative da un dataset di test. Solo alcune conoscenze di base dei comandi di terminale sono richieste per eseguire il provisioning e comprendere questa esercitazione.
Machine learning è un ramo dell'intelligenza artificiale (AI) e dell'informatica che si concentra sull'uso di dati e algoritmi per imitare il modo in cui gli esseri umani imparano, migliorandone gradualmente l'accuratezza. Utilizzando metodi statistici, gli algoritmi vengono addestrati per creare classificazioni o previsioni e per scoprire informazioni chiave nei progetti di data mining.
Questi algoritmi di apprendimento sono noti come "modelli". In questo tutorial, usiamo un modello NLP (Natural Language Processing) precostruito, che estrae il significato dalle frasi in linguaggio scritto (Natural). In particolare, viene utilizzato il modello distilbert-base-uncased-finetuned-conll03-english che tenta di identificare i nomi di persone, ubicazioni e organizzazioni all'interno del testo.
Molti altri modelli si specializzano nell'analisi di altre forme di dati, come l'estrazione del testo dalle immagini, la conversione vocale in testo o l'identificazione degli oggetti nelle immagini. Per un elenco completo dei modelli supportati dallo stack Elastic, vedi Modelli NLP di terze parti compatibili. I modelli possono essere addestrati su conoscenze specifiche del dominio, ma l'addestramento di nuovi modelli è al di là dell'ambito di questa esercitazione.
Questo tutorial vi guida attraverso il processo di:
-
Provisioning di un'istanza di Databases for Elasticsearch
-
Caricamento di un modello di apprendimento automatico
-
Caricamento di un dataset di titoli e riepiloghi da articoli di notizie
-
Passaggio del dataset attraverso il modello NLP
-
Query dei dati incrementati per visualizzare i risultati del modello sui dati.
Consultare le altre esercitazioni in questa serie di machine learning Elasticsearch:
Aumentare la produttività
Per iniziare il processo di provisioning, installare alcuni strumenti di produttività indispensabili:
Ottieni una chiave API per eseguire il provisioning dell'infrastruttura al tuo account
Segui questa procedura per creare una chiave API IBM Cloud che abilita Terraform a eseguire il provisioning dell'infrastruttura nel tuo account. Puoi creare fino a 20 chiavi API.
Per motivi di sicurezza, la chiave API è disponibile per essere copiata o scaricata solo durante la fase di creazione. Se la chiave API viene persa, dovrai crearne una nuova.
Clona il progetto
Clona il progetto dal repositoryGitHub.
git clone https://github.com/IBM/elasticsearch-nlp-ml-tutorial.git
cd elasticsearch-nlp-ml-tutorial/terraform
Installare l'infrastruttura
Esegui il provisioning della tua istanza Databases for Elasticsearch.
-
Sulla macchina, creare un documento denominato
terraform.tfvars, con i seguenti campi:ibmcloud_api_key = "<your_api_key_from_step_1>" region = "<your_region>" es_password = "<make_up_a_password>"Il documento
terraform.tfvarscontiene le variabili che potresti voler mantenere segrete in modo che vengano ignorate dal repository GitHub. -
Installare l'infrastruttura con il seguente comando:
terraform init terraform apply --auto-approveLo script Terraform emette i dati di configurazione necessari per eseguire l'applicazione, quindi copiarli nella cartella
scripts:terraform output -json >../scripts/config.json cd ../scripts
Installa Eland
Eland è un client Python Elasticsearch per l'esplorazione e l'analisi dei dati in Elasticsearch. Installarlo con un comando come:
python3 -m pip install 'eland[pytorch]'
Carica e analizza i dati
Questa esercitazione utilizza un piccolo dataset di 132 articoli ottenuti dai siti Web BBC News e Guardian tramite i relativi feed RSS.
Questi sono stati trasformati in un file json formattato come richiesto dal metodo di caricamento di massa Elasticsearch.
Eseguire lo script upload.sh, che effettua le seguenti operazioni:
-
Carica il modello NLP in Elasticsearch.
-
Crea una pipeline di elaborazione dati in Elasticsearch che acquisisce tutti i dati in entrata e li analizza per termini significativi.
-
Carica i dati preformattati in Elasticsearch e li passa attraverso la pipeline per l'analisi.
Dal momento che questa è una demo, ci connettiamo in modo non sicuro al tuo database. Per la produzione, utilizzare connessioni sicure.
Per eseguire lo script, accertarsi di trovarsi nella directory scripts e utilizzare il comando:
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
Interrogare i propri dati
Si dispone ora di un indice denominato test con 132 record. Ognuno di questi record contiene i dati delle notizie (ID articolo, titolo e riepilogo) e un altro oggetto denominato tags. Questo è il punto in cui il modello
di machine learning ha inserito persone (PER), posizioni (LOC) o organizzazioni (ORG) che ha trovato nel testo.
L'indice contiene anche un altro oggetto, denominato ml, che mostra alcune delle modalità di funzionamento del modello. Ad esempio, indica la probabilità di precisione assegnata a ciascuno dei termini trovati.
Ad esempio, utilizzare questa query per richiamare un singolo record da esaminare:
curl -k "$ES/test/_search?size=1" | jq .
Questo modello di machine learning ha generato informazioni preziose. Ad esempio, se si esegue un sito Web di notizie, è possibile generare pagine di contenuto basato su tag. Se, ad esempio, i tuoi utenti vanno a una pagina come www.mynewssite.com/tag/rishi-sunak, tutto ciò che il tuo sistema dovrebbe fare è cercare per quel tag nell'indice degli articoli di notizie per recuperare un elenco di quelli che menzionano Rishi Sunak:
curl -kX POST -d@body.json -H "Content-Type: application/json" "$ES/test/_search" | jq .
Esiste un file body.json nella directory scripts con cui è possibile eseguire ricerche differenti.
Conclusione
Questa esercitazione mostra come utilizzare Databases for Elasticsearch per sfruttare la potenza del machine learning per generare informazioni aggiuntive preziose dai tuoi dati. Speriamo che tu possa usarlo come trampolino per esplorare altri modi per aumentare e creare valore dai tuoi dati.
Per smettere di incorrere in addebiti, non dimenticare di rimuovere tutta la tua infrastruttura distribuita. Nella tua directory terraform, utilizza il seguente comando:
terraform destroy