Логотип Зефирнет

Легко интегрируйте LLM в свой рабочий процесс Scikit-learn с помощью Scikit-LLM – KDnuggets

Дата:

Легко интегрируйте LLM в свой рабочий процесс Scikit-learn с помощью Scikit-LLM
Изображение создано DALL-E 2
 

Задачи анализа текста существуют уже некоторое время, поскольку потребности всегда есть. Исследования прошли долгий путь: от простой статистики описаний до классификации текста и расширенной генерации текста. С добавлением Большой Языковой Модели в наш арсенал наши рабочие задачи становятся еще доступнее.

Scikit-LLM — это пакет Python, разработанный для анализа текста с использованием возможностей LLM. Этот пакет выделялся тем, что мы могли интегрировать стандартный конвейер Scikit-Learn с Scikit-LLM.

Итак, что же это за пакет и как он работает? Давайте займемся этим.

Scikit-LLM — это пакет Python для улучшения задач анализа текстовых данных с помощью LLM. Он был разработан Битсбайт чтобы помочь соединить стандартную библиотеку Scikit-Learn и мощь языковой модели. Scikit-LLM создал свой API, похожий на библиотеку SKlearn, поэтому у нас не возникает особых проблем с его использованием.

Установка

Чтобы использовать пакет, нам необходимо их установить. Для этого вы можете использовать следующий код.

pip install scikit-llm

 

На момент написания этой статьи Scikit-LLM совместим только с некоторыми моделями OpenAI и GPT4ALL. Вот почему мы будем работать только с моделью OpenAI. Однако вы можете использовать модель GPT4ALL, предварительно установив компонент.

pip install scikit-llm[gpt4all]

 

После установки необходимо настроить ключ OpenAI для доступа к моделям LLM.

from skllm.config import SKLLMConfig

SKLLMConfig.set_openai_key("")
SKLLMConfig.set_openai_org("")

Пробуем Scikit-LLM

Давайте попробуем некоторые возможности Scikit-LLM с установленной средой. Одна из способностей, которыми обладают LLM, — выполнять классификацию текста без повторного обучения, которую мы называем Zero-Shot. Однако сначала мы бы попробовали текстовую классификацию «Несколько снимков» с выборочными данными.

from skllm import ZeroShotGPTClassifier
from skllm.datasets import get_classification_dataset


#label: Positive, Neutral, Negative
X, y = get_classification_dataset()


#Initiate the model with GPT-3.5
clf = ZeroShotGPTClassifier(openai_model="gpt-3.5-turbo")
clf.fit(X, y)
labels = clf.predict(X)

 

Вам нужно только предоставить текстовые данные в переменной X и метку y в наборе данных. В этом случае метка состоит из настроения: положительного, нейтрального или отрицательного. 

Как видите, процесс аналогичен использованию метода подгонки в пакете Scikit-Learn. Однако мы уже знаем, что Zero-Shot не обязательно требует набора данных для обучения. Вот почему мы можем предоставлять метки без обучающих данных.

X, _ = get_classification_dataset()

clf = ZeroShotGPTClassifier()
clf.fit(None, ["positive", "negative", "neutral"])
labels = clf.predict(X)

 

Это также можно расширить в случаях классификации по нескольким меткам, которые вы можете увидеть в следующем коде.

from skllm import MultiLabelZeroShotGPTClassifier
from skllm.datasets import get_multilabel_classification_dataset
X, _ = get_multilabel_classification_dataset()
candidate_labels = [
    "Quality",
    "Price",
    "Delivery",
    "Service",
    "Product Variety",
    "Customer Support",
    "Packaging",,
]
clf = MultiLabelZeroShotGPTClassifier(max_labels=4)
clf.fit(None, [candidate_labels])
labels = clf.predict(X)

Что удивительно в Scikit-LLM, так это то, что он позволяет пользователю расширить возможности LLM на типичный конвейер Scikit-Learn. 

Scikit-LLM в конвейере машинного обучения

В следующем примере я покажу, как мы можем запустить Scikit-LLM в качестве векторизатора и использовать XGBoost в качестве классификатора модели. Мы также включим эти шаги в конвейер модели.

Сначала мы загрузим данные и запустим кодировщик меток для преобразования данных метки в числовое значение.

from sklearn.preprocessing import LabelEncoder

X, y = get_classification_dataset()

le = LabelEncoder()
y_train_enc = le.fit_transform(y_train)
y_test_enc = le.transform(y_test)

 

Далее мы определим конвейер для векторизации и подбора модели. Мы можем сделать это с помощью следующего кода.

from sklearn.pipeline import Pipeline
from xgboost import XGBClassifier
from skllm.preprocessing import GPTVectorizer

steps = [("GPT", GPTVectorizer()), ("Clf", XGBClassifier())]
clf = Pipeline(steps)

#Fitting the dataset
clf.fit(X_train, y_train_enc)

 

Наконец, мы можем выполнить прогнозирование с помощью следующего кода.

pred_enc = clf.predict(X_test)
preds = le.inverse_transform(pred_enc)

 

Как мы видим, мы можем использовать Scikit-LLM и XGBoost в рамках конвейера Scikit-Learn. Объединение всех необходимых пакетов сделает наш прогноз еще более убедительным.

С Scikit-LLM по-прежнему можно выполнять различные задачи, включая точную настройку модели, о которой я предлагаю вам ознакомиться с документацией, чтобы узнать больше. Вы также можете использовать модель с открытым исходным кодом из GPT4ALL если необходимо.

Scikit-LLM — это пакет Python, который позволяет выполнять задачи анализа текстовых данных Scikit-Learn с помощью LLM. В этой статье мы обсудили, как мы используем Scikit-LLM для классификации текста и объединяем их в конвейер машинного обучения.
 
 

Корнелиус Юдха Виджая является помощником менеджера по науке о данных и автором данных. Работая полный рабочий день в Allianz Indonesia, он любит делиться советами по Python и данным в социальных сетях и в печатных СМИ.

Spot_img

Последняя разведка

Spot_img