Bild vom Autor mit Midjourney erstellt
Einführung
Bei der Sentimentanalyse handelt es sich um Techniken der Verarbeitung natürlicher Sprache (NLP), die verwendet werden, um die in einem Textkörper ausgedrückte Stimmung zu beurteilen. Sie ist eine wesentliche Technologie hinter modernen Anwendungen zur Bewertung von Kundenfeedback, zur Verfolgung der Stimmung in sozialen Medien und zur Marktforschung. Sentimentanalyse hilft Unternehmen und anderen Organisationen, die öffentliche Meinung einzuschätzen, einen verbesserten Kundenservice anzubieten und ihre Produkte oder Dienstleistungen zu verbessern.
BERT, die Abkürzung für Bidirectional Encoder Representations from Transformers, ist ein Sprachverarbeitungsmodell, das bei seiner ersten Veröffentlichung den Stand der Technik der NLP verbesserte, indem es ein wichtiges Verständnis von Wörtern im Kontext ermöglichte und frühere Modelle bei weitem übertraf. Die Bidirektionalität von BERT – das Lesen sowohl des linken als auch des rechten Kontexts eines bestimmten Wortes – erwies sich in Anwendungsfällen wie der Stimmungsanalyse als besonders wertvoll.
In dieser umfassenden Einführung erfahren Sie, wie Sie BERT mithilfe der Bibliothek „Hugging Face Transformers“ für Ihre eigenen Sentimentanalyseprojekte optimieren. Egal, ob Sie ein Neuling oder ein erfahrener NLP-Anwender sind, wir werden im Verlauf dieses Schritt-für-Schritt-Tutorials viele praktische Strategien und Überlegungen behandeln, um sicherzustellen, dass Sie intestine gerüstet sind, um BERT für Ihre eigenen Zwecke richtig zu optimieren.
Einrichten der Umgebung
Bevor wir unser Modell optimieren können, müssen einige Voraussetzungen erfüllt sein. Insbesondere werden hierfür mindestens Hugging Face Transformers sowie PyTorch und die Dataset-Bibliothek von Hugging Face benötigt. Gehen Sie dazu wie folgt vor.
pip set up transformers torch datasets
Und das ist es.
Vorverarbeitung der Daten
Sie müssen einige Daten auswählen, mit denen Sie den Textklassifizierer trainieren möchten. Hier arbeiten wir mit dem IMDb-Datensatz für Filmkritiken, da dies einer der Orte ist, an denen die Sentimentanalyse demonstriert wird. Lassen Sie uns nun den Datensatz mit dem datasets
Bibliothek.
from datasets import load_dataset
dataset = load_dataset("imdb")
print(dataset)
Wir müssen unsere Daten tokenisieren, um sie für Algorithmen zur Verarbeitung natürlicher Sprache vorzubereiten. BERT verfügt über einen speziellen Tokenisierungsschritt, der sicherstellt, dass ein Satzfragment bei der Transformation für Menschen so kohärent wie möglich bleibt. Sehen wir uns an, wie wir unsere Daten tokenisieren können, indem wir BertTokenizer
von Transformers.
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
def tokenize_function(examples):
return tokenizer(examples('textual content'), padding="max_length", truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
Vorbereiten des Datensatzes
Teilen wir den Datensatz in Trainings- und Validierungssätze auf, um die Leistung des Modells zu bewerten. So werden wir dabei vorgehen.
from datasets import train_test_split
train_testvalid = tokenized_datasets('prepare').train_test_split(test_size=0.2)
train_dataset = train_testvalid('prepare')
valid_dataset = train_testvalid('take a look at')
DataLoader helfen dabei, Datenmengen während des Trainingsprozesses effizient zu verwalten. So erstellen wir DataLoader für unsere Trainings- und Validierungsdatensätze.
from torch.utils.knowledge import DataLoader
train_dataloader = DataLoader(train_dataset, shuffle=True, batch_size=8)
valid_dataloader = DataLoader(valid_dataset, batch_size=8)
Einrichten des BERT-Modells zur Feinabstimmung
Wir verwenden die BertForSequenceClassification
Klasse zum Laden unseres Modells, das für Sequenzklassifizierungsaufgaben vorab trainiert wurde. So werden wir vorgehen.
from transformers import BertForSequenceClassification, AdamW
mannequin = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)
Trainieren des Modells
Zum Trainieren unseres Modells müssen wir die Trainingsschleife definieren, eine Verlustfunktion, einen Optimierer und zusätzliche Trainingsargumente angeben. So können wir die Trainingsschleife einrichten und ausführen.
from transformers import Coach, TrainingArguments
training_args = TrainingArguments(
output_dir="./outcomes",
evaluation_strategy="epoch",
learning_rate=2e-5,
per_device_train_batch_size=8,
per_device_eval_batch_size=8,
num_train_epochs=3,
weight_decay=0.01,
)
coach = Coach(
mannequin=mannequin,
args=training_args,
train_dataset=train_dataset,
eval_dataset=valid_dataset,
)
coach.prepare()
Auswerten des Modells
Bei der Bewertung des Modells wird seine Leistung anhand von Kennzahlen wie Genauigkeit, Präzision, Rückruf und F1-Rating überprüft. So können wir unser Modell bewerten.
metrics = coach.consider()
print(metrics)
Vorhersagen treffen
Nach der Feinabstimmung können wir das Modell nun für Vorhersagen zu neuen Daten verwenden. Auf diese Weise können wir mit unserem Modell Inferenzen auf unserem Validierungssatz durchführen.
predictions = coach.predict(valid_dataset)
print(predictions)
Zusammenfassung
In diesem Tutorial wurde die Feinabstimmung von BERT für die Stimmungsanalyse mit Hugging Face Transformers behandelt. Dazu gehörten das Einrichten der Umgebung, die Vorbereitung und Tokenisierung des Datensatzes, die Erstellung eines DataLoaders, das Laden und Trainieren des Modells sowie die Modellbewertung und Echtzeit-Modellvorhersage.
Die Feinabstimmung von BERT für die Stimmungsanalyse kann in vielen realen Situationen wertvoll sein, z. B. bei der Analyse von Kundenfeedback, der Verfolgung des Tons in sozialen Medien und vielem mehr. Durch die Verwendung verschiedener Datensätze und Modelle können Sie dies für Ihre eigenen Projekte zur Verarbeitung natürlicher Sprache erweitern.
Weitere Informationen zu diesen Themen finden Sie in den folgenden Ressourcen:
Es lohnt sich, diese Ressourcen zu untersuchen, um tiefer in diese Probleme einzutauchen und Ihre Fähigkeiten in der Verarbeitung natürlicher Sprache und Stimmungsanalyse zu verbessern.
Matthias Mayo (@mattmayo13) hat einen Grasp-Abschluss in Informatik und ein Diplom in Knowledge Mining. Als leitender Redakteur möchte Matthew komplexe Konzepte der Datenwissenschaft zugänglich machen. Seine beruflichen Interessen umfassen die Verarbeitung natürlicher Sprache, Algorithmen für maschinelles Lernen und die Erforschung neuer KI. Sein Ziel ist es, das Wissen in der Datenwissenschaftsgemeinschaft zu demokratisieren. Matthew programmiert, seit er sechs Jahre alt ist.