Artificial Intelligence (AI)

Utilizing the OpenAI API for Detection of SMS Spam Messages | by Amanda Iglesias Moreno | Mar, 2024

Written by smirow

Erschließen einer effektiven Textklassifizierung mit vorab trainierten Modellen: eine Fallstudie mit dem GPT-3.5-Turbo von OpenAI

Amanda Iglesias Moreno
Auf dem Weg zur Datenwissenschaft
Bild von https://unsplash.com/es/@tma

Traditionell würde jedes Textklassifizierungsprojekt zur Verarbeitung natürlicher Sprache damit beginnen, die Instanzen zu sammeln, ihre jeweiligen Bezeichnungen zu definieren und ein Klassifizierungsmodell, beispielsweise ein logistisches Regressionsmodell, zu trainieren, um die Instanzen zu klassifizieren. Derzeit ist die In OpenAI verfügbare Modelle können direkt für Klassifizierungsaufgaben verwendet werden Dies würde normalerweise das Sammeln einer beträchtlichen Menge an gekennzeichneten Daten erfordern, um das Modell zu trainieren. Diese vorab trainierten Modelle können für verschiedene Textverarbeitungsaufgaben verwendet werden, einschließlich Klassifizierung, Zusammenfassung, Rechtschreibprüfung und Schlüsselwortidentifizierung.
Wir benötigen keine gekennzeichneten Daten oder die Notwendigkeit, ein Modell zu trainieren. Ganz einfach, oder?

ChatGPT bietet eine grafische Oberfläche für von OpenAI implementierte Modelle. Was aber, wenn wir diese Modelle direkt in Python ausführen möchten? Nun, die verfügbare Alternative ist die OpenAI-API, die es uns ermöglicht, über eine Programmierumgebung auf ihre Modelle zuzugreifen. In diesem Artikel, Wir beschreiben anhand eines kurzen Beispiels, wie Sie auf die API zugreifen, um zu erkennen, ob es sich bei einer SMS um Spam handelt oder nicht. Dazu verwenden wir eines der Open AI-Modelle, insbesondere das GPT-3.5-Turbo-Modell.

Der erste Schritt zum Zugriff auf Bei der OpenAI-API wird ein Konto bei OpenAI erstellt, um den API-Schlüssel zu erhalten notwendig, um auf die Modelle zugreifen zu können. Bei der Kontoerstellung steht uns ein Guthaben von 5 $ zur Verfügung, das uns, wie wir später sehen werden, die Durchführung zahlreicher Tests ermöglicht.

In diesem Beispiel, Wir werden die kostenlose Version von OpenAI verwenden, die Einschränkungen bei Abfragen pro Minute und pro Tag aufweist. Die Einhaltung dieser Grenzwerte ist entscheidend, um Ratengrenzfehler zu vermeiden. Die Werte dieser beiden Parameter sind auf 3 Anfragen pro Minute und 200 pro Tag festgelegt. Obwohl dies insbesondere bei großen Projekten natürlich mit Einschränkungen verbunden ist, reicht es für die Zwecke des Beispiels in diesem Artikel aus.

Sobald wir das Konto erstellt haben, Über die OpenAI-Bibliothek können wir auf die OpenAI-Modelle zugreifen, die für die kostenlose Version von Python verfügbar sind. Zuerst erstellen wir eine Funktion namens chat_with_gpt um auf das GPT-3.5-Turbo-Modell zuzugreifen. Die Eingabe für diese Funktion ist die promptdie wir später entwerfen werden.

Der nächste Schritt besteht darin, die Eingabeaufforderung zu erstellen, die wir für das GPT-3.5-Turbo-Modell bereitstellen. In diesem speziellen Fall interessieren uns zwei Dinge. Erstens ein Wert zwischen 0 und 1, der die Wahrscheinlichkeit angibt, ob es sich bei der SMS um Spam handelt oder nicht, und zweitens eine Erläuterung der Argumentation des Modells hinter dieser Entscheidung. Darüber hinaus möchten wir das Ergebnis im JSON-Format haben, damit wir es später in einen Datenrahmen konvertieren können. Nachfolgend finden Sie das Modell, das wir für diese Vorhersagen verwenden werden.

Wir benötigen nun ein paar Nachrichten, um zu testen, wie gut das OpenAI-Modell vorhersagt, ob es sich bei einer Nachricht um Spam handelt oder nicht. Zu diesem Zweck verwenden wir den SMS Spam Collection-Datensatz, der im UCI Machine Learning-Repository verfügbar ist.

Wir lesen die Daten und konvertieren sie in DataFrame. Wie beobachtet, besteht der Datensatz aus zwei Spalten: eine mit den Nachrichten und die zweite mit den entsprechenden Beschriftungen. ham zeigt an, dass es sich bei der Nachricht nicht um Spam handelt spam weist darauf hin, dass dies der Fall ist.

Spam-Sammlungsdatensatz (vom Autor erstelltes Bild)

JETZT, Wir werden das Modell verwenden, um zu erkennen, ob es sich bei Nachrichten um Spam handelt oder nicht, und um zu bewerten, wie gut das vorab trainierte OpenAI-Modell dieses Problem vorhersagen kann. Wie am Anfang des Artikels erwähnt, gibt es erhebliche Einschränkungen hinsichtlich der Anzahl der Anfragen pro Minute und Tag, die wir mit der kostenlosen Version stellen können. Der Datensatz enthält 5.574 Instanzen, aber zum Testen des Modells werden wir nur die ersten 50 Instanzen verwenden. Wenn Sie eine kostenpflichtige Version von OpenAI haben, können Sie die Anzahl der getesteten Nachrichten erhöhen, da die Zeiten viel kürzer sind.

Instanzbezeichnungen (Bild erstellt vom Autor)

Bevor Sie mit dem Modell Vorhersagen treffen, Wir haben überprüft, dass unser Datensatz mit 50 Instanzen beide Nachrichten enthält bei denen es sich um Spam handelt, und bei Nachrichten, bei denen es sich nicht um Spam handelt. Insgesamt gibt es 40 Nicht-Spam-Nachrichten und 10 Spam-Nachrichten.

Abschließend fahren wir mit der Vorhersage fort. Wie nachfolgend dargestellt, Wir hatten jederzeit den Überblick über die verfügbaren Credits und Token. Darüber hinaus haben wir im Code eine Schlaffunktion für 60 Sekunden implementiert, um sicherzustellen, dass Einschränkungen bei der Anzahl der Anfragen eingehalten werden.

Die vom Modell mit der Vorhersage bereitgestellte Nachricht wurde in einer Variablen namens gespeichert prediction. Diese Nachricht ist eine JSON-Datei mit der folgenden Struktur: { “spam”: “0.1”, “reasoning”: “The message seems to be a typical promotional message about a buffet offer and does not contain any typical spam keywords or characteristics. The probability of this message being spam is low.” }.

Testausgabe (Bild vom Autor erstellt)

Vorhersagen geben einen Wert zwischen 0 und 1 an. Ein Wert von 0 gibt an, dass es sich bei der Nachricht nicht um Spam handelt, während ein Wert von 1 angibt, dass es sich um Spam handelt. Um die Labels zuzuweisen, verwenden wir einen Schwellenwert von 0,5, was bedeutet, dass eine Bewertung über 0,5 durch das Modell die Nachricht als Spam kategorisiert.

Vorhergesagte Beschriftungen (Bild erstellt vom Autor)

Es bleibt nur noch, die tatsächlichen Labels mit den vorhergesagten Labels zu vergleichen und zu bewerten, wie gut das GPT-3.5-Turbo-Modell die Vorhersagen erreicht hat.

Verwirrungsmatrix (Bild erstellt vom Autor)

Oben ist die Modellverwirrungsmatrix.

  • Bei Nachrichten, bei denen es sich nicht um Spam (Ham) handelt, hat das Modell 37 davon korrekt als Nicht-Spam vorhergesagt (echte Negative), 3 davon jedoch fälschlicherweise als Spam klassifiziert (falsche Positive).
  • Für Spam-Nachrichten hat das Modell 10 korrekt vorhergesagt (richtige positive Ergebnisse), wobei in diesem Fall keine falsch negativen Ergebnisse beobachtet wurden.

Das Modell zeigt eine gute Empfindlichkeit bei der Erkennung von Spam-Nachrichten, wobei einige Fehlalarme darauf hinweisen, dass die Genauigkeit verbessert werden kann. Wie gezeigt, erreichte das Modell eine Genauigkeit von 94 % und klassifizierte 47 von 50 Instanzen korrekt.

Da wir das Modell gebeten haben, uns Informationen darüber zu liefern, warum es eine Nachricht als Spam klassifiziert hat oder nicht, können wir untersuchen, warum es drei Nachrichten falsch klassifiziert hat, die nicht in die Spam-Kategorie fallen. Hier sind die Erklärungen des Modells:

  • Die Nachricht enthält ungewöhnliche Sprach- und Grammatikfehler, die häufig mit Spam-Nachrichten in Verbindung gebracht werden. Es werden auch sensible Themen wie AIDS erwähnt, eine gängige Taktik, die in Spam-Nachrichten eingesetzt wird, um Emotionen zu wecken und eine Reaktion hervorzurufen. Es besteht daher eine hohe Wahrscheinlichkeit, dass es sich bei dieser Nachricht um Spam handelt.
  • Die Nachricht enthält anzügliche und unangemessene Inhalte, ein häufiges Merkmal von Spam-Nachrichten. Darüber hinaus kann die Verwendung unangemessener Grammatik und Sprache darauf hinweisen, dass es sich bei dieser Nachricht um Spam handelt. Daher ist die Wahrscheinlichkeit hoch, dass es sich bei dieser Nachricht um Spam handelt.
  • Die Nachricht enthält anzügliche Inhalte im Zusammenhang mit persönlichen Eigenschaften, ein häufiges Merkmal von Spam-Nachrichten. Darüber hinaus erhöht die Verwendung expliziter Sprache die Wahrscheinlichkeit, dass diese Nachricht als Spam betrachtet wird.

Nachrichten mit unangemessenem Inhalt oder vielen Rechtschreibfehlern werden in der Regel als Spam eingestuft.

Traditionell begannen Projekte, die eine Textklassifizierung erforderten, mit gekennzeichneten Datenbanken und einem Modell, das trainiert werden musste. Das Aufkommen vortrainierter linguistischer Modelle (LLM) bietet nun die Möglichkeit, eine Vielzahl von Texten zu klassifizieren, ohne vorher ein Modell trainieren zu müssen, da diese Modelle bereits für zahlreiche Anwendungsfälle trainiert wurden. In diesem Artikel haben wir erklärt, wie Sie mit der OpenAI-API auf das GPT-3.5-Turbo-Modell zugreifen und feststellen können, ob es sich bei einer Reihe von Nachrichten um Spam handelt oder nicht. Das Modell konnte 94 % der Fälle korrekt klassifizieren, was auf ein hohes Maß an Genauigkeit hinweist. In Zukunft könnte es interessant sein, andere OpenAI-Modelle zu evaluieren und verschiedene Eingabeaufforderungen zu untersuchen, die zu einer besseren Leistung führen könnten. Die Durchführung des Projekts kostete übrigens nur 0,007 $.

About the author

smirow

Leave a Comment