Изображение создано 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 и данным в социальных сетях и в печатных СМИ.
- SEO-контент и PR-распределение. Получите усиление сегодня.
- PlatoData.Network Вертикальный генеративный ИИ. Расширьте возможности себя. Доступ здесь.
- ПлатонАйСтрим. Интеллект Web3. Расширение знаний. Доступ здесь.
- ПлатонЭСГ. Углерод, чистые технологии, Энергия, Окружающая среда, Солнечная, Управление отходами. Доступ здесь.
- ПлатонЗдоровье. Биотехнологии и клинические исследования. Доступ здесь.
- Источник: https://www.kdnuggets.com/easily-integrate-llms-into-your-scikit-learn-workflow-with-scikit-llm?utm_source=rss&utm_medium=rss&utm_campaign=easily-integrate-llms-into-your-scikit-learn-workflow-with-scikit-llm