Verwenden Sie Modelle für maschinelles Lernen mit Elasticsearch, um Inhalte zu kennzeichnen.
Ziele
Databases for Elasticsearch unterstützt Workloads für maschinelles Lernen. In diesem Lernprogramm erfahren Sie, wie Sie ein Modell für maschinelles Lernen für eine Databases for Elasticsearch-Instanz bereitstellen und anschließend verwenden, um aussagekräftige zusätzliche Informationen aus einem Testdataset zu extrahieren. Zum Bereitstellen und Verstehen dieses Lernprogramms sind nur einige grundlegende Kenntnisse über Terminalbefehle erforderlich.
Maschinelles Lernen ist ein Zweig der künstlichen Intelligenz (KI) und Informatik, der sich auf die Verwendung von Daten und Algorithmen konzentriert, um die Art und Weise zu imitieren, wie Menschen lernen, und seine Genauigkeit schrittweise zu verbessern. Mithilfe statistischer Methoden werden Algorithmen trainiert, um Klassifizierungen oder Vorhersagen zu machen und wichtige Erkenntnisse in Data-Mining-Projekten zu gewinnen.
Diese Lernalgorithmen werden als "Modelle" bezeichnet. In diesem Lernprogramm verwenden wir ein vorerstelltes NLP-Modell (Natural Language Processing), das eine Bedeutung aus Sätzen in geschriebener (Natural) Sprache extrahiert. Insbesondere wird das Modell distilbert-base-uncased-finetuned-conll03-english verwendet, um die Namen von Personen, Standorten und Organisationen im Text zu identifizieren.
Viele andere Modelle sind auf die Analyse anderer Datenformen spezialisiert, z. B. Textextraktion aus Bildern, Sprachkonvertierung in Text oder Objektidentifikation in Bildern. Eine vollständige Liste der von Elastic Stack unterstützten Modelle finden Sie unter Kompatible NLP-Modelle anderer Anbieter. Modelle können mit domänenspezifischem Wissen trainiert werden, das Training neuer Modelle geht jedoch über den Rahmen dieses Lernprogramms hinaus.
Dieses Tutorial führt Sie durch den Prozess:
-
Databases for Elasticsearch-Instanz bereitstellen
-
Hochladen eines Modells für maschinelles Lernen
-
Hochladen von Überschriften und Zusammenfassungen aus Nachrichtenartikeln
-
Dataset über das NLP-Modell übergeben
-
Erweiterte Daten abfragen, um die Ergebnisse des Modells für die Daten anzuzeigen.
Weitere Lernprogramme finden Sie in dieser Elasticsearch-Reihe für maschinelles Lernen:
Produktiv werden
Installieren Sie einige Produktivitätstools, um mit dem Bereitstellungsprozess zu beginnen:
- Sie benötigen ein IBM Cloud-Konto.
- Terraform-Zur Codierung und Bereitstellung der Infrastruktur.
- Python
- jq-Zum Verarbeiten von Konfigurationsdateien.
Erhalten Sie einen API-Schlüssel, um Ihrem Konto eine Infrastruktur bereitzustellen
Führen Sie diese Schritte aus, um einen API-Schlüssel für IBM Cloud zu erstellen, der Terraform die Bereitstellung der Infrastruktur für Ihr Konto ermöglicht. Sie können bis zu 20 API-Schlüssel erstellen.
Aus Sicherheitsgründen kann der API-Schlüssel nur zum Zeitpunkt seiner Erstellung kopiert oder heruntergeladen werden. Wenn der API-Schlüssel verloren geht, müssen Sie einen neuen API-Schlüssel erzeugen.
Projekt klonen
Klonen Sie das Projekt aus dem GitHub-Repository.
git clone https://github.com/IBM/elasticsearch-nlp-ml-tutorial.git
cd elasticsearch-nlp-ml-tutorial/terraform
Infrastruktur installieren
Stellen Sie Ihre Databases for Elasticsearch-Instanz bereit.
-
Erstellen Sie auf Ihrer Maschine ein Dokument namens
terraform.tfvarsmit den folgenden Feldern:ibmcloud_api_key = "<your_api_key_from_step_1>" region = "<your_region>" es_password = "<make_up_a_password>"Das Dokument
terraform.tfvarsenthält Variablen, die Sie möglicherweise geheim halten möchten, sodass es vom Repository GitHub ignoriert wird. -
Installieren Sie die Infrastruktur mit dem folgenden Befehl:
terraform init terraform apply --auto-approveDas Terraform-Script gibt die Konfigurationsdaten aus, die für die Ausführung der Anwendung erforderlich sind. Kopieren Sie sie in den Ordner
scripts:terraform output -json >../scripts/config.json cd ../scripts
Eland installieren
Eland ist ein Python Elasticsearch-Client zum Durchsuchen und Analysieren von Daten in Elasticsearch. Installieren Sie es mit einem Befehl wie dem folgenden:
python3 -m pip install 'eland[pytorch]'
Daten hochladen und analysieren
In diesem Lernprogramm wird ein kleines Dataset mit 132 Artikeln verwendet, die von den Websites BBC News und Guardian über ihre RSS-Feeds abgerufen werden.
Diese wurden in eine JSON-Datei umgewandelt, die gemäß der Massenuploadmethodevon Elasticsearch formatiert ist.
Führen Sie das Script upload.sh aus, das Folgendes ausführt:
-
Lädt das NLP-Modell in Elasticsearchhoch.
-
Erstellt eine Datenverarbeitungspipeline in Elasticsearch, die alle eingehenden Daten auf aussagekräftige Begriffe analysiert.
-
Lädt die vorformatierten Daten in Elasticsearch hoch und übergibt sie zur Analyse über die Pipeline.
Da es sich um eine Demo handelt, stellen wir eine unsichere Verbindung zu Ihrer Datenbank her. Verwenden Sie für die Produktion sichere Verbindungen.
Stellen Sie zum Ausführen des Scripts sicher, dass Sie sich im Verzeichnis scripts befinden, und verwenden Sie den Befehl:
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
Daten abfragen
Sie verfügen nun über einen Index mit dem Namen test mit 132 Datensätzen. Jeder dieser Datensätze enthält die Nachrichtendaten (Artikel-ID, Überschrift und Zusammenfassung) und ein zusätzliches Objekt namens tags. Hier
hat das Modell für maschinelles Lernen Personen (PER), Standorte (LOC) oder Organisationen (ORG) eingefügt, die es im Text gefunden hat.
Der Index enthält außerdem ein weiteres Objekt mit dem Namen ml, das einige der Funktionsweise des Modells zeigt. Sie gibt beispielsweise an, welche Genauigkeitswahrscheinlichkeit sie jedem der gefundenen Begriffe zugewiesen hat.
Verwenden Sie beispielsweise diese Abfrage, um einen einzelnen zu überprüfenden Datensatz abzurufen:
curl -k "$ES/test/_search?size=1" | jq .
Dieses Modell für maschinelles Lernen hat wertvolle Informationen generiert. Wenn Sie beispielsweise eine News-Website ausführen, können Sie Seiten mit tagbasierten Inhalten generieren. Wenn Ihre Benutzer beispielsweise eine Seite wie www.mynewssite.com/tag/rishi-sunakaufrufen, müsste Ihr System nur anhand dieses Tags im Index der Nachrichtenartikel suchen, um eine Liste der Artikel abzurufen, die Rishi Sunak erwähnen:
curl -kX POST -d@body.json -H "Content-Type: application/json" "$ES/test/_search" | jq .
Das Verzeichnis scripts enthält eine Datei body.json, mit der Sie verschiedene Suchvorgänge ausführen können.
Fazit
Dieses Lernprogramm zeigt, wie Sie mithilfe von Databases for Elasticsearch das Potenzial von maschinellem Lernen nutzen, um wertvolle zusätzliche Informationen aus Ihren Daten zu generieren. Wir hoffen, dass Sie es als Sprungbrett nutzen können, um andere Möglichkeiten zur Erweiterung und Wertschöpfung aus Ihren Daten zu erkunden.
Um Gebühren zu verhindern, vergessen Sie nicht, die gesamte bereitgestellte Infrastruktur zu entfernen. Verwenden Sie im Terraform-Verzeichnis den folgenden Befehl:
terraform destroy