Võimsad keelemudelid + Scikit-learn = Scikit-LLM. Tehke selle teegi abil tekstianalüüsi ülesandeid liikvel olles.

Scikit-LLM on Pythoni pakett, mis aitab integreerida suuri keelemudeleid (LLM) scikit-learni raamistikku. See aitab tekstianalüüsi ülesandeid täita. Kui olete scikit-learniga tuttav, on teil lihtsam Scikit-LLM-iga töötada.

Oluline on märkida, et Scikit-LLM ei asenda scikit-learni. scikit-learn on üldotstarbeline masinõppe raamatukogu, kuid Scikit-LLM on spetsiaalselt loodud tekstianalüüsi ülesannete jaoks.

Scikit-LLM-iga alustamine

Alustuseks Scikit-LLM, peate installima teegi ja konfigureerima oma API-võtme. Teegi installimiseks avage oma IDE ja luua uus virtuaalne keskkond. See aitab vältida võimalikke teegi versioonide konflikte. Seejärel käivitage terminalis järgmine käsk.

pip install scikit-llm 

See käsk installib Scikit-LLM-i ja selle nõutavad sõltuvused.

API-võtme konfigureerimiseks peate selle hankima oma LLM-i pakkujalt. OpenAI API võtme hankimiseks toimige järgmiselt.

Jätkake jaotisega

instagram viewer
OpenAI API leht. Seejärel klõpsake oma profiilil, mis asub akna paremas ülanurgas. Valige Vaadake API võtmeid. See viib teid lehele API võtmed lehel.

peal API võtmed lehel klõpsake nuppu Looge uus salajane võti nuppu.

Nimetage oma API võti ja klõpsake nuppu Loo salajane võti nuppu võtme genereerimiseks. Pärast genereerimist peate võtme kopeerima ja hoidma seda kindlas kohas, kuna OpenAI võtit uuesti ei kuva. Kui kaotate selle, peate looma uue.

Täielik lähtekood on saadaval a GitHubi hoidla.

Nüüd, kui teil on API võti, avage oma IDE ja importige SKLLMConfig klass Scikit-LLM raamatukogust. See klass võimaldab teil määrata suurte keelemudelite kasutamisega seotud konfiguratsioonisuvandeid.

from skllm.config import SKLLMConfig

See klass eeldab, et määrate oma OpenAI API võtme ja organisatsiooni üksikasjad.

# Set your OpenAI API key
SKLLMConfig.set_openai_key("Your API key")
# Set your OpenAI organization
SKLLMConfig.set_openai_org("Your organization ID")

Organisatsiooni ID ja nimi ei ole samad. Organisatsiooni ID on teie organisatsiooni kordumatu identifikaator. Organisatsiooni ID hankimiseks minge lehele OpenAI organisatsioon seadete leht ja kopeerige see. Olete nüüd loonud ühenduse Scikit-LLM-i ja suure keelemudeli vahel.

Scikit-LLM nõuab, et teil oleks väljamaksete plaan. Selle põhjuseks on asjaolu, et tasuta prooviversiooni OpenAI kontol on kiiruspiirang kolm päringut minutis, mis ei ole Scikit-LLM-i jaoks piisav.

Tasuta proovikonto kasutamise proovimine toob tekstianalüüsi tegemisel kaasa allolevaga sarnase vea.

Lisateabe saamiseks piirangute kohta. Jätkake jaotisega OpenAI intressipiirangute leht.

LLM-i pakkuja ei piirdu ainult OpenAI-ga. Võite kasutada ka teisi LLM-i pakkujaid.

Nõutavate teekide importimine ja andmestiku laadimine

Importige pandad, mida kasutate andmestiku laadimiseks. Samuti importige vajalikud klassid Scikit-LLM-ist 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

Järgmisena laadige andmestik, mille tekstianalüüsi soovite teha. See kood kasutab IMDB filmide andmestikku. Saate seda siiski oma andmestiku kasutamiseks kohandada.

# Load your dataset
data = pd.read_csv("imdb_movies_dataset.csv")
# Extract the first 100 rows
data = data.head(100)

Ainult andmestiku esimese 100 rea kasutamine ei ole kohustuslik. Saate kasutada kogu oma andmestikku.

Järgmisena eraldage funktsioonid ja siltide veerud. Seejärel jagage andmekogum rongi- ja katsekomplektideks.

# 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 veerg sisaldab silte, mida soovite ennustada.

Zero-Shot teksti klassifikatsioon Scikit-LLM-iga

Null-shot teksti klassifikatsioon on funktsioon, mida pakuvad suured keelemudelid. See liigitab teksti eelnevalt määratletud kategooriatesse, ilma et oleks vaja selgesõnalist koolitust märgistatud andmete kohta. See võimalus on väga kasulik ülesannete lahendamisel, kus peate liigitama teksti kategooriatesse, mida te mudelikoolituse ajal ette ei näinud.

Scikit-LLM-i abil teksti nullkaadri klassifitseerimiseks kasutage ZeroShotGPTC klassifikaator klass.

# 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äljund on järgmine:

Klassifitseerimisaruanne sisaldab mõõdikuid iga sildi kohta, mida mudel püüab ennustada.

Multi-Label Zero-Shot teksti klassifikatsioon Scikit-LLM

Mõne stsenaariumi korral võib üks tekst kuuluda korraga mitmesse kategooriasse. Traditsioonilised klassifikatsioonimudelid võitlevad sellega. Scikit-LLM seevastu teeb selle klassifikatsiooni võimalikuks. Mitme sildiga nullkaadri teksti klassifikatsioon on ühele tekstinäidisele mitme kirjeldava sildi määramisel ülioluline.

Kasutage MultiLabelZeroShotGPTCklassifikaator et ennustada, millised sildid sobivad iga tekstinäidise jaoks.

# 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))

Ülaltoodud koodis määrate kandidaatsildid, millele teie tekst võib kuuluda.

Väljund on selline, nagu allpool näidatud:

See aruanne aitab teil mõista, kui hästi teie mudel mitme sildi klassifikatsiooni iga sildi puhul toimib.

Teksti vektoriseerimine Scikit-LLM-iga

Teksti vektoriseerimisel teisendatakse tekstiandmed arvvormingusse, millest masinõppemudelid aru saavad. Scikit-LLM pakub selleks GPTVectorizerit. See võimaldab GPT-mudeleid kasutades teisendada teksti fikseeritud mõõtmetega vektoriteks.

Seda saate saavutada termini sagedus-dokumentide pöördsageduse abil.

# 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

Siin on väljund:

Väljund esindab TF-IDF vektoriseeritud funktsioone andmestiku esimese 5 proovi jaoks.

Teksti kokkuvõte Scikit-LLM-iga

Teksti kokkuvõte aitab tekstiosa tihendada, säilitades samal ajal selle kõige olulisema teabe. Scikit-LLM pakub GPTSummarizerit, mis kasutab GPT mudelid teksti kokkuvõtete tegemiseks.

# Perform Text Summarization
summarizer = GPTSummarizer(openai_model="gpt-3.5-turbo", max_words=15)
summaries = summarizer.fit_transform(X_test)
print(summaries)

Väljund on järgmine:

Ülaltoodud on testiandmete kokkuvõte.

Looge rakendusi LLM-ide peale

Scikit-LLM avab suurte keelemudelitega tekstianalüüsi võimaluste maailma. Suurte keelemudelite taga oleva tehnoloogia mõistmine on ülioluline. See aitab teil mõista nende tugevaid ja nõrku külgi, mis aitavad teil selle tipptehnoloogia kõrval tõhusaid rakendusi luua.