[PYTHON] Wie auch immer, klassifizieren Sie die natürliche Sprache sofort [einfacher Transformator, Transformator]

Wie auch immer, ich möchte die unterste Zeile der natürlichen Sprache (Text) klassifizieren.

Bei der Einführung von Methoden zum Lernen und Ableiten ohne Vorverarbeitung oder Wortvektorisierung ist die Genauigkeit oft nicht so hoch.

simpletransformer Es ist im Python-Paket implementiert, sodass Sie im natürlichen Sprachsystem problemlos verschiedene Aufgaben ausführen können.

Installation

Ich habe es unter der Annahme geschrieben, dass grundlegende Dinge wie Pandas enthalten sind und man sowohl mit Conda als auch mit Pip machen kann.

Installieren Sie die Pytorch

Wenn Pytorch bereits enthalten ist, überspringen Sie die folgenden Schritte. Für GPU

pip install pytorch>=1.6 cudatoolkit=10.2 -c pytorch

Nur CPU

pip install pytorch cpuonly -c pytorch

Installation einfacher Transformatoren

Ich denke nicht, dass einfache Transformatoren mit conda gemacht werden können.

pip install simpletransformers

Optionale (wandb) Installation (optional)

Es ist eine Installation von wandb zur Visualisierung des Lernens im Web. Es funktioniert ohne es. Bitte überspringen Sie es, wenn Sie es nicht benötigen. Die Verwendung wird nicht beschrieben.

pip install wandb

wie benutzt man

Verwenden Sie es unter der Annahme, dass der Pandas-Datenrahmen den Text und die entsprechende Bezeichnung enthält.

Der Name der Spalte, in der der Text von Pandas geschrieben ist, wurde in "Text" und der Name der Spalte, in der das Etikett in "Etikett" geschrieben ist, geändert.

Einstellung jedes Parameters

params = {
    "output_dir": "out_models/bert_model/",
    "max_seq_length": 256,
    "train_batch_size": 128,
    "eval_batch_size": 128,
    "num_train_epochs": 10,
    "learning_rate": 1e-4,
}

Geben Sie ein beliebiges Verzeichnis für output_dir an. Dies ist das Speicherzielverzeichnis des Modells, das beim Lernen erstellt wurde.

Code zum Lernen verwendet

from simpletransformers.classification import ClassificationModel

model = ClassificationModel(“bert”, “bert-base-cased”,num_labels=10, args=params, use_cuda=True)

model.train_model(train_df)

Geben Sie den Namen jedes Modells ein, das Sie in "bert" verwenden möchten, und den Namen des vorab trainierten Modells, das Sie in "bert-base-cased" verwenden möchten. Siehe hier für trainierte Modelle und deren Namen. num_labels ist die Anzahl der Beschriftungen. Bitte formatieren Sie die Beschriftungen so, dass sie bei 0 beginnen. train_df ist ein Datenrahmen, der mit den Spalten "text" und "label" erstellt wurde.

Inferenzmethode

Es wird davon ausgegangen, dass es einen Datenrahmen für den Test gibt, der das gleiche Format wie der Datenrahmen für das Training hat.

pred, _ = model.predict(test_df['text'])

Das vorhergesagte Label wird an pred ausgegeben.

Zusammenfassung

Die Dokumentation für simpletransformers finden Sie hier (https://simpletransformers.ai/). Es scheint, dass es viele andere Funktionen gibt, also versuchen Sie es bitte. Denken Sie daran, dass Vorverarbeitung, Nachbearbeitung usw. wichtig sind. Wenn Sie sie diesmal ignorieren, können Sie nicht viel Genauigkeit erwarten.

Recommended Posts

Wie auch immer, klassifizieren Sie die natürliche Sprache sofort [einfacher Transformator, Transformator]
Natürliche Sprache: GPT - Japanischer generativer Pretraining-Transformator
Natürliche Sprache: Maschinelle Übersetzung Teil 2 - Neuronaler maschineller Übersetzungstransformator
Python: Verarbeitung natürlicher Sprache
RNN_LSTM2 Verarbeitung natürlicher Sprache