Výkonné jazykové modely + Scikit-learn = Scikit-LLM. Pomocou tejto knižnice vykonávajte úlohy analýzy textu na cestách.
Scikit-LLM je balík Python, ktorý pomáha integrovať veľké jazykové modely (LLM) do rámca scikit-learn. Pomáha pri plnení úloh analýzy textu. Ak poznáte scikit-learn, bude sa vám so Scikit-LLM pracovať ľahšie.
Je dôležité poznamenať, že Scikit-LLM nenahrádza scikit-learn. scikit-learn je univerzálna knižnica strojového učenia, ale Scikit-LLM je špeciálne navrhnutý pre úlohy analýzy textu.
Začíname so Scikit-LLM
Na začiatok Scikit-LLM, budete musieť nainštalovať knižnicu a nakonfigurovať kľúč API. Ak chcete nainštalovať knižnicu, otvorte svoje IDE a vytvoriť nové virtuálne prostredie. Pomôže to zabrániť možným konfliktom verzií knižnice. Potom v termináli spustite nasledujúci príkaz.
pip install scikit-llm
Tento príkaz nainštaluje Scikit-LLM a jeho požadované závislosti.
Ak chcete nakonfigurovať kľúč API, musíte ho získať od poskytovateľa LLM. Ak chcete získať kľúč OpenAI API, postupujte takto:
Pokračujte na Stránka OpenAI API. Potom kliknite na svoj profil v pravom hornom rohu okna. Vyberte Zobraziť kľúče API. Týmto sa dostanete na API kľúče stránku.
Na API kľúče kliknite na stránku Vytvorte nový tajný kľúč tlačidlo.
Pomenujte svoj API kľúč a kliknite na Vytvorte tajný kľúč tlačidlo na vygenerovanie kľúča. Po vygenerovaní musíte kľúč skopírovať a uložiť na bezpečné miesto, pretože OpenAI už kľúč znova nezobrazí. Ak ho stratíte, budete si musieť vygenerovať nový.
Úplný zdrojový kód je dostupný v a úložisko GitHub.
Teraz, keď máte kľúč API, otvorte svoje IDE a importujte SKLLMConfig triedy z knižnice Scikit-LLM. Táto trieda vám umožňuje nastaviť možnosti konfigurácie súvisiace s používaním veľkých jazykových modelov.
from skllm.config import SKLLMConfig
Táto trieda očakáva, že si nastavíte kľúč OpenAI API a podrobnosti o organizácii.
# Set your OpenAI API key
SKLLMConfig.set_openai_key("Your API key")
# Set your OpenAI organization
SKLLMConfig.set_openai_org("Your organization ID")
ID organizácie a názov nie sú rovnaké. ID organizácie je jedinečný identifikátor vašej organizácie. Ak chcete získať ID organizácie, prejdite na stránku Organizácia OpenAI stránku nastavení a skopírujte ju. Teraz ste vytvorili spojenie medzi Scikit-LLM a veľkým jazykovým modelom.
Scikit-LLM vyžaduje, aby ste mali priebežný plán. Je to preto, že bezplatný skúšobný účet OpenAI má limit na tri požiadavky za minútu, čo pre Scikit-LLM nestačí.
Pokus o použitie bezplatného skúšobného účtu povedie pri vykonávaní analýzy textu k chybe podobnej tej nižšie.
Ak sa chcete dozvedieť viac o limitoch sadzieb. Pokračujte na Stránka limitov sadzby OpenAI.
Poskytovateľ LLM sa neobmedzuje iba na OpenAI. Môžete využiť aj iných poskytovateľov LLM.
Import požadovaných knižníc a načítanie množiny údajov
Importujte pandy, ktoré použijete na načítanie súboru údajov. Taktiež zo Scikit-LLM a scikit-learn importujte požadované triedy.
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
Ďalej načítajte množinu údajov, na ktorej chcete vykonať analýzu textu. Tento kód používa súbor údajov filmov IMDB. Môžete ho však vyladiť tak, aby používal svoj vlastný súbor údajov.
# Load your dataset
data = pd.read_csv("imdb_movies_dataset.csv")
# Extract the first 100 rows
data = data.head(100)
Použitie iba prvých 100 riadkov súboru údajov nie je povinné. Môžete použiť celý súbor údajov.
Potom extrahujte stĺpce funkcií a štítkov. Potom rozdeľte svoj súbor údajov na vlakové a testovacie súbory.
# 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)
The Žáner obsahuje štítky, ktoré chcete predpovedať.
Klasifikácia textu Zero-Shot pomocou Scikit-LLM
Klasifikácia textu s nulovým záberom je funkcia, ktorú ponúkajú veľké jazykové modely. Klasifikuje text do preddefinovaných kategórií bez potreby explicitného školenia na označených údajoch. Táto funkcia je veľmi užitočná pri riešení úloh, pri ktorých potrebujete zatriediť text do kategórií, s ktorými ste počas trénovania modelu nepočítali.
Ak chcete vykonať klasifikáciu textu s nulovým záberom pomocou Scikit-LLM, použite Klasifikátor ZeroShotGPTC trieda.
# 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))
Výstup je nasledovný:
Správa klasifikácie poskytuje metriky pre každý štítok, ktorý sa model pokúša predpovedať.
Klasifikácia textu s viacerými štítkami s nulovým záberom pomocou Scikit-LLM
V niektorých scenároch môže jeden text patriť do viacerých kategórií súčasne. Tradičné klasifikačné modely s tým bojujú. Scikit-LLM na druhej strane túto klasifikáciu umožňuje. Klasifikácia textu s nulovým záberom viacerých štítkov je rozhodujúca pri priraďovaní viacerých popisných štítkov k jednej vzorke textu.
Použite MultiLabelZeroShotGPTClassifier predpovedať, ktoré označenia sú vhodné pre každú vzorku textu.
# 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))
Vo vyššie uvedenom kóde definujete kandidátske štítky, ku ktorým môže patriť váš text.
Výstup je uvedený nižšie:
Tento prehľad vám pomôže pochopiť, akú výkonnosť má váš model pre jednotlivé štítky v klasifikácii viacerých štítkov.
Vektorizácia textu pomocou Scikit-LLM
Pri vektorizácii textu sa textové údaje prevedú do číselného formátu, ktorému môžu porozumieť modely strojového učenia. Scikit-LLM na to ponúka GPTVectorizer. Umožňuje vám transformovať text na vektory s pevnými rozmermi pomocou modelov GPT.
Môžete to dosiahnuť pomocou výrazu Frekvencia – Inverzná frekvencia dokumentu.
# 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
Tu je výstup:
Výstup predstavuje vektorizované vlastnosti TF-IDF pre prvých 5 vzoriek v súbore údajov.
Zhrnutie textu pomocou Scikit-LLM
Sumarizácia textu pomáha zhustiť časť textu a zároveň zachovať jeho najdôležitejšie informácie. Scikit-LLM ponúka GPTSummarizer, ktorý využíva modely GPT vytvárať stručné zhrnutia textu.
# Perform Text Summarization
summarizer = GPTSummarizer(openai_model="gpt-3.5-turbo", max_words=15)
summaries = summarizer.fit_transform(X_test)
print(summaries)
Výstup je nasledovný:
Vyššie uvedené je súhrn testovacích údajov.
Budujte aplikácie na vrchole LLM
Scikit-LLM otvára svet možností pre analýzu textu s veľkými jazykovými modelmi. Pochopenie technológie za veľkými jazykovými modelmi je kľúčové. Pomôže vám pochopiť ich silné a slabé stránky, ktoré vám môžu pomôcť pri budovaní efektívnych aplikácií na vrchole tejto špičkovej technológie.