Galingi kalbų modeliai + Scikit-learn = Scikit-LLM. Naudodami šią biblioteką atlikite teksto analizės užduotis kelyje.
Scikit-LLM yra Python paketas, padedantis integruoti didelius kalbų modelius (LLM) į scikit-learn sistemą. Tai padeda atlikti teksto analizės užduotis. Jei esate susipažinę su scikit-learn, jums bus lengviau dirbti su Scikit-LLM.
Svarbu pažymėti, kad Scikit-LLM nepakeičia scikit-learn. scikit-learn yra bendrosios paskirties mašininio mokymosi biblioteka, tačiau Scikit-LLM yra specialiai sukurta teksto analizės užduotims.
Darbo su Scikit-LLM pradžia
Norėdami pradėti nuo Scikit-LLM, turėsite įdiegti biblioteką ir sukonfigūruoti API raktą. Norėdami įdiegti biblioteką, atidarykite savo IDE ir sukurti naują virtualią aplinką. Tai padės išvengti galimų bibliotekos versijų konfliktų. Tada terminale paleiskite šią komandą.
pip install scikit-llm
Ši komanda įdiegs Scikit-LLM ir jos reikalingas priklausomybes.
Norėdami sukonfigūruoti API raktą, turite jį įsigyti iš savo LLM teikėjo. Norėdami gauti OpenAI API raktą, atlikite šiuos veiksmus:
Pereikite prie OpenAI API puslapis. Tada spustelėkite savo profilį, esantį viršutiniame dešiniajame lango kampe. Pasirinkite Peržiūrėkite API raktus. Tai nuves jus į API raktai puslapį.
Ant API raktai puslapyje spustelėkite Sukurkite naują slaptą raktą mygtuką.
Pavadinkite savo API raktą ir spustelėkite Sukurkite slaptą raktą mygtuką, kad sugeneruotumėte raktą. Po generavimo turite nukopijuoti raktą ir laikyti jį saugioje vietoje, nes OpenAI rakto neberodys. Jei jį prarasite, turėsite sukurti naują.
Visą šaltinio kodą rasite a GitHub saugykla.
Dabar, kai turite API raktą, atidarykite IDE ir importuokite SKLLMConfig klasė iš Scikit-LLM bibliotekos. Ši klasė leidžia nustatyti konfigūracijos parinktis, susijusias su didelių kalbų modelių naudojimu.
from skllm.config import SKLLMConfig
Šioje klasėje tikimasi, kad nustatysite savo OpenAI API raktą ir organizacijos informaciją.
# Set your OpenAI API key
SKLLMConfig.set_openai_key("Your API key")
# Set your OpenAI organization
SKLLMConfig.set_openai_org("Your organization ID")
Organizacijos ID ir pavadinimas nesutampa. Organizacijos ID yra unikalus jūsų organizacijos identifikatorius. Norėdami gauti savo organizacijos ID, eikite į OpenAI organizacija nustatymų puslapį ir nukopijuokite jį. Dabar užmezgėte ryšį tarp Scikit-LLM ir didelės kalbos modelio.
„Scikit-LLM“ reikalauja, kad turėtumėte mokėjimų planą. Taip yra todėl, kad nemokamos bandomosios OpenAI paskyros dažnio limitas yra trys užklausos per minutę, o to nepakanka Scikit-LLM.
Bandant naudoti nemokamą bandomąją paskyrą, atliekant teksto analizę įvyks klaida, panaši į toliau pateiktą.
Norėdami sužinoti daugiau apie normų ribas. Pereikite prie OpenAI normos apribojimų puslapis.
LLM teikėjas neapsiriboja tik OpenAI. Taip pat galite naudoti kitus LLM teikėjus.
Reikalingų bibliotekų importavimas ir duomenų rinkinio įkėlimas
Importuokite pandas, kurias naudosite duomenų rinkiniui įkelti. Be to, iš Scikit-LLM ir scikit-learn importuokite reikiamas klases.
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
Tada įkelkite duomenų rinkinį, kuriame norite atlikti teksto analizę. Šis kodas naudoja IMDB filmų duomenų rinkinį. Tačiau galite jį pakoreguoti, kad galėtumėte naudoti savo duomenų rinkinį.
# Load your dataset
data = pd.read_csv("imdb_movies_dataset.csv")
# Extract the first 100 rows
data = data.head(100)
Naudoti tik pirmąsias 100 duomenų rinkinio eilučių nėra privaloma. Galite naudoti visą savo duomenų rinkinį.
Tada išskleiskite funkcijų ir etikečių stulpelius. Tada padalykite duomenų rinkinį į traukinių ir bandymų rinkinius.
# 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 Žanras stulpelyje yra etiketės, kurias norite numatyti.
Nulinis teksto klasifikavimas naudojant Scikit-LLM
Nulinis teksto klasifikavimas yra didelių kalbų modelių siūloma funkcija. Jis klasifikuoja tekstą į iš anksto nustatytas kategorijas, nereikalaujant aiškaus mokymo apie pažymėtus duomenis. Ši galimybė yra labai naudinga atliekant užduotis, kai reikia suskirstyti tekstą į kategorijas, kurių nenumatėte modelio mokymo metu.
Norėdami atlikti nulinį teksto klasifikavimą naudodami Scikit-LLM, naudokite ZeroShotGPTCklasifikatorius klasė.
# 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))
Išvestis yra tokia:
Klasifikavimo ataskaitoje pateikiama kiekvienos etiketės, kurią modelis bando numatyti, metrika.
Multi-Label Zero-Shot teksto klasifikacija su Scikit-LLM
Kai kuriais atvejais vienas tekstas vienu metu gali priklausyti kelioms kategorijoms. Su tuo kovoja tradiciniai klasifikavimo modeliai. Kita vertus, Scikit-LLM leidžia šią klasifikaciją atlikti. Kelių etikečių nulinis teksto klasifikavimas yra labai svarbus priskiriant kelias aprašomąsias etiketes vienam teksto pavyzdžiui.
Naudokite MultiLabelZeroShotGPTCklasifikatorius nuspėti, kurios etiketės tinka kiekvienam teksto pavyzdžiui.
# 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))
Aukščiau pateiktame kode apibrėžiate galimas etiketes, kurioms gali priklausyti jūsų tekstas.
Išvestis yra tokia, kaip parodyta žemiau:
Ši ataskaita padeda suprasti, kaip gerai veikia jūsų modelis su kiekviena kelių etikečių klasifikacija.
Teksto vektorizavimas naudojant Scikit-LLM
Vykdant teksto vektorizavimą tekstiniai duomenys konvertuojami į skaitmeninį formatą, kurį gali suprasti mašininio mokymosi modeliai. Scikit-LLM tam siūlo GPTVectorizer. Tai leidžia konvertuoti tekstą į fiksuotų matmenų vektorius naudojant GPT modelius.
Tai galite pasiekti naudodami terminą dažnis – atvirkštinis dokumento dažnis.
# 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
Štai išvestis:
Išvestis atspindi TF-IDF vektorizuotas funkcijas pirmiesiems 5 duomenų rinkinio pavyzdžiams.
Teksto apibendrinimas naudojant Scikit-LLM
Teksto apibendrinimas padeda sutrumpinti teksto dalį, išsaugant svarbiausią informaciją. Scikit-LLM siūlo GPTSummarizer, kuris naudoja GPT modeliai sukurti glaustas teksto santraukas.
# Perform Text Summarization
summarizer = GPTSummarizer(openai_model="gpt-3.5-turbo", max_words=15)
summaries = summarizer.fit_transform(X_test)
print(summaries)
Išvestis yra tokia:
Aukščiau pateikta bandymo duomenų santrauka.
Kurkite programas ant LLM
Scikit-LLM atveria teksto analizės galimybių pasaulį su dideliais kalbos modeliais. Labai svarbu suprasti didelių kalbų modelių technologiją. Tai padės jums suprasti jų stipriąsias ir silpnąsias puses, kurios gali padėti jums sukurti efektyvias programas, papildančias šią pažangiausią technologiją.