Leistungsstarke Sprachmodelle + Scikit-learn = Scikit-LLM. Führen Sie mithilfe dieser Bibliothek unterwegs Textanalyseaufgaben durch.
Scikit-LLM ist ein Python-Paket, das bei der Integration großer Sprachmodelle (LLMs) in das Scikit-Learn-Framework hilft. Es hilft bei der Erfüllung von Textanalyseaufgaben. Wenn Sie mit scikit-learn vertraut sind, wird Ihnen die Arbeit mit Scikit-LLM leichter fallen.
Es ist wichtig zu beachten, dass Scikit-LLM scikit-learn nicht ersetzt. scikit-learn ist eine universelle Bibliothek für maschinelles Lernen, Scikit-LLM wurde jedoch speziell für Textanalyseaufgaben entwickelt.
Erste Schritte mit Scikit-LLM
Zum Einstieg Scikit-LLM, müssen Sie die Bibliothek installieren und Ihren API-Schlüssel konfigurieren. Um die Bibliothek zu installieren, öffnen Sie Ihre IDE und Erstellen Sie eine neue virtuelle Umgebung. Dies trägt dazu bei, potenzielle Bibliotheksversionskonflikte zu vermeiden. Führen Sie dann den folgenden Befehl im Terminal aus.
pip install scikit-llm
Dieser Befehl installiert Scikit-LLM und seine erforderlichen Abhängigkeiten.
Um Ihren API-Schlüssel zu konfigurieren, müssen Sie einen von Ihrem LLM-Anbieter erwerben. Um den OpenAI-API-Schlüssel zu erhalten, führen Sie die folgenden Schritte aus:
Fahren Sie mit dem fort OpenAI-API-Seite. Klicken Sie dann auf Ihr Profil in der oberen rechten Ecke des Fensters. Wählen API-Schlüssel anzeigen. Dadurch gelangen Sie zum API-Schlüssel Seite.
Auf der API-Schlüssel Seite, klicken Sie auf Erstellen Sie einen neuen geheimen Schlüssel Taste.
Benennen Sie Ihren API-Schlüssel und klicken Sie auf Geheimen Schlüssel erstellen Klicken Sie auf die Schaltfläche, um den Schlüssel zu generieren. Nach der Generierung müssen Sie den Schlüssel kopieren und an einem sicheren Ort aufbewahren, da OpenAI den Schlüssel nicht erneut anzeigt. Wenn Sie es verlieren, müssen Sie ein neues erstellen.
Der vollständige Quellcode ist in a verfügbar GitHub-Repository.
Nachdem Sie nun Ihren API-Schlüssel haben, öffnen Sie Ihre IDE und importieren Sie ihn SKLLMConfig Klasse aus der Scikit-LLM-Bibliothek. Mit dieser Klasse können Sie Konfigurationsoptionen im Zusammenhang mit der Verwendung großer Sprachmodelle festlegen.
from skllm.config import SKLLMConfig
In diesem Kurs wird von Ihnen erwartet, dass Sie Ihren OpenAI-API-Schlüssel und Organisationsdetails festlegen.
# Set your OpenAI API key
SKLLMConfig.set_openai_key("Your API key")
# Set your OpenAI organization
SKLLMConfig.set_openai_org("Your organization ID")
Die Organisations-ID und der Name sind nicht identisch. Die Organisations-ID ist eine eindeutige Kennung Ihrer Organisation. Um Ihre Organisations-ID zu erhalten, fahren Sie mit fort OpenAI-Organisation Öffnen Sie die Einstellungsseite und kopieren Sie sie. Sie haben nun eine Verbindung zwischen Scikit-LLM und dem großen Sprachmodell hergestellt.
Für Scikit-LLM ist ein nutzungsbasierter Umlageplan erforderlich. Dies liegt daran, dass das kostenlose Testkonto von OpenAI ein Ratenlimit von drei Anfragen pro Minute hat, was für Scikit-LLM nicht ausreicht.
Der Versuch, das kostenlose Testkonto zu verwenden, führt bei der Textanalyse zu einem Fehler ähnlich dem folgenden.
Erfahren Sie mehr über Ratenlimits. Fahren Sie mit dem fort Seite mit OpenAI-Ratenbegrenzungen.
Der LLM-Anbieter ist nicht nur auf OpenAI beschränkt. Sie können auch andere LLM-Anbieter nutzen.
Importieren der erforderlichen Bibliotheken und Laden des Datensatzes
Importieren Sie Pandas, die Sie zum Laden des Datensatzes verwenden. Importieren Sie außerdem die erforderlichen Klassen aus Scikit-LLM und scikit-learn.
import pandas as pd
from skllm import ZeroShotGPTClassifier, MultiLabelZeroShotGPTClassifier
from skllm.preprocessing import GPTSummarizer
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.preprocessing import MultiLabelBinarizer
Laden Sie als Nächstes den Datensatz, für den Sie eine Textanalyse durchführen möchten. Dieser Code verwendet den IMDB-Filmdatensatz. Sie können es jedoch anpassen, um Ihren eigenen Datensatz zu verwenden.
# Load your dataset
data = pd.read_csv("imdb_movies_dataset.csv")
# Extract the first 100 rows
data = data.head(100)
Es ist nicht zwingend erforderlich, nur die ersten 100 Zeilen des Datensatzes zu verwenden. Sie können Ihren gesamten Datensatz verwenden.
Extrahieren Sie als Nächstes die Features und beschriften Sie die Spalten. Teilen Sie dann Ihren Datensatz in Trainings- und Testsätze auf.
# Extract relevant columns
X = data['Description']
# Assuming 'Genre' contains the labels for classification
y = data['Genre']
# Split the dataset into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Der Genre Die Spalte enthält die Beschriftungen, die Sie vorhersagen möchten.
Zero-Shot-Textklassifizierung mit Scikit-LLM
Die Zero-Shot-Textklassifizierung ist eine Funktion, die von großen Sprachmodellen angeboten wird. Es klassifiziert Text in vordefinierte Kategorien, ohne dass eine explizite Schulung der gekennzeichneten Daten erforderlich ist. Diese Funktion ist sehr nützlich, wenn Sie Aufgaben bearbeiten, bei denen Sie Text in Kategorien einteilen müssen, mit denen Sie während des Modelltrainings nicht gerechnet haben.
Um eine Zero-Shot-Textklassifizierung mit Scikit-LLM durchzuführen, verwenden Sie die ZeroShotGPTClassifier Klasse.
# Perform Zero-Shot Text Classification
zero_shot_clf = ZeroShotGPTClassifier(openai_model="gpt-3.5-turbo")
zero_shot_clf.fit(X_train, y_train)
zero_shot_predictions = zero_shot_clf.predict(X_test)
# Print Zero-Shot Text Classification Report
print("Zero-Shot Text Classification Report:")
print(classification_report(y_test, zero_shot_predictions))
Die Ausgabe ist wie folgt:
Der Klassifizierungsbericht stellt Metriken für jede Bezeichnung bereit, die das Modell vorherzusagen versucht.
Multi-Label-Zero-Shot-Textklassifizierung mit Scikit-LLM
In manchen Szenarien kann ein einzelner Text gleichzeitig zu mehreren Kategorien gehören. Herkömmliche Klassifizierungsmodelle haben damit Probleme. Scikit-LLM hingegen ermöglicht diese Klassifizierung. Die Zero-Shot-Textklassifizierung mit mehreren Labels ist entscheidend für die Zuweisung mehrerer beschreibender Labels zu einem einzelnen Textbeispiel.
Verwenden MultiLabelZeroShotGPTClassifier um vorherzusagen, welche Beschriftungen für jedes Textbeispiel geeignet sind.
# Perform Multi-Label Zero-Shot Text Classification
# Make sure to provide a list of candidate labels
candidate_labels = ["Action", "Comedy", "Drama", "Horror", "Sci-Fi"]
multi_label_zero_shot_clf = MultiLabelZeroShotGPTClassifier(max_labels=2)
multi_label_zero_shot_clf.fit(X_train, candidate_labels)
multi_label_zero_shot_predictions = multi_label_zero_shot_clf.predict(X_test)# Convert the labels to binary array format using MultiLabelBinarizer
mlb = MultiLabelBinarizer()
y_test_binary = mlb.fit_transform(y_test)
multi_label_zero_shot_predictions_binary = mlb.transform(multi_label_zero_shot_predictions)
# Print Multi-Label Zero-Shot Text Classification Report
print("Multi-Label Zero-Shot Text Classification Report:")
print(classification_report(y_test_binary, multi_label_zero_shot_predictions_binary))
Im obigen Code definieren Sie die Kandidatenbezeichnungen, zu denen Ihr Text gehören könnte.
Die Ausgabe sieht wie folgt aus:
Dieser Bericht hilft Ihnen zu verstehen, wie gut Ihr Modell für jedes Label in der Multi-Label-Klassifizierung abschneidet.
Textvektorisierung mit Scikit-LLM
Bei der Textvektorisierung werden Textdaten in ein numerisches Format umgewandelt, das Modelle des maschinellen Lernens verstehen können. Scikit-LLM bietet hierfür den GPTVectorizer an. Es ermöglicht Ihnen, Text mithilfe von GPT-Modellen in festdimensionale Vektoren umzuwandeln.
Dies können Sie mit dem Begriff Häufigkeit-Inverse Dokumenthäufigkeit erreichen.
# Perform Text Vectorization using TF-IDF
tfidf_vectorizer = TfidfVectorizer(max_features=1000)
X_train_tfidf = tfidf_vectorizer.fit_transform(X_train)
X_test_tfidf = tfidf_vectorizer.transform(X_test)
# Print the TF-IDF vectorized features for the first few samples
print("TF-IDF Vectorized Features (First 5 samples):")
print(X_train_tfidf[:5]) # Change to X_test_tfidf if you want to print the test set
Hier ist die Ausgabe:
Die Ausgabe stellt die TF-IDF-vektorisierten Merkmale für die ersten fünf Stichproben im Datensatz dar.
Textzusammenfassung mit Scikit-LLM
Die Textzusammenfassung hilft dabei, einen Text zu verdichten und gleichzeitig seine wichtigsten Informationen zu bewahren. Scikit-LLM bietet den GPTSummarizer an, der verwendet die GPT-Modelle um prägnante Textzusammenfassungen zu erstellen.
# Perform Text Summarization
summarizer = GPTSummarizer(openai_model="gpt-3.5-turbo", max_words=15)
summaries = summarizer.fit_transform(X_test)
print(summaries)
Die Ausgabe ist wie folgt:
Das Obige ist eine Zusammenfassung der Testdaten.
Erstellen Sie Anwendungen auf Basis von LLMs
Scikit-LLM eröffnet eine Welt voller Möglichkeiten für die Textanalyse mit großen Sprachmodellen. Es ist von entscheidender Bedeutung, die Technologie hinter großen Sprachmodellen zu verstehen. Es wird Ihnen helfen, ihre Stärken und Schwächen zu verstehen, was Ihnen bei der Entwicklung effizienter Anwendungen auf der Grundlage dieser Spitzentechnologie helfen kann.