خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه استفاده از Scikit-LLM برای تجزیه و تحلیل متن با مدل های زبان بزرگ

مدل های زبان قدرتمند + Scikit-learn = Scikit-LLM. با کمک این کتابخانه کارهای تجزیه و تحلیل متن را در حال حرکت انجام دهید.

Scikit-LLM یک بسته پایتون است که به ادغام مدل های زبان بزرگ (LLM) در چارچوب scikit-learn کمک می کند. این به انجام وظایف تجزیه و تحلیل متن کمک می کند. اگر با scikit-learn آشنا هستید، کار با Scikit-LLM برای شما راحت تر خواهد بود.

توجه به این نکته مهم است که Scikit-LLM جایگزین scikit-learn نمی شود. scikit-learn یک کتابخانه یادگیری ماشینی همه منظوره است اما Scikit-LLM به طور خاص برای کارهای تجزیه و تحلیل متن طراحی شده است.

شروع با Scikit-LLM

برای شروع کار با Scikit-LLM، باید کتابخانه را نصب کرده و کلید API خود را پیکربندی کنید. برای نصب کتابخانه، IDE خود را باز کرده و یک محیط مجازی جدید ایجاد کنید. این به جلوگیری از هرگونه تضاد احتمالی نسخه کتابخانه کمک می کند. سپس دستور زیر را در ترمینال اجرا کنید.

pip install scikit-llm

این دستور Scikit-LLM و وابستگی های مورد نیاز آن را نصب می کند.

برای پیکربندی کلید API خود، باید یکی را از ارائه دهنده LLM خود تهیه کنید. برای به دست آوردن کلید OpenAI API، مراحل زیر را دنبال کنید:

به صفحه OpenAI API بروید. سپس روی نمایه خود که در گوشه سمت راست بالای پنجره قرار دارد کلیک کنید. View keys API را انتخاب کنید. این شما را به صفحه کلیدهای API هدایت می کند.

صفحه کلید OpenAI API

در صفحه کلیدهای API، روی دکمه Create new secret key کلیک کنید.

صفحه تولید کلید OpenAI API

کلید API خود را نام ببرید و بر روی دکمه ایجاد کلید مخفی کلیک کنید تا کلید تولید شود. پس از تولید، باید کلید را کپی کرده و در مکانی امن ذخیره کنید زیرا OpenAI دوباره کلید را نمایش نمی دهد. اگر آن را گم کردید، باید یک مورد جدید ایجاد کنید.

کد منبع کامل در یک مخزن GitHub موجود است.

اکنون که کلید API خود را دارید، IDE خود را باز کرده و کلاس SKLLMConfig را از کتابخانه Scikit-LLM وارد کنید. این کلاس به شما امکان می دهد گزینه های پیکربندی مربوط به استفاده از مدل های زبان بزرگ را تنظیم کنید.

from skllm.config import SKLLMConfig

این کلاس از شما انتظار دارد که کلید OpenAI API و جزئیات سازمان خود را تنظیم کنید.

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

شناسه سازمان و نام یکسان نیستند. شناسه سازمان یک شناسه منحصر به فرد سازمان شما است. برای دریافت شناسه سازمان خود، به صفحه تنظیمات سازمان OpenAI بروید و آن را کپی کنید. شما اکنون یک ارتباط بین Scikit-LLM و مدل زبان بزرگ برقرار کرده اید.

مطلب مرتبط:   نحوه یافتن راهنما برای توابع داخلی در JES

Scikit-LLM از شما می‌خواهد که یک برنامه پرداختی داشته باشید. این به این دلیل است که حساب OpenAI آزمایشی رایگان دارای محدودیت نرخ سه درخواست در دقیقه است که برای Scikit-LLM کافی نیست.

تلاش برای استفاده از حساب آزمایشی رایگان هنگام انجام تجزیه و تحلیل متن منجر به خطای مشابه زیر می شود.

خطای محدودیت نرخ Scikit-LLM

برای کسب اطلاعات بیشتر در مورد محدودیت نرخ. به صفحه محدودیت نرخ OpenAI بروید.

ارائه دهنده LLM فقط به OpenAI محدود نمی شود. می توانید از سایر ارائه دهندگان LLM نیز استفاده کنید.

وارد کردن کتابخانه های مورد نیاز و بارگذاری مجموعه داده ها

پانداهایی را وارد کنید که از آنها برای بارگیری مجموعه داده استفاده خواهید کرد. همچنین از Scikit-LLM و scikit-learn کلاس های مورد نیاز را وارد کنید.

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

سپس مجموعه داده ای را که می خواهید تحلیل متن را روی آن انجام دهید بارگیری کنید. این کد از مجموعه داده فیلم های IMDB استفاده می کند. با این حال، می توانید آن را برای استفاده از مجموعه داده های خود تغییر دهید.

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

ستون ژانر حاوی برچسب هایی است که می خواهید پیش بینی کنید.

مطلب مرتبط:   چگونه یک برنامه CRUD لیست کار بسازیم و وضعیت های آن را در React مدیریت کنیم

طبقه بندی متن صفر شات با Scikit-LLM

طبقه بندی متن صفر شات یکی از ویژگی های ارائه شده توسط مدل های زبان بزرگ است. متن را به دسته های از پیش تعریف شده بدون نیاز به آموزش صریح بر روی داده های برچسب دار طبقه بندی می کند. این قابلیت برای انجام کارهایی که باید متن را به دسته‌هایی که در طول آموزش مدل پیش‌بینی نکرده‌اید طبقه‌بندی کنید بسیار مفید است.

برای انجام طبقه بندی متن صفر شات با استفاده از Scikit-LLM، از کلاس ZeroShotGPTClassifier استفاده کنید.

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

خروجی به صورت زیر است:

گزارش طبقه بندی متن صفر داغ

گزارش طبقه بندی معیارهایی را برای هر برچسبی که مدل سعی در پیش بینی آنها دارد ارائه می کند.

طبقه بندی متن صفر شات چند برچسبی با Scikit-LLM

در برخی سناریوها، یک متن واحد ممکن است به طور همزمان به چندین دسته تعلق داشته باشد. مدل های طبقه بندی سنتی با این مشکل دست و پنجه نرم می کنند. از طرف دیگر Scikit-LLM این طبقه بندی را امکان پذیر می کند. طبقه بندی متن صفر شات چند برچسبی در تخصیص چندین برچسب توصیفی به یک نمونه متنی بسیار مهم است.

از MultiLabelZeroShotGPTClassifier برای پیش بینی اینکه کدام برچسب برای هر نمونه متن مناسب است استفاده کنید.

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

در کد بالا، برچسب های نامزدی را که ممکن است متن شما به آن تعلق داشته باشد، تعریف می کنید.

مطلب مرتبط:   با پردازش زبان طبیعی یک طبقه‌بندی کننده هرزنامه از ابتدا بسازید

خروجی مطابق شکل زیر است:

گزارش طبقه بندی چند برچسبی Scikit-LLM

این گزارش به شما کمک می کند تا بفهمید مدل شما برای هر برچسب در طبقه بندی چند برچسبی چقدر خوب عمل می کند.

بردارسازی متن با Scikit-LLM

در بردارسازی متن، داده‌های متنی به یک قالب عددی تبدیل می‌شوند که مدل‌های یادگیری ماشینی می‌توانند آن را درک کنند. Scikit-LLM GPTVetorizer را برای این کار ارائه می دهد. این به شما امکان می دهد متن را با استفاده از مدل های GPT به بردارهایی با ابعاد ثابت تبدیل کنید.

شما می توانید با استفاده از فرکانس فرکانس معکوس سند به این هدف برسید.

# 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

در اینجا خروجی است:

خروجی Scikit-LLM که ویژگی های بردار TF-IDF را نشان می دهد

خروجی نشان دهنده ویژگی های بردار TF-IDF برای 5 نمونه اول در مجموعه داده است.

خلاصه سازی متن با Scikit-LLM

خلاصه سازی متن به فشرده سازی یک قطعه متن کمک می کند و در عین حال حیاتی ترین اطلاعات آن را حفظ می کند. Scikit-LLM GPTSummarizer را ارائه می دهد که از مدل های GPT برای تولید خلاصه های مختصر از متن استفاده می کند.

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

خروجی به صورت زیر است:

خروجی خلاصه سازی مجموعه داده Scikit-LLM

موارد فوق خلاصه ای از داده های آزمون است.

ساخت برنامه های کاربردی در بالای LLM

Scikit-LLM دنیایی از امکانات را برای تجزیه و تحلیل متن با مدل های زبان بزرگ باز می کند. درک فناوری پشت مدل های زبان بزرگ بسیار مهم است. این به شما کمک می کند تا نقاط قوت و ضعف آنها را درک کنید که می تواند به شما در ایجاد برنامه های کاربردی کارآمد در بالای این فناوری پیشرفته کمک کند.