Scikit-LLM を使用して LLM を Scikit-learn ワークフローに簡単に統合 - KDnuggets

Scikit-LLM を使用して LLM を Scikit-learn ワークフローに簡単に統合 – KDnuggets

ソースノード: 3030440

Scikit-LLM を使用して LLM を Scikit-learn ワークフローに簡単に統合
DALL-E 2 によって生成された画像
 

テキスト分析タスクは、ニーズが常に存在するため、しばらく前から存在しています。研究は、単純な記述統計からテキスト分類、高度なテキスト生成まで、長い道のりを歩んできました。私たちの武器に大規模言語モデルが追加されたことで、私たちの作業タスクはさらにアクセスしやすくなりました。

Scikit-LLM は、LLM の機能を利用したテキスト分析アクティビティのために開発された Python パッケージです。このパッケージは、標準の Scikit-Learn パイプラインを Scikit-LLM と統合できるという点で際立っています。

では、このパッケージは何であり、どのように機能するのでしょうか?それでは始めてみましょう。

Scikit-LLM は、LLM を介してテキスト データ分析タスクを強化する Python パッケージです。開発したのは、 ビーツバイト 標準の Scikit-Learn ライブラリと言語モデルの力を橋渡しするのに役立ちます。 Scikit-LLM は、SKlearn ライブラリに似た API を作成したため、使用するのにそれほど問題はありません。

インストール

パッケージを使用するには、パッケージをインストールする必要があります。これを行うには、次のコードを使用できます。

pip install scikit-llm

 

この記事の執筆時点では、Scikit-LLM は一部の OpenAI および GPT4ALL モデルとのみ互換性があります。そのため、OpenAI モデルのみを使用することになります。ただし、コンポーネントを最初にインストールすることで GPT4ALL モデルを使用できます。

pip install scikit-llm[gpt4all]

 

インストール後、LLM モデルにアクセスするために OpenAI キーを設定する必要があります。

from skllm.config import SKLLMConfig

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

Scikit-LLM を試してみる

環境を設定して Scikit-LLM の機能をいくつか試してみましょう。 LLM が持つ能力の XNUMX つは、再トレーニングなしでテキスト分類を実行することであり、これをゼロショットと呼びます。ただし、最初はサンプル データを使用して Few-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 パイプラインに拡張できることです。 

ML パイプラインの 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-Learn パイプラインで Scikit-LLM と XGBoost を使用できます。必要なパッケージをすべて組み合わせると、予測がさらに強力になります。

モデルの微調整など、Scikit-LLM を使用して実行できるさまざまなタスクがまだあります。詳しくは、ドキュメントを確認することをお勧めします。次のオープンソース モデルを使用することもできます。 GPT4ALL 必要であれば。

Scikit-LLM は、LLM を使用した Scikit-Learn テキスト データ分析タスクを強化する Python パッケージです。この記事では、テキスト分類に Scikit-LLM を使用し、それらを機械学習パイプラインに組み合わせる方法について説明しました。
 
 

コーネリアス・ユダ・ウィジャヤ は、データ サイエンス アシスタント マネージャー兼データ ライターです。 Allianz Indonesia でフルタイムで働いている間、彼はソーシャル メディアやライティング メディアを通じて Python とデータのヒントを共有するのが大好きです。

タイムスタンプ:

より多くの KDナゲット