Die Analyse der Kundenstimmung und Schlüsselthemen anhand von Textdaten battle schon immer eine zeitintensive Aufgabe und erforderte Datenerfassung, manuelle Kennzeichnung und Feinabstimmung spezieller Modelle. Aber was wäre, wenn Sie den Aufwand des Modelltrainings überspringen und trotzdem genaue Ergebnisse erzielen könnten? Geben Sie Zero-Shot-Textklassifizierung ein, einen bahnbrechenden Ansatz, der von unterstützt wird Große Sprachmodelle (LLMs). In diesem Artikel untersuchen wir, wie die Zero-Shot-Klassifizierung die Stimmungsanalyse mithilfe der SKLLM-Bibliothek (einer Mischung aus Scikit-Be taught und LLMs) vereinfacht. In diesem Tutorial erfahren Sie, wie Sie das verwenden SKLLM-Bibliothek (scikit-learn + LLM) zur Klassifizierung des Datensatzes „Girls’s E-Commerce Clothes Opinions“. Kaggle.

Lernziele

  • Verstehen Sie den traditionellen Prozess der Stimmungsanalyse und seine Herausforderungen.
  • Lernen Sie das Konzept und die Vorteile der Zero-Shot-Textklassifizierung mit LLMs kennen.
  • Entdecken Sie die SKLLM-Bibliothek und ihre Integration mit scikit-lernen.
  • Klassifizieren Sie Stimmungen im Datensatz „Girls’s E-Commerce Clothes Opinions“ ohne individuelle Schulung.
  • Sammeln Sie praktische Erfahrungen mit der Zero-Shot-Klassifizierung für praktische Anwendungsfälle.

Dieser Artikel wurde im Rahmen der veröffentlicht Knowledge Science-Blogathon.

Was ist Zero-Shot-Textklassifizierung?

On-line-Händler erhalten oft große Mengen an Textbewertungen von Kunden, was eine schnelle Analyse der Stimmungen oder Schlüsselthemen erschwert. Traditionell würden Unternehmen:

  • Sammeln und bereinigen Sie Bewertungsdaten.
  • Beschriften Sie Tausende von Proben manuell (z. B. „positiv“, „negativ“, „impartial“).
  • Optimieren Sie ein spezielles Klassifizierungsmodell für diese gekennzeichneten Daten.

Die Feinabstimmung ist zwar effektiv, erfordert jedoch viel Zeit, Fachwissen und Rechenressourcen. Geben Sie Zero-Shot-Textklassifizierung ein: Verwenden Sie Giant Language Fashions (LLMs) direkt, um Textual content mit minimalem Aufwand zu klassifizieren. Sie können einfach eine Reihe beschreibender Bezeichnungen bereitstellen (z. B. „positiv“, „negativ“, „impartial“) und das Modell auf die richtige Klasse schließen lassen – keine benutzerdefinierte Schulung erforderlich!

Warum ist Zero-Shot so effizient?

Im Folgenden besprechen wir die Punkte, um zu verstehen, warum Zero-Shot so effizient ist:

  • Keine Feinabstimmung erforderlich: Feinabstimmung von LLMs wie GPT-4o kann eine kostspielige Angelegenheit sein. Sie müssen nicht Stunden (oder sogar Tage) damit verbringen, einen Stimmungsklassifikator für Ihren Datensatz zu trainieren. Stattdessen nutzen Sie vorab trainierte LLMs wie GPT-4o und erhalten so sofort einen hochwertigen Klassifikator.
  • Einfache Anpassung an neue Etiketten: Wenn sich Ihr Etikettensatz ändert (z. B. von „positiv, negativ, impartial“ zu spezifischeren Gefühlen wie „glücklich, frustriert, neugierig, verärgert“), aktualisieren Sie einfach Ihre Etikettenliste. Es ist nicht erforderlich, ein Modell neu zu trainieren.
  • Weniger Datenanforderungen: Beim typischen überwachten Lernen benötigen Sie beschriftete Daten für jede Klasse. Für die Zero-Shot-Klassifizierung müssen Sie lediglich Ihre Klassen (Beschriftungen) beschreiben natürliche Sprache. Dies ist besonders hilfreich, wenn Sie über begrenzte oder unbeschriftete Daten verfügen.
  • Schnelle Bereitstellung: Durch das Überspringen von Datenanmerkungen und Modelltrainingsschritten können Sie Ihre Klassifizierungslösung viel schneller bereitstellen.

Datensatzübersicht

Wir verwenden den Datensatz Girls’s E-Commerce Clothes Opinions von Kaggle.

Klicken Sie hier, um auf den Datensatz zuzugreifen.

Wichtige Punkte zum Datensatz:

  • Es enthält Tausende von Kundenrezensionen zu Damenbekleidungsartikeln.
  • Der Haupttext befindet sich in der Spalte „Rezensionstext“.
  • Weitere Metadaten wie „Titel“, „Bewertung“, „Empfohlener IND“ und mehr sind verfügbar, aber für die Zero-Shot-Klassifizierung nicht immer erforderlich.

Schritt-für-Schritt-Anleitung

Im Folgenden erfahren Sie, wie Sie die Sentimentanalyse und Themenerkennung mit Zero-Shot-Textklassifizierung optimieren können Große Sprachmodelle (LLMs). In diesem Tutorial führen wir Sie durch die Nutzung der SKLLM-Bibliothek, um reale Daten mühelos zu klassifizieren – keine individuelle Schulung erforderlich!

Schritt 1: Set up und Einrichtung

Stellen Sie sicher, dass Sie Python 3.7+ haben und installieren Sie SKLLM:

pip set up scikit-llm

Stellen Sie außerdem sicher, dass Sie über einen gültigen API-Schlüssel für einen LLM-Anbieter verfügen (z. B. OpenAIs API). Stellen Sie es in Ihrer Umgebung ein:

from skllm.config import SKLLMConfig

# Change along with your precise OpenAI API key
SKLLMConfig.set_openai_key("your_openai_api_key")

(Sie können es auch in einer .env-Datei speichern oder in Ihrem Code verarbeiten, Umgebungsvariablen sind jedoch oft sauberer.)

Schritt 2: Bibliotheken importieren und den Datensatz laden

import pandas as pd
from skllm.fashions.gpt.classification.zero_shot import ZeroShotGPTClassifier

# Load dataset
df = pd.read_csv("Womens Clothes E-Commerce Opinions.csv")

# Examine the primary few rows
print(df.head())

Wir konzentrieren uns auf „Überprüfen Sie den Textual content“ Spalte. In einigen Zeilen fehlen möglicherweise Werte für Bewertungen. Lassen Sie uns daher alle NaNs löschen:

# Filter out rows with out overview textual content
df = df.dropna(subset=("Overview Textual content")).reset_index(drop=True)

# Extract the overview texts into X
X = df("Overview Textual content").tolist()

Schritt 3: Definieren Sie Ihre Etiketten

Wir führen eine Stimmungsklassifizierung durch: („positiv“, „negativ“, „impartial“).

Warum diese drei? Es handelt sich um gängige Sentiment-Tags. Es steht Ihnen jedoch frei, sie zu ändern oder zu erweitern: zum Beispiel („positiv“, „negativ“, „impartial“, „gemischt“).

Schritt 4: Zero-Shot-Klassifizierung

Instanziieren Sie die ZeroShotGPTClassifier. Wir wählen gpt-4o als Modell, Sie können jedoch auch ein anderes Modell auswählen, wenn Sie möchten.

# Create a zero-shot classifier
clf = ZeroShotGPTClassifier(mannequin="gpt-4o")

# Match the classifier - right here we go `None` for X as a result of we do not want coaching knowledge
clf.match(None, ("constructive", "damaging", "impartial"))

Warum match(Keine, Etiketten)? In einem reinen Zero-Shot-Szenario findet kein tatsächliches Coaching statt. Der Aufruf von match() teilt dem Klassifikator effektiv mit, welche Beschriftungen möglich sind. Das Mannequin kann dann für jede Bewertung eine davon auswählen.

Schritt 5: Klassifizieren Sie die Bewertungen

# Predict labels for the complete dataset
predictions = clf.predict(X)

# Let’s see the primary few outcomes
for review_text, sentiment in zip(X(:5), predictions(:5)):
    print(f"Overview: {review_text}")
    print(f"Predicted Sentiment: {sentiment}")
    print("-" * 50)

Diese Schleife druckt jede Bewertung zusammen mit der vorhergesagten Stimmung des Zero-Shot-Klassifikators aus.

Ergebnisdiskussion

Bei einem herkömmlichen ML-Ansatz benötigen Sie:

  • Beschriftung: Ein großer Teil dieser Bewertungen wird als positiv, negativ oder impartial gekennzeichnet.
  • Modelltraining: Feinabstimmung oder Coaching eines Klassifikators von Grund auf (z. B. eine SVM, ein BERT-basiertes Modell).
  • Modellvalidierung: Manuelle Überprüfung der Leistung eines Validierungssatzes.
  • Kontinuierliche Updates: Wenn neue Gefühle oder Kategorien auftauchen, benötigen Sie mehr gekennzeichnete Daten und zusätzliche Schulung.

Zero-Shot eliminiert den größten Teil dieses Overheads:

  • Sofortiger Begin: Sie stellen lediglich eine Etikettenliste und eine intestine ausgearbeitete Eingabeaufforderung hinter den Kulissen bereit.
  • Keine beschrifteten Daten erforderlich: Der LLM hat genug Semantik über Sprache gelernt, um aus beschreibenden Bezeichnungen auf die Bedeutung schließen zu können.
  • Leicht zu verfeinern: Brauchen Sie neue Kategorien wie „leicht positiv“ oder „ambivalent“? Fügen Sie sie einfach zur Liste der Kandidatenlabels hinzu.

Zu beachtende mögliche Einschränkungen

  • Genauigkeitsvariation: Die Qualität der Zero-Shot-Klassifizierung kann variieren. Für eine einfache Stimmungsanalyse funktioniert es oft überraschend intestine. Bei hochspezialisierten oder technischen Domänen kann es sein, dass das Modell bestimmte Texte oder Domänenjargon falsch interpretiert.
  • Kosten: Die Verwendung eines großen Modells wie GPT-4o verursacht API-Kosten, wenn Sie einen externen Dienst aufrufen.
  • Datenschutz: Sie müssen sicherstellen, dass das Senden von Daten an eine API zulässig ist (insbesondere, wenn der Textual content vertraulich ist).

Few-Shot-Textklassifizierung

Bei der Textklassifizierung mit wenigen Schüssen wird ein Textual content anhand einiger Beispiele jeder Klasse in eine der vordefinierten Klassen klassifiziert. Anhand einiger Beispiele für die Klassen positiv, negativ und impartial sollte das Modell beispielsweise in der Lage sein, neuen Textual content in eine dieser Kategorien einzuordnen.

Notiz: Die von Scikit-LLM bereitgestellten Schätzer wählen nicht automatisch eine Teilmenge der Trainingsdaten aus; Sie verwenden den gesamten Trainingssatz, um die Beispiele mit wenigen Schüssen zu erstellen. Wenn Ihr Trainingssatz groß ist, sollten Sie erwägen, ihn in Trainings- und Validierungssätze aufzuteilen und dabei den Trainingssatz klein zu halten (idealerweise nicht mehr als 10 Beispiele professional Klasse). Achten Sie außerdem darauf, die Reihenfolge dieser Stichproben zu ändern, um eine Aktualitätsverzerrung in der Aufmerksamkeit des LLM zu vermeiden.

from skllm.fashions.gpt.classification.few_shot import (
    FewShotGPTClassifier,
    MultiLabelFewShotGPTClassifier,
)
from skllm.datasets import (
    get_classification_dataset,
    get_multilabel_classification_dataset,
)

# Single-label classification
X, y = get_classification_dataset()
clf = FewShotGPTClassifier(mannequin="gpt-4o")
clf.match(X, y)
labels = clf.predict(X)

# Multi-label classification
X, y = get_multilabel_classification_dataset()
clf = MultiLabelFewShotGPTClassifier(max_labels=2, mannequin="gpt-4o")
clf.match(X, y)
labels = clf.predict(X)

Klassifizierung von Gedankenkettentexten

Die Chain-of-Thought-Textklassifizierung ähnelt der Zero-Shot-Klassifizierung insofern, als dafür keine zuvor gekennzeichneten Daten erforderlich sind. Der Hauptunterschied besteht darin, dass das Modell zusammen mit der Bezeichnung Zwischenschritte für die Argumentation generiert. Diese zusätzliche „Gedankenkette“ kann die Leistung verbessern, erhöht jedoch die Token-Nutzung (und damit die potenziellen Kosten).

from skllm.fashions.gpt.classification.zero_shot import CoTGPTClassifier
from skllm.datasets import get_classification_dataset

# Demo sentiment evaluation dataset
# Labels: constructive, damaging, impartial
X, y = get_classification_dataset()

clf = CoTGPTClassifier(mannequin="gpt-4o")
clf.match(X, y)
predictions = clf.predict(X)

# Every prediction has (label, reasoning)
labels, reasoning = predictions(:, 0), predictions(:, 1)

Durch das Testen eines Wenig-Schuss-Ansatzes oder eines Gedankenketten-Ansatzes können Sie möglicherweise eine Verbesserung gegenüber den grundlegenden Null-Schuss-Klassifizierungsergebnissen feststellen

Abschluss

Die Bibliothek von Scikit-LLM ist eine schnelle, versatile und einfache Different zum Aufbau einer benutzerdefinierten Sentiment-Analyse-Pipeline. Ohne die Notwendigkeit, Daten zu kennzeichnen oder ein Modell zu verfeinern, können Sie Kundenfeedback sofort in beschreibende Kategorien einteilen.

Im Fall des Datensatzes „Girls’s E-Commerce Clothes Opinions“ können Sie schnell Erkenntnisse gewinnen – beispielsweise zur Kundenstimmung –, ohne den üblichen Aufwand für die Vorbereitung, Kennzeichnung und Modellschulung des Datensatzes. Dieser Vorteil ist besonders wirkungsvoll, wenn Sie Ihre Klassifizierungsbezeichnungen im Laufe der Zeit iterieren oder erweitern müssen.

Mit der Weiterentwicklung des KI-Ökosystems werden Zero-Shot- und Fow-Shot-Techniken weiterhin an Bedeutung gewinnen. Sie ermöglichen ein schnelles Prototyping und beschleunigen Geschäftsabläufe, indem sie das umfangreiche Wissen nutzen, das bereits in großen Sprachmodellen eingebettet ist.

Wichtige Erkenntnisse

  • Die Zero-Shot-Klassifizierung vereinfacht die Stimmungsanalyse, ohne dass eine manuelle Kennzeichnung oder Modellschulung erforderlich ist.
  • Die SKLLM-Bibliothek integriert scikit-learn mit LLMs für eine effiziente Textklassifizierung.
  • SCIKIT-LLM ermöglicht eine effiziente Zero-Shot- und Few-Shot-Textklassifizierung, sodass keine manuelle Beschriftung und kein Modelltraining erforderlich sind.
  • Giant Language Fashions (LLMs) wie GPT-4 ermöglichen sofortige, qualitativ hochwertige Klassifizierungsergebnisse.
  • Mit SCIKIT-LLM können Sie mithilfe vorab trainierter großer Sprachmodelle schnell Textklassifizierungslösungen bereitstellen und so Zeit und Ressourcen sparen.
  • Der Datensatz „Girls’s E-Commerce Clothes Opinions“ bietet ein praktisches Beispiel für die Zero-Shot-Klassifizierung in Aktion.
  • Die Zero-Shot-Textklassifizierung ist schnell, anpassungsfähig und erfordert nur minimale Daten, was sie best für eine schnelle Bereitstellung macht.

Häufig gestellte Fragen

Q1. Wie entscheide ich zwischen den Klassifizierungsmethoden Zero-Shot, Few-Shot und Chain-of-Denke?

A. Zero-Shot eignet sich hervorragend für schnelle Proof-of-Idea oder wenn gekennzeichnete Daten knapp sind. Few-Shot verbessert die Genauigkeit durch die Verwendung einer kleinen Menge von Beispielen professional Klasse, was einen minimalen beschrifteten Datensatz erfordert. Chain-of-Considering verbessert die Leistung weiter, indem es Zwischenschlussfolgerungen nutzt, erhöht jedoch die Token-Nutzung und die Kosten.

Q2. Wie viele Beispiele sollte ich für ein Wenig-Shot-Setup angeben?

A. Es wird im Allgemeinen empfohlen, bis zu 10 Beispiele professional Klasse einzubeziehen. Darüber hinaus kann die Verarbeitung der Eingabeaufforderung zu lang oder zu teuer werden und die Leistungssteigerungen können stagnieren. Denken Sie auch daran, die Beispiele zu mischen (permutieren), um eine Aktualitätsverzerrung durch das Modell zu vermeiden.

Q3. Verbessert das Hinzufügen einer Gedankenkette automatisch die Genauigkeit?

A. Nicht immer. Während die Gedankenkette dem Modell einen strukturierten Argumentationspfad bieten kann, hängt ihre Wirksamkeit von der Komplexität der Aufgabe und der Klarheit Ihrer Eingabeaufforderungen ab. Dies kann in vielen Fällen zu besseren Erklärungen und Entscheidungen führen, verbraucht aber auch mehr Token und erhöht Ihre API-Kosten.

This fall. Ist es teuer, diese Klassifizierungen im großen Maßstab durchzuführen?

A. Die Kosten hängen von Ihrer Token-Nutzung ab, die je nach Modellauswahl, Eingabeaufforderungslänge und Datensatzgröße variiert. Zero-Shot- und Fence-Shot-Eingabeaufforderungen können relativ kurz sein, insbesondere wenn Sie die Beispiele professional Klasse auf ein Minimal beschränken. Chain-of-thought-Methoden erhöhen die Länge der Eingabeaufforderungen, da das Modell zusätzlich zu den Beschriftungen auch Erklärungen generieren muss.

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von Analytics Vidhya und werden nach Ermessen des Autors verwendet.

Hallo! Ich bin Adarsh, ein Enterprise Analytics-Absolvent der ISB, der sich derzeit intensiv mit der Forschung und der Erkundung neuer Grenzen beschäftigt. Ich habe eine große Leidenschaft für Datenwissenschaft, KI und all die innovativen Möglichkeiten, wie sie Branchen verändern können. Ob es darum geht, Modelle zu erstellen, an Datenpipelines zu arbeiten oder sich mit maschinellem Lernen zu befassen, ich liebe es, mit der neuesten Technologie zu experimentieren. KI ist nicht nur mein Interesse, sie ist meiner Meinung nach die Richtung der Zukunft, und ich freue mich immer, Teil dieser Reise zu sein!

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert