Güçlü dil modelleri + Scikit-learn = Scikit-LLM. Bu kütüphanenin yardımıyla hareket halindeyken metin analizi görevlerini gerçekleştirin.

Scikit-LLM, büyük dil modellerinin (LLM'ler) scikit-learn çerçevesine entegre edilmesine yardımcı olan bir Python paketidir. Metin analizi görevlerini gerçekleştirmeye yardımcı olur. Scikit-learn'e aşina iseniz Scikit-LLM ile çalışmanız daha kolay olacaktır.

Scikit-LLM'nin scikit-learn'in yerini almadığını unutmamak önemlidir. scikit-learn genel amaçlı bir makine öğrenimi kütüphanesidir ancak Scikit-LLM özellikle metin analizi görevleri için tasarlanmıştır.

Scikit-LLM'ye Başlarken

Başlamak için Scikit-LLM, kitaplığı yüklemeniz ve API anahtarınızı yapılandırmanız gerekir. Kütüphaneyi kurmak için IDE'nizi açın ve yeni bir sanal ortam yarat. Bu, olası kitaplık sürümü çakışmalarını önlemeye yardımcı olacaktır. Daha sonra terminalde aşağıdaki komutu çalıştırın.

pip install scikit-llm 

Bu komut Scikit-LLM'yi ve gerekli bağımlılıklarını kuracaktır.

API anahtarınızı yapılandırmak için LLM sağlayıcınızdan bir tane almanız gerekir. OpenAI API anahtarını edinmek için şu adımları izleyin:

instagram viewer

Şuraya ilerleyin: OpenAI API sayfası. Daha sonra pencerenin sağ üst köşesinde bulunan profilinize tıklayın. Seçme API anahtarlarını görüntüle. Bu sizi şuraya götürecek: API anahtarları sayfa.

Üzerinde API anahtarları sayfasında, tıklayın Yeni gizli anahtar oluştur düğme.

API anahtarınızı adlandırın ve Gizli anahtar oluştur Anahtarı oluşturmak için düğmeye basın. Oluşturulduktan sonra, OpenAI anahtarı tekrar göstermeyeceğinden anahtarı kopyalayıp güvenli bir yerde saklamanız gerekir. Kaybederseniz yeni bir tane oluşturmanız gerekecektir.

Kaynak kodunun tamamı şu adreste mevcuttur: GitHub deposu.

Artık API anahtarınıza sahip olduğunuza göre IDE'nizi açın ve içe aktarın SKLLMConfig Scikit-LLM kütüphanesinden sınıf. Bu sınıf, büyük dil modellerinin kullanımına ilişkin yapılandırma seçeneklerini ayarlamanıza olanak tanır.

from skllm.config import SKLLMConfig

Bu sınıf, OpenAI API anahtarınızı ve organizasyon ayrıntılarınızı ayarlamanızı bekliyor.

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

Kuruluş kimliği ve adı aynı değil. Kuruluş Kimliği, kuruluşunuzun benzersiz bir tanımlayıcısıdır. Kuruluş kimliğinizi almak için şuraya ilerleyin: OpenAI Organizasyonu ayarlar sayfasına gidin ve kopyalayın. Artık Scikit-LLM ile geniş dil modeli arasında bir bağlantı kurdunuz.

Scikit-LLM, kullandıkça öde planına sahip olmanızı gerektirir. Bunun nedeni, ücretsiz deneme OpenAI hesabının dakika başına üç isteklik hız sınırına sahip olmasıdır ve bu Scikit-LLM için yeterli değildir.

Ücretsiz deneme hesabını kullanmaya çalışmak, metin analizi yaparken aşağıdakine benzer bir hataya yol açacaktır.

Oran limitleri hakkında daha fazla bilgi edinmek için. Şuraya ilerleyin: OpenAI hız limitleri sayfası.

LLM sağlayıcısı yalnızca OpenAI ile sınırlı değildir. Diğer LLM sağlayıcılarını da kullanabilirsiniz.

Gerekli Kitaplıkları İçe Aktarma ve Veri Kümesini Yükleme

Veri kümesini yüklemek için kullanacağınız pandaları içe aktarın. Ayrıca Scikit-LLM ve scikit-learn'den gerekli sınıfları içe aktarın.

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

Ardından, metin analizi yapmak istediğiniz veri kümesini yükleyin. Bu kod IMDB filmleri veri kümesini kullanır. Ancak kendi veri kümenizi kullanmak için ince ayar yapabilirsiniz.

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

Veri kümesinin yalnızca ilk 100 satırının kullanılması zorunlu değildir. Veri kümenizin tamamını kullanabilirsiniz.

Daha sonra özellikleri ve etiket sütunlarını çıkarın. Daha sonra veri kümenizi eğitim ve test kümelerine bölün.

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

Tür sütunu tahmin etmek istediğiniz etiketleri içerir.

Scikit-LLM ile Sıfır Atışlı Metin Sınıflandırması

Sıfır atışlı metin sınıflandırması, büyük dil modellerinin sunduğu bir özelliktir. Etiketli veriler üzerinde açık bir eğitime ihtiyaç duymadan metni önceden tanımlanmış kategorilere göre sınıflandırır. Bu yetenek, metni model eğitimi sırasında tahmin etmediğiniz kategorilere ayırmanız gereken görevlerle uğraşırken çok kullanışlıdır.

Scikit-LLM'yi kullanarak sıfır atışlı metin sınıflandırması gerçekleştirmek için ZeroShotGPTSınıflandırıcı sınıf.

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

Çıktı aşağıdaki gibidir:

Sınıflandırma raporu, modelin tahmin etmeye çalıştığı her etiket için ölçümler sağlar.

Scikit-LLM ile Çok Etiketli Zero Shot Metin Sınıflandırması

Bazı senaryolarda tek bir metin aynı anda birden fazla kategoriye ait olabilir. Geleneksel sınıflandırma modelleri bununla mücadele ediyor. Scikit-LLM ise bu sınıflandırmayı mümkün kılmaktadır. Çok etiketli sıfır atışlı metin sınıflandırması, tek bir metin örneğine birden fazla açıklayıcı etiket atamada çok önemlidir.

Kullanmak MultiLabelZeroShotGPTSınıflandırıcı Her metin örneği için hangi etiketlerin uygun olduğunu tahmin etmek.

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

Yukarıdaki kodda metninizin ait olabileceği aday etiketleri tanımlarsınız.

Çıktı aşağıda gösterildiği gibidir:

Bu rapor, modelinizin çoklu etiket sınıflandırmasındaki her etiket için ne kadar iyi performans gösterdiğini anlamanıza yardımcı olur.

Scikit-LLM ile Metin Vektörizasyonu

Metin vektörleştirmesinde metin verileri, makine öğrenimi modellerinin anlayabileceği sayısal bir formata dönüştürülür. Scikit-LLM bunun için GPTVectorizer'ı sunuyor. GPT modellerini kullanarak metni sabit boyutlu vektörlere dönüştürmenize olanak tanır.

Bunu Terim Frekansı Ters Belge Frekansı kullanarak başarabilirsiniz.

# 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

İşte çıktı:

Çıktı, veri kümesindeki ilk 5 örnek için TF-IDF vektörleştirilmiş özellikleri temsil eder.

Scikit-LLM ile Metin Özetleme

Metin özetleme, en kritik bilgileri korurken bir metin parçasını özetlemeye yardımcı olur. Scikit-LLM, GPTSummarizer'ı sunuyor. GPT modelleri Kısa metin özetleri oluşturmak için.

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

Çıktı aşağıdaki gibidir:

Yukarıdakiler test verilerinin bir özetidir.

LLM'lerin Üstüne Uygulamalar Oluşturun

Scikit-LLM, geniş dil modelleriyle metin analizi için bir olasılıklar dünyasının kapılarını açıyor. Büyük dil modellerinin ardındaki teknolojiyi anlamak çok önemlidir. Bu son teknolojiye dayanarak verimli uygulamalar geliştirmenize yardımcı olabilecek güçlü ve zayıf yönlerini anlamanıza yardımcı olacaktır.