Моћни језички модели + Сцикит-леарн = Сцикит-ЛЛМ. Обављајте задатке анализе текста у покрету уз помоћ ове библиотеке.
Сцикит-ЛЛМ је Питхон пакет који помаже у интеграцији великих језичких модела (ЛЛМ) у оквир сцикит-леарн. Помаже у извршавању задатака анализе текста. Ако сте упознати са сцикит-леарн, биће вам лакше да радите са Сцикит-ЛЛМ.
Важно је напоменути да Сцикит-ЛЛМ не замењује сцикит-леарн. сцикит-леарн је библиотека за машинско учење опште намене, али је Сцикит-ЛЛМ посебно дизајниран за задатке анализе текста.
Почетак рада са Сцикит-ЛЛМ
За почетак са Сцикит-ЛЛМ, мораћете да инсталирате библиотеку и конфигуришете свој АПИ кључ. Да бисте инсталирали библиотеку, отворите свој ИДЕ и створити ново виртуелно окружење. Ово ће помоћи у спречавању потенцијалних сукоба верзија библиотеке. Затим покрените следећу команду у терминалу.
pip install scikit-llm
Ова команда ће инсталирати Сцикит-ЛЛМ и његове потребне зависности.
Да бисте конфигурисали свој АПИ кључ, морате га набавити од свог ЛЛМ провајдера. Да бисте добили ОпенАИ АПИ кључ, следите ове кораке:
Наставите до ОпенАИ АПИ страница. Затим кликните на свој профил који се налази у горњем десном углу прозора. Изаберите Погледајте АПИ кључеве. Ово ће вас одвести до АПИ кључеви страна.
На АПИ кључеви страницу, кликните на Креирајте нови тајни кључ дугме.
Именујте свој АПИ кључ и кликните на Креирајте тајни кључ дугме за генерисање кључа. Након генерисања, потребно је да копирате кључ и сачувате га на безбедном месту јер ОпенАИ неће поново приказати кључ. Ако га изгубите, мораћете да генеришете нову.
Комплетан изворни код је доступан у а ГитХуб спремиште.
Сада када имате свој АПИ кључ, отворите свој ИДЕ и увезите СКЛЛМЦонфиг разред из библиотеке Сцикит-ЛЛМ. Ова класа вам омогућава да поставите опције конфигурације које се односе на употребу великих језичких модела.
from skllm.config import SKLLMConfig
Ова класа очекује да подесите свој ОпенАИ АПИ кључ и детаље организације.
# Set your OpenAI API key
SKLLMConfig.set_openai_key("Your API key")
# Set your OpenAI organization
SKLLMConfig.set_openai_org("Your organization ID")
ИД организације и назив нису исти. ИД организације је јединствени идентификатор ваше организације. Да бисте добили ИД своје организације, идите на ОпенАИ организација страницу подешавања и копирајте је. Сада сте успоставили везу између Сцикит-ЛЛМ и великог језичког модела.
Сцикит-ЛЛМ захтева од вас да имате план који се плаћа. То је зато што бесплатни пробни ОпенАИ налог има ограничење брзине од три захтева у минути што није довољно за Сцикит-ЛЛМ.
Покушај коришћења бесплатног пробног налога ће довести до грешке сличне оној испод током анализе текста.
Да бисте сазнали више о ограничењима стопе. Наставите до Страница ограничења брзине ОпенАИ.
ЛЛМ добављач није ограничен само на ОпенАИ. Можете користити и друге ЛЛМ провајдере.
Увоз потребних библиотека и учитавање скупа података
Увезите панде које ћете користити за учитавање скупа података. Такође, из Сцикит-ЛЛМ и сцикит-леарн, увезите потребне класе.
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
Затим учитајте скуп података на којем желите да извршите анализу текста. Овај код користи скуп података ИМДБ филмова. Међутим, можете га подесити да бисте користили сопствени скуп података.
# Load your dataset
data = pd.read_csv("imdb_movies_dataset.csv")
# Extract the first 100 rows
data = data.head(100)
Коришћење само првих 100 редова скупа података није обавезно. Можете користити цео скуп података.
Затим издвојите карактеристике и колоне са ознакама. Затим поделите свој скуп података на скупове за обуку и тестове.
# 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)
Тхе Жанр колона садржи ознаке које желите да предвидите.
Класификација нултог текста са Сцикит-ЛЛМ
Класификација текста на нултом нивоу је карактеристика коју нуде велики језички модели. Он класификује текст у унапред дефинисане категорије без потребе за експлицитном обуком о означеним подацима. Ова могућност је веома корисна када се бавите задацима где треба да класификујете текст у категорије које нисте предвидели током обуке модела.
Да бисте извршили класификацију текста нулте слике користећи Сцикит-ЛЛМ, користите ЗероСхотГПТЦлассифиер класа.
# 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))
Излаз је следећи:
Извештај о класификацији пружа метрику за сваку ознаку коју модел покушава да предвиди.
Мулти-Лабел Зеро-Схот класификација текста са Сцикит-ЛЛМ
У неким сценаријима, један текст може истовремено припадати више категорија. Традиционални модели класификације се боре са овим. Сцикит-ЛЛМ са друге стране чини ову класификацију могућом. Класификација текста са више ознака је кључна за додељивање више описних ознака једном текстуалном узорку.
Користите МултиЛабелЗероСхотГПТЦлассифиер да предвиди које су ознаке прикладне за сваки узорак текста.
# 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))
У коду изнад дефинишете ознаке кандидата којима ваш текст може припадати.
Излаз је као што је приказано у наставку:
Овај извештај вам помаже да разумете колико добро функционише ваш модел за сваку ознаку у класификацији са више ознака.
Векторизација текста са Сцикит-ЛЛМ
У векторизацији текста текстуални подаци се конвертују у нумерички формат који модели машинског учења могу да разумеју. Сцикит-ЛЛМ нуди ГПТВеторизер за ово. Омогућава вам да трансформишете текст у векторе фиксне димензије користећи ГПТ моделе.
Ово можете постићи коришћењем терминске фреквенције-инверзне фреквенције документа.
# 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
Ево излаза:
Излаз представља векторизоване карактеристике ТФ-ИДФ за првих 5 узорака у скупу података.
Резимирање текста са Сцикит-ЛЛМ
Сажимање текста помаже у сажимању дела текста уз очување његових најкритичнијих информација. Сцикит-ЛЛМ нуди ГПТСуммаризер, који користи ГПТ модели да генерише сажете сажетке текста.
# Perform Text Summarization
summarizer = GPTSummarizer(openai_model="gpt-3.5-turbo", max_words=15)
summaries = summarizer.fit_transform(X_test)
print(summaries)
Излаз је следећи:
Горе наведено је резиме података теста.
Направите апликације на врху ЛЛМ-а
Сцикит-ЛЛМ отвара свет могућности за анализу текста са великим језичким моделима. Разумевање технологије која стоји иза великих језичких модела је кључно. То ће вам помоћи да разумете њихове предности и слабости које вам могу помоћи у изградњи ефикасних апликација на врху ове најсавременије технологије.