Tehokkaat kielimallit + Scikit-learn = Scikit-LLM. Suorita tekstianalyysitehtäviä liikkeellä ollessasi tämän kirjaston avulla.
Scikit-LLM on Python-paketti, joka auttaa integroimaan suuria kielimalleja (LLM) scikit-learn-kehykseen. Se auttaa tekstianalyysitehtävien suorittamisessa. Jos tunnet scikit-learnin, sinun on helpompi työskennellä Scikit-LLM: n kanssa.
On tärkeää huomata, että Scikit-LLM ei korvaa scikit-learnia. scikit-learn on yleiskäyttöinen koneoppimiskirjasto, mutta Scikit-LLM on suunniteltu erityisesti tekstianalyysitehtäviin.
Scikit-LLM: n käytön aloittaminen
Aloitaksesi Scikit-LLM, sinun on asennettava kirjasto ja määritettävä API-avain. Asenna kirjasto avaamalla IDE ja luoda uusi virtuaaliympäristö. Tämä auttaa estämään mahdolliset kirjastoversioristiriidat. Suorita sitten seuraava komento terminaalissa.
pip install scikit-llm
Tämä komento asentaa Scikit-LLM: n ja sen tarvittavat riippuvuudet.
API-avaimen määrittämistä varten sinun on hankittava se LLM-palveluntarjoajaltasi. Voit hankkia OpenAI API-avaimen seuraavasti:
Siirry kohtaan OpenAI API -sivu. Napsauta sitten profiiliasi ikkunan oikeassa yläkulmassa. Valitse Näytä API-avaimet. Tämä vie sinut kohteeseen API-avaimet sivu.
Käytössä API-avaimet -sivua, napsauta Luo uusi salainen avain -painiketta.
Nimeä API-avaimesi ja napsauta Luo salainen avain -painiketta avaimen luomiseksi. Luomisen jälkeen sinun on kopioitava avain ja säilytettävä se turvallisessa paikassa, koska OpenAI ei näytä avainta uudelleen. Jos kadotat sen, sinun on luotava uusi.
Täysi lähdekoodi on saatavilla a GitHub-arkisto.
Nyt kun sinulla on API-avain, avaa IDE ja tuo SKLLMConfig luokka Scikit-LLM-kirjastosta. Tällä luokalla voit määrittää suurten kielimallien käyttöön liittyviä konfigurointiasetuksia.
from skllm.config import SKLLMConfig
Tällä kurssilla sinun on määritettävä OpenAI API -avaimesi ja organisaation tiedot.
# Set your OpenAI API key
SKLLMConfig.set_openai_key("Your API key")
# Set your OpenAI organization
SKLLMConfig.set_openai_org("Your organization ID")
Organisaation tunnus ja nimi eivät ole samat. Organisaation tunnus on organisaatiosi yksilöllinen tunniste. Hanki organisaatiotunnuksesi siirtymällä kohtaan OpenAI-organisaatio asetussivu ja kopioi se. Olet nyt luonut yhteyden Scikit-LLM: n ja suuren kielimallin välille.
Scikit-LLM edellyttää, että sinulla on jako-jakosuunnitelma. Tämä johtuu siitä, että ilmaisen kokeiluversion OpenAI-tilin nopeusrajoitus on kolme pyyntöä minuutissa, mikä ei riitä Scikit-LLM: lle.
Ilmaisen kokeilutilin käytön yrittäminen johtaa alla olevan kaltaiseen virheeseen tekstianalyysin aikana.
Lisätietoja hintarajoituksista. Siirry kohtaan OpenAI-hintarajojen sivu.
LLM-palveluntarjoaja ei rajoitu vain OpenAI: han. Voit käyttää myös muita LLM-palveluntarjoajia.
Vaadittujen kirjastojen tuonti ja tietojoukon lataaminen
Tuo pandat, joita käytät tietojoukon lataamiseen. Tuo vaaditut luokat myös Scikit-LLM: stä ja scikit-learnistä.
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
Lataa seuraavaksi tietojoukko, jolle haluat tehdä tekstianalyysin. Tämä koodi käyttää IMDB-elokuvien tietojoukkoa. Voit kuitenkin muokata sitä käyttämään omaa tietojoukkoasi.
# Load your dataset
data = pd.read_csv("imdb_movies_dataset.csv")
# Extract the first 100 rows
data = data.head(100)
Vain tietojoukon 100 ensimmäisen rivin käyttäminen ei ole pakollista. Voit käyttää koko tietojoukkoasi.
Pura seuraavaksi ominaisuudet ja otsikkosarakkeet. Jaa sitten tietojoukkosi juna- ja testijoukkoon.
# 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 Genre sarake sisältää tunnisteet, jotka haluat ennustaa.
Zero-Shot-tekstin luokittelu Scikit-LLM: llä
Zero-shot-tekstin luokittelu on suurten kielimallien tarjoama ominaisuus. Se luokittelee tekstin ennalta määritettyihin luokkiin tarvitsematta nimenomaista koulutusta merkittyihin tietoihin. Tämä ominaisuus on erittäin hyödyllinen käsiteltäessä tehtäviä, joissa sinun on luokiteltava tekstiä luokkiin, joita et odottanut mallikoulutuksen aikana.
Suorita nollakuvan tekstiluokittelu Scikit-LLM: n avulla käyttämällä ZeroShotGPTC-luokitus luokkaa.
# 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))
Tulos on seuraava:
Luokitteluraportti sisältää mittareita jokaiselle tarralle, jota malli yrittää ennustaa.
Multi-Label Zero-Shot -tekstin luokittelu Scikit-LLM: llä
Joissakin tilanteissa yksi teksti voi kuulua useisiin luokkiin samanaikaisesti. Perinteiset luokitusmallit kamppailevat tämän kanssa. Scikit-LLM toisaalta mahdollistaa tämän luokituksen. Usean etiketin nollakuvan tekstin luokittelu on ratkaisevan tärkeää määritettäessä useita kuvaavia tunnisteita yhdelle tekstinäytteelle.
Käyttää MultiLabelZeroShotGPTC-luokitus ennustaa, mitkä tarrat sopivat kullekin tekstinäytteelle.
# 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))
Yllä olevassa koodissa määrität ehdokastunnisteet, joihin tekstisi saattaa kuulua.
Tulos on alla olevan kuvan mukainen:
Tämä raportti auttaa sinua ymmärtämään, kuinka hyvin mallisi toimii kunkin tarran kohdalla usean tunnisteen luokituksessa.
Tekstin vektorointi Scikit-LLM: llä
Tekstin vektoroinnissa tekstidata muunnetaan numeeriseen muotoon, jota koneoppimismallit voivat ymmärtää. Scikit-LLM tarjoaa tähän GPTVectorizerin. Sen avulla voit muuntaa tekstiä kiinteäulotteisiksi vektoreiksi käyttämällä GPT-malleja.
Voit saavuttaa tämän käyttämällä termiä Frequency-Inverse Document Frequency.
# 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
Tässä on tulos:
Tulos edustaa TF-IDF-vektorisoituja ominaisuuksia tietojoukon ensimmäisille viidelle näytteelle.
Tekstin yhteenveto Scikit-LLM: llä
Tekstin yhteenveto auttaa tiivistämään tekstiä ja säilyttämään sen tärkeimmät tiedot. Scikit-LLM tarjoaa GPTSummarizerin, joka käyttää GPT-malleihin luoda tiiviitä yhteenvetoja tekstistä.
# Perform Text Summarization
summarizer = GPTSummarizer(openai_model="gpt-3.5-turbo", max_words=15)
summaries = summarizer.fit_transform(X_test)
print(summaries)
Tulos on seuraava:
Yllä oleva on yhteenveto testitiedoista.
Rakenna sovelluksia LLM: iden päälle
Scikit-LLM avaa mahdollisuuksia tekstin analysointiin suurilla kielimalleilla. Suurten kielimallien taustalla olevan teknologian ymmärtäminen on ratkaisevan tärkeää. Se auttaa sinua ymmärtämään niiden vahvuudet ja heikkoudet, jotka voivat auttaa sinua rakentamaan tehokkaita sovelluksia tämän huipputeknologian päälle.