Snažni jezični modeli + Scikit-learn = Scikit-LLM. Obavljajte zadatke analize teksta u pokretu uz pomoć ove knjižnice.
Scikit-LLM je Python paket koji pomaže u integraciji velikih jezičnih modela (LLM) u okvir scikit-learn. Pomaže u izvršavanju zadataka analize teksta. Ako ste upoznati sa scikit-learn, bit će vam lakše raditi sa Scikit-LLM.
Važno je napomenuti da Scikit-LLM ne zamjenjuje scikit-learn. scikit-learn je biblioteka za strojno učenje opće namjene, ali Scikit-LLM je posebno dizajniran za zadatke analize teksta.
Početak rada sa Scikit-LLM
Za početak Scikit-LLM, morat ćete instalirati biblioteku i konfigurirati svoj API ključ. Da biste instalirali biblioteku, otvorite svoj IDE i stvoriti novo virtualno okruženje. To će pomoći u sprječavanju potencijalnih sukoba verzija knjižnice. Zatim pokrenite sljedeću naredbu u terminalu.
pip install scikit-llm
Ova naredba će instalirati Scikit-LLM i njegove potrebne ovisnosti.
Da biste konfigurirali svoj API ključ, morate ga nabaviti od svog LLM pružatelja usluga. Da biste dobili OpenAI API ključ, slijedite ove korake:
Nastavite do OpenAI API stranica. Zatim kliknite na svoj profil koji se nalazi u gornjem desnom kutu prozora. Izaberi Pregledajte API ključeve. Ovo će vas odvesti do API ključevi stranica.
Na API ključevi stranici kliknite na Stvorite novi tajni ključ dugme.
Imenujte svoj API ključ i kliknite na Stvorite tajni ključ gumb za generiranje ključa. Nakon generiranja morate kopirati ključ i pohraniti ga na sigurno mjesto jer OpenAI neće ponovno prikazati ključ. Ako ga izgubite, morat ćete generirati novi.
Puni izvorni kod dostupan je u a GitHub spremište.
Sada kada imate svoj API ključ, otvorite svoj IDE i uvezite SKLLMConfig razreda iz Scikit-LLM knjižnice. Ova vam klasa omogućuje postavljanje konfiguracijskih opcija povezanih s korištenjem velikih jezičnih modela.
from skllm.config import SKLLMConfig
Ova klasa očekuje da postavite svoj OpenAI API ključ i detalje organizacije.
# Set your OpenAI API key
SKLLMConfig.set_openai_key("Your API key")
# Set your OpenAI organization
SKLLMConfig.set_openai_org("Your organization ID")
ID organizacije i naziv nisu isti. ID organizacije je jedinstveni identifikator vaše organizacije. Da biste dobili ID svoje organizacije, prijeđite na Organizacija OpenAI stranicu postavki i kopirajte je. Sada ste uspostavili vezu između Scikit-LLM i velikog jezičnog modela.
Scikit-LLM od vas zahtijeva da imate plan tekućeg plaćanja. To je zato što besplatni probni OpenAI račun ima ograničenje brzine od tri zahtjeva u minuti, što nije dovoljno za Scikit-LLM.
Pokušaj korištenja besplatnog probnog računa dovest će do pogreške slične onoj u nastavku tijekom analize teksta.
Da biste saznali više o ograničenjima stope. Nastavite do OpenAI stranica s ograničenjima brzine.
LLM pružatelj usluga nije ograničen samo na OpenAI. Možete koristiti i druge pružatelje LLM-a.
Uvoz potrebnih biblioteka i učitavanje skupa podataka
Uvezite pande koje ćete koristiti za učitavanje skupa podataka. Također, iz Scikit-LLM i scikit-learn, uvezite potrebne klase.
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
Zatim učitajte skup podataka na kojem želite izvršiti analizu teksta. Ovaj kod koristi skup podataka o filmovima IMDB-a. Međutim, možete ga podesiti da koristi vlastiti skup podataka.
# Load your dataset
data = pd.read_csv("imdb_movies_dataset.csv")
# Extract the first 100 rows
data = data.head(100)
Korištenje samo prvih 100 redaka skupa podataka nije obavezno. Možete koristiti cijeli skup podataka.
Zatim izdvojite značajke i stupce s oznakama. Zatim podijelite svoj skup podataka u skupove za treniranje i testiranje.
# 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 Žanr sadrži oznake koje želite predvidjeti.
Zero-Shot Klasifikacija teksta sa Scikit-LLM
Zero-shot klasifikacija teksta značajka je koju nude veliki jezični modeli. Klasificira tekst u unaprijed definirane kategorije bez potrebe za eksplicitnom obukom na označenim podacima. Ova mogućnost je vrlo korisna kada se bavite zadacima u kojima trebate klasificirati tekst u kategorije koje niste predvidjeli tijekom obuke modela.
Za izvođenje nulte klasifikacije teksta pomoću Scikit-LLM, koristite ZeroShotGPTClassifier razreda.
# 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))
Izlaz je sljedeći:
Izvješće o klasifikaciji pruža metriku za svaku oznaku koju model pokušava predvidjeti.
Multi-Label Zero-Shot Klasifikacija teksta sa Scikit-LLM
U nekim scenarijima, jedan tekst može pripadati više kategorija istovremeno. Tradicionalni modeli klasifikacije bore se s tim. Scikit-LLM s druge strane omogućuje ovu klasifikaciju. Klasifikacija teksta s više naljepnica ključna je za dodjeljivanje višestrukih opisnih oznaka jednom uzorku teksta.
Koristiti MultiLabelZeroShotGPTClassifier da predvidi koje su oznake prikladne za svaki uzorak teksta.
# 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))
U gornjem kodu definirate oznake kandidata kojima bi vaš tekst mogao pripadati.
Izlaz je kao što je prikazano u nastavku:
Ovo vam izvješće pomaže da shvatite koliko dobro vaš model ima izvedbu za svaku oznaku u klasifikaciji s više oznaka.
Vektorizacija teksta pomoću Scikit-LLM
U vektorizaciji teksta tekstualni podaci se pretvaraju u numerički format koji modeli strojnog učenja mogu razumjeti. Scikit-LLM za to nudi GPTVectorizer. Omogućuje transformaciju teksta u vektore fiksnih dimenzija pomoću GPT modela.
To možete postići korištenjem terminske učestalosti inverzne učestalosti dokumenta.
# 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
Evo rezultata:
Izlaz predstavlja TF-IDF vektorizirana obilježja za prvih 5 uzoraka u skupu podataka.
Sažimanje teksta uz Scikit-LLM
Sažimanje teksta pomaže u sažimanju dijela teksta uz očuvanje njegovih najvažnijih informacija. Scikit-LLM nudi GPTSummarizer, koji koristi GPT modeli za stvaranje sažetih sažetaka teksta.
# Perform Text Summarization
summarizer = GPTSummarizer(openai_model="gpt-3.5-turbo", max_words=15)
summaries = summarizer.fit_transform(X_test)
print(summaries)
Izlaz je sljedeći:
Gore je sažetak podataka ispitivanja.
Izgradite aplikacije na temelju LLM-a
Scikit-LLM otvara svijet mogućnosti za analizu teksta s velikim jezičnim modelima. Presudno je razumijevanje tehnologije iza velikih jezičnih modela. Pomoći će vam razumjeti njihove snage i slabosti koje vam mogu pomoći u izgradnji učinkovitih aplikacija na vrhu ove vrhunske tehnologije.