Optimierung der Produkterkennung: Fine-Tuning von Sentence Transformers zur Klassifizierung von Amazon Produkten
Optimierung der Produktkategorisierung bei Amazon mit Satztransformatoren
In der heutigen digitalen Welt ist die Fähigkeit, Inhalte effektiv zu kategorisieren und Informationen effizient abzurufen, von entscheidender Bedeutung. Satztransformatoren haben sich als mächtige Deep-Learning-Modelle etabliert, die Sätze in hochwertige, festgelegte Einbettungen umwandeln können. Diese Einbettungen erfassen die semantische Bedeutung eines Satzes und finden Anwendung in zahlreichen Aufgaben der natürlichen Sprachverarbeitung (NLP), wie beispielsweise Textklassifikation, Clustering und semantischer Suche. In diesem Beitrag zeigen wir, wie man einen Satztransformator speziell zur Klassifizierung von Amazon-Produkten in deren Kategorie (z. B. Spielzeug oder Sportartikel) feinabstimmen kann.
Ein Überblick über die Lösung
In diesem Beitrag demonstrieren wir die Feinabstimmung eines Satztransformators anhand von Amazon-Produktdaten und zeigen, wie das Ergebnis die Klassifikationsgenauigkeit der Produktkategorien mithilfe eines XGBoost-Entscheidungsbaums verbessert. Wir verwenden ein öffentliches Amazon-Produktdataset namens „Amazon Product Dataset 2020”, das aus einer Kaggle-Wettbewerb gewonnen wurde. Die wichtigsten Attribute dieses Datensatzes umfassen Produktname, Marke, Kategorie, Preis und Produktspezifikationen.
Voraussetzungen
Bevor wir beginnen, stellen Sie sicher, dass die erforderlichen Pakete installiert sind. Nutzen Sie dazu entweder ein Amazon SageMaker-Notebook oder ein lokal installiertes Jupyter Notebook:
!pip install sentencepiece --quiet
!pip install sentence_transformers --quiet
!pip install xgboost --quiet
!pip install scikit-learn --quiet
Datenvorverarbeitung
Der erste Schritt zur Feinabstimmung eines Satztransformators besteht darin, die Amazon-Produktdaten so vorzubereiten, dass der Satztransformator diese effektiv konsumieren kann. Dies beinhaltet die Normalisierung der Textdaten, das Extrahieren der Hauptkategorie aus dem Datenfeld sowie die Auswahl relevanter Felder, die zur erfolgreichen Klassifikation beitragen.
import pandas as pd
from sklearn.preprocessing import LabelEncoder
data = pd.read_csv('marketing_sample_for_amazon_com-ecommerce__20200101_20200131__10k_data.csv')
data.columns = data.columns.str.lower().str.replace(' ', '_')
data['main_category'] = data['category'].str.split("|").str[0]
data["all_text"] = data.apply(lambda r: " ".join([str(r["product_name"]) if pd.notnull(r["product_name"]) else "",
str(r["about_product"]) if pd.notnull(r["about_product"]) else "",
str(r["product_specification"]) if pd.notnull(r["product_specification"]) else "",
str(r["technical_details"]) if pd.notnull(r["technical_details"]) else ""]), axis=1)
label_encoder = LabelEncoder()
labels_transform = label_encoder.fit_transform(data['main_category'])
data['label'] = labels_transform
data[['all_text', 'label']]
Im nachstehenden Screenshot sehen Sie ein Beispiel, wie unser Datensatz nach der Vorverarbeitung aussieht.
Feinabstimmung des Satztransformators
Paraphrase-MiniLM-L6-v2
Der erste Satztransformator, den wir feinabstimmen, ist „paraphrase-MiniLM-L6-v2“. Wir setzen die beliebte BERT-Architektur ein, um Produktbeschreibungstexte in 384-dimensionale dichte Vektoreinbettungen umzuwandeln.
Wir definieren eine Klassifikationsschicht, die die 24 Produktkategorien repräsentiert, in die Amazon-Produkte eingeordnet werden können, und trainieren den Satztransformator darauf.
import torch.nn as nn
class ClassificationHead(nn.Module):
def __init__(self, embedding_dim, num_classes):
super(ClassificationHead, self).__init__()
self.linear = nn.Linear(embedding_dim, num_classes)
def forward(self, features):
x = features['sentence_embedding']
x = self.linear(x)
return x
num_classes = 24
classification_head = ClassificationHead(model.get_sentence_embedding_dimension(), num_classes)
class SentenceTransformerWithHead(nn.Module):
def __init__(self, transformer, head):
super(SentenceTransformerWithHead, self).__init__()
self.transformer = transformer
self.head = head
def forward(self, input):
features = self.transformer(input)
logits = self.head(features)
return logits
model_with_head = SentenceTransformerWithHead(model, classification_head)
Nach dem Training auf fünf Epochen beobachten wir, dass sich die Genauigkeit mit der Feinabstimmung erheblich verbessert.
XGBoost-Klassifikation
Nach der Feinabstimmung verwenden wir den transformierten Text als Eingabe für den XGBoost-Classifier. Mithilfe des Standardmodells „paraphrase-MiniLM-L6-v2“ erzielen wir eine Genauigkeit von 78 %. Nach der Feinabstimmung des Modells auf Amazon-Daten verbessern wir die Genauigkeit auf 94 % – ein Anstieg um 16 %.
from sklearn.model_selection import train_test_split
import xgboost as xgb
from sklearn.metrics import accuracy_score
model = SentenceTransformer('st_ft_epoch_5')
data['text_embedding_finetuned'] = data['all_text'].apply(lambda x: model.encode(str(x)))
# Train and evaluate the model...
Anwendung des M5_ASIN_SMALL_V2.0 Modells
Wir sind auch zuversichtlich, dass der M5_ASIN_SMALL_V2.0 durch die speziell auf Amazon-Daten abgestimmte Feinabstimmung unsere Klassifikationsergebnisse weiter verbessern wird.
Fazit
In diesem Blogbeitrag haben wir die Vorteile von Satztransformatoren für die Produktklassifikation bei Amazon beleuchtet. Unsere Experimente zeigen klar, dass die Feinabstimmung unserer Modelle auf spezifische Datensätze einen erheblichen Einfluss auf die Modellgenauigkeit hat. Wir ermutigen Sie, verschiedene Modelle von Hugging Face zu erkunden und die Möglichkeiten zu nutzen, die durch die Feinabstimmung geboten werden.
Für Unternehmen, die an der Nutzung des M5-Modells interessiert sind, gilt es zu beachten, dass es sich um ein proprietäres Modell handelt, das nur Amazon-Partnern und -Kunden zugänglich ist. Verbinden Sie sich mit Ihrem Amazon-Ansprechpartner, um weitere Informationen zu erhalten.
Über die Autoren
- Kara Yang: Datenwissenschaftlerin bei AWS Professional Services mit umfassender Erfahrung in KI/ML.
- Farshad Harirchi: Principal Data Scientist bei AWS Professional Services, der Kunden aus verschiedenen Branchen mit ML-Lösungen unterstützt.
- James Poquiz: Datenwissenschaftler bei AWS Professional Services mit Erfahrung in der Implementierung skalierbarer ML-Lösungen.
Nutzen Sie diese Erkenntnisse, um Ihre Produktklassifizierungsstrategien neu zu überdenken und von den Vorteilen moderner NLP-Technologien zu profitieren!
Hinterlasse eine Antwort