In dieser Anleitung wird veranschaulicht, wie Sie ein benutzerdefiniertes Modell zum Klassifizieren von Inhalten mit AutoML Natural Language erstellen. Die Anwendung trainiert ein benutzerdefiniertes Modell mit einer Reihe von "glücklichen Momenten" aus dem Open-Source-Dataset HappyDB von Kaggle. Das resultierende Modell klassifiziert glückliche Momente in Kategorien, die jeweils die Ursachen von Glück angeben.
Die Daten werden über eine Creative Commons CCO: Public Domain-Lizenz zur Verfügung gestellt.
In dieser Anleitung erfahren Sie, wie Sie ein benutzerdefiniertes Modell trainieren, dessen Leistung bewerten und neuen Inhalt klassifizieren.
Vorbereitung
Projektumgebung konfigurieren
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist
-
AutoML Natural Language APIs aktivieren.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist
-
AutoML Natural Language APIs aktivieren.
- Installieren Sie die Google Cloud CLI.
- Folgen Sie der Anleitung zum Erstellen eines Dienstkontos und Herunterladen einer Schlüsseldatei.
- Legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
so fest, dass sie auf die Schlüsseldatei des Dienstkontos verweist. Die Schlüsseldatei haben Sie beim Erstellen des Dienstkontos heruntergeladen. Beispiel:export GOOGLE_APPLICATION_CREDENTIALS=key-file
- Fügen Sie das neue Dienstkonto mit folgenden Befehlen zur IAM-Rolle AutoML Editor hinzu. Ersetzen Sie project-id durch den Namen Ihres Google Cloud-Projekts und service-account-name durch den Namen Ihres neuen Dienstkontos, z. B.
service-account1@myproject.iam.gserviceaccount.com
.gcloud auth login gcloud config set project project-id gcloud projects add-iam-policy-binding project-id
--member=serviceAccount:service-account-name
--role='roles/automl.editor' - Gewähren Sie dem AutoML Natural Language-Dienstkonto Zugriff auf Ihre Google Cloud-Projektressourcen.
gcloud projects add-iam-policy-binding project-id
--member="serviceAccount:custom-vision@appspot.gserviceaccount.com"
--role="roles/storage.admin" - Clientbibliothek installieren
- Legen Sie die Umgebungsvariablen PROJECT_ID und REGION_NAME fest.
Ersetzen Sie project-id durch die Projekt-ID Ihres Google Cloud Platform-Projekts. AutoML Natural Language erfordert derzeit den Standortus-central1
.export PROJECT_ID="project-id" export REGION_NAME="us-central1"
- Erstellen Sie einen Google Cloud Storage-Bucket zum Speichern der Dokumente, die Sie zum Trainieren Ihres benutzerdefinierten Modells verwenden.
Der Bucket-Name muss das Format$PROJECT_ID-lcm
haben. Mit dem folgenden Befehl wird ein Speicher-Bucket in der Regionus-central1
mit der Bezeichnung$PROJECT_ID-lcm
erstellt.gsutil mb -p $PROJECT_ID -c regional -l $REGION_NAME gs://$PROJECT_ID-lcm/
- Kopieren Sie die Datei
happiness.csv
aus dem öffentlichen Bucket in Ihren Google Cloud Storage-Bucket.
Die Dateihappiness.csv
befindet sich im Ordner NL-Klassifizierung im öffentlichen Bucket cloud-ml-data.
Speicherorte der Quellcodedateien
Den Quellcode finden Sie hier. Sie können die Quellcodedateien auch in Ihren Google Cloud Platform-Projektordner kopieren. Andernfalls empfehlen wir, den Code nach jedem Schritt direkt von dieser Seite zu kopieren.
Python
Die Anleitung besteht aus diesen Python-Programmen:
language_text_classification_create_dataset.py
– Enthält Features zum Erstellen eines Datasetsimport_dataset.py
– Enthält Features zum Importieren eines Datasetslanguage_text_classification_create_model.py
– Enthält Features zum Erstellen eines Modellslist_model_evaluations.py
– Enthält Features zum Auflisten von Modellbewertungenlanguage_text_classification_predict.py
– Enthält Features für die Vorhersagedelete_model.py
– Enthält Features zum Löschen eines Modells
Java
Die Anleitung besteht aus diesen Java-Dateien:
LanguageTextClassificationCreateDataset.java
– Enthält Features zum Erstellen eines DatasetsImportDataset.java
– Enthält Features zum Importieren eines DatasetsLanguageTextClassificationCreateModel.java
– Enthält Features zum Erstellen eines ModellsListModelEvaluations.java
– Enthält Features zum Auflisten von ModellbewertungenLanguageTextClassificationPredict.java
– Enthält Features für die VorhersageDeleteModel.java
– Enthält Features zum Löschen eines Modells
Node.js
Die Anleitung besteht aus diesen Node.js-Dateien:
language_text_classification_create_dataset.js
– Enthält Features zum Erstellen eines Datasetsimport_dataset.js
– Enthält Features zum Importieren eines Datasetslanguage_text_classification_create_model.js
– Enthält Features zum Erstellen eines Modellslist_model_evaluations.js
– Enthält Features zum Auflisten von Modellbewertungenlanguage_text_classification_predict.js
– Enthält Features für die Vorhersagedelete_model.js
– Feature zum Löschen eines Modells einschließen
Anwendung ausführen
Schritt 1: Dataset erstellen
Der erste Schritt zum Erstellen eines benutzerdefinierten Modells besteht darin, ein leeres Dataset zu erstellen, das mit den Trainingsdaten für das Modell gefüllt wird. Wenn Sie ein Dataset erstellen, geben Sie den Klassifizierungstyp an, den das benutzerdefinierte Modell ausführen soll:
- MULTICLASS weist jedem klassifizierten Dokument ein einzelnes Label zu
- MULTILABEL kann einem Dokument mehrere Labels zuweisen
In dieser Anleitung wird ein Dataset mit dem Namen 'happydb' erstellt und MULTICLASS verwendet.
Code kopieren
Python
Java
Node.js
Anfrage
Führen Sie das Feature create_dataset
aus, um ein leeres Dataset zu erstellen. Sie müssen die folgenden Codezeilen ändern:
- Setzen Sie die
project_id
auf Ihre PROJECT_ID. Legen Sie als
display_name
für das Datasethappydb
fest.
Python
python language_text_classification_create_dataset.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.LanguageTextClassificationCreateDataset"
Node.js
node language_text_classification_create_dataset.js
Antwort
Die Antwort enthält die Details des neu erstellten Datasets, darunter die Dataset-ID, mit der Sie bei zukünftigen Anfragen auf das Dataset verweisen. Es wird empfohlen, die Umgebungsvariable DATASET_ID
auf den zurückgegebenen Wert der Dataset-ID festzulegen.
Dataset name: projects/216065747626/locations/us-central1/datasets/TCN7372141011130533778 Dataset id: TCN7372141011130533778 Dataset display name: happydb Text classification dataset specification: classification_type: MULTICLASS Dataset example count: 0 Dataset create time: seconds: 1530251987 nanos: 216586000
Schritt 2: Trainingselemente in das Dataset importieren
Der nächste Schritt besteht darin, das Dataset mit Trainingselementen zu füllen, die mit den Zielkategorien versehen sind.
Die Funktionsschnittstelle import_dataset
übernimmt als Eingabe eine CSV-Datei, in der die Speicherorte aller Trainingsdokumente und das richtige Label für jedes Trainingsdokument aufgeführt sind.
(Weitere Informationen zum erforderlichen Format finden Sie unter Trainingsdaten vorbereiten.) Für diese Anleitung verwenden Sie happiness.csv
, das Sie oben in Google Cloud Storage hochgeladen haben.
Code kopieren
Python
Java
Node.js
Anfrage
Führen Sie das Feature import_data
aus, um den Trainingsinhalt zu importieren. Der erste zu ändernde Code ist die Dataset-ID aus dem vorherigen Schritt, der zweite ist der URI von happiness.csv
. Sie müssen die folgenden Codezeilen ändern:
- Setzen Sie die
project_id
auf Ihre PROJECT_ID. - Legen Sie
dataset_id
für das Dataset fest (aus der Ausgabe des vorherigen Schritts). Legen Sie den Pfadparameter
path
fest. Das ist der URI vongs://YOUR_PROJECT_ID-lcm/csv/happiness.csv
.
Python
python import_dataset.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.ImportDataset"
Node.js
node import_dataset.js
Antwort
Processing import... Dataset imported.
Schritt 3: Modell erstellen (trainieren)
Sie haben nun ein Dataset aus Trainingsdokumenten mit Labels und können ein neues Modell trainieren.
Code kopieren
Python
Java
Node.js
Anfrage
Rufen Sie die Funktion create_model
auf, um ein Modell zu erstellen. Die Dataset-ID stammt aus den vorherigen Schritten. Sie müssen die folgenden Codezeilen ändern:
- Setzen Sie die
project_id
auf Ihre PROJECT_ID. - Legen Sie die
dataset_id
für das Dataset fest (aus der Ausgabe des vorherigen Schritts). Legen Sie den
display_name
für Ihr Modell fest (happydb_model).
Python
python language_text_classification_create_model.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.LanguageTextClassificationCreateModel"
Node.js
node language_text_classification_create_model.js
Antwort
Das Feature create_model
startet einen Trainingsvorgang und gibt den Namen des Vorgangs aus. Das Training erfolgt asynchron und kann einige Zeit in Anspruch nehmen. Anhand der Vorgangs-ID können Sie den Trainingsstatus abrufen.
Nach Abschluss des Trainings gibt create_model
die Modell-ID zurück. Wie bei der Dataset-ID möchten Sie unter Umständen eine Umgebungsvariable MODEL_ID
für den zurückgegebenen Wert der Modell-ID festlegen.
Training operation name: projects/216065747626/locations/us-central1/operations/TCN3007727620979824033 Training started... Model name: projects/216065747626/locations/us-central1/models/TCN7683346839371803263 Model id: TCN7683346839371803263 Model display name: happydb_model Model create time: seconds: 1529649600 nanos: 966000000 Model deployment state: deployed
Schritt 4: Modell bewerten
Nach dem Training können Sie die Bereitschaft des Modells bewerten. Dazu prüfen Sie die Genauigkeit, die Trefferquote und den F1-Wert.
Das Feature display_evaluation
verwendet die Modell-ID als Parameter.
Code kopieren
Python
Java
Node.js
Anfrage
Stellen Sie eine Anfrage, um die Gesamtbewertung des Modells aufzurufen. Führen Sie zu diesem Zweck die folgende Anfrage aus. Sie müssen die folgenden Codezeilen ändern:
- Setzen Sie die
project_id
auf Ihre PROJECT_ID. Setzen Sie die
model_id
auf die ID Ihres Modells.
Python
python list_model_evaluations.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.ListModelEvaluations"
Node.js
node list_model_evaluations.js
Antwort
Wenn die Werte für Genauigkeit und Trefferquote zu niedrig sind, können Sie das Trainings-Dataset verbessern und Ihr Modell neu trainieren. Weitere Informationen finden Sie unter Modelle bewerten.
Precision and recall are based on a score threshold of 0.5 Model Precision: 96.3% Model Recall: 95.7% Model F1 score: 96.0% Model Precision@1: 96.33% Model Recall@1: 95.74% Model F1 score@1: 96.04%
Schritt 5: Modell bereitstellen
Wenn das benutzerdefinierte Modell Ihren Qualitätsstandards entspricht, können Sie es bereitstellen und anschließend eine Vorhersageanfrage senden.
Code kopieren
Python
Java
Node.js
Anfrage
Für die Funktion deploy_model
müssen Sie die folgenden Codezeilen ändern:
- Setzen Sie die
project_id
auf Ihre PROJECT_ID. Setzen Sie die
model_id
auf die ID Ihres Modells.
Python
python deploy_model.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.DeployModel.java"
Node.js
node deploy_model.js
Antwort
Model deployment finished.
Schritt 6: Das Modell für eine Vorhersage verwenden
Nachdem Sie Ihr Modell bereitgestellt haben, können Sie es zum Klassifizieren neuer Inhalte verwenden.
Code kopieren
Python
Java
Node.js
Anfrage
Für die Funktion predict
müssen Sie die folgenden Codezeilen ändern:
- Setzen Sie die
project_id
auf Ihre PROJECT_ID. - Setzen Sie die
model_id
auf die ID Ihres Modells. Legen Sie die
content
fest, die Sie vorhersagen möchten.
Python
python language_text_classification_predict.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.LanguageTextClassificationPredict"
Node.js
node language_text_classification_predict.js
Antwort
Die Funktion gibt den Klassifizierungswert für die Übereinstimmung des Inhalts mit jeder Kategorie zurück.
Prediction results: Predicted class name: affection Predicted class score: 0.9702693223953247
Schritt 7: Modell löschen
Wenn Sie dieses Beispielmodell nicht mehr verwenden, können Sie es dauerhaft löschen. Anschließend können Sie das Modell nicht mehr für Vorhersagen verwenden.
Code kopieren
Python
Java
Node.js
Anfrage
Stellen Sie eine Anfrage mit dem Vorgangstyp delete_model
, um ein von Ihnen erstelltes Modell zu löschen. Dafür müssen Sie die folgenden Codezeilen ändern:
- Setzen Sie die
project_id
auf Ihre PROJECT_ID. Setzen Sie die
model_id
auf die ID Ihres Modells.
Python
python delete_model.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.DeleteModel"
Node.js
node delete_model.js
Antwort
Model deleted.