מודלים עוצמתיים של שפה + Scikit-learn = Scikit-LLM. בצע משימות ניתוח טקסט תוך כדי תנועה בעזרת ספרייה זו.
Scikit-LLM היא חבילת Python המסייעת לשלב מודלים של שפות גדולות (LLMs) בתוך מסגרת scikit-learn. זה עוזר בביצוע משימות ניתוח טקסט. אם אתה מכיר את scikit-learn, יהיה לך קל יותר לעבוד עם Scikit-LLM.
חשוב לציין ש-Scikit-LLM אינו מחליף את sikit-learn. scikit-learn היא ספריית למידת מכונה לשימוש כללי, אך Scikit-LLM תוכננה במיוחד עבור משימות ניתוח טקסט.
תחילת העבודה עם Scikit-LLM
כדי להתחיל עם סקיט-LLM, תצטרך להתקין את הספרייה ולהגדיר את מפתח ה-API שלך. כדי להתקין את הספרייה, פתח את ה-IDE שלך ו ליצור סביבה וירטואלית חדשה. זה יעזור למנוע התנגשויות פוטנציאליות של גרסת ספרייה. לאחר מכן, הפעל את הפקודה הבאה בטרמינל.
pip install scikit-llm
פקודה זו תתקין את Scikit-LLM ואת התלות הנדרשת שלו.
כדי להגדיר את מפתח ה-API שלך, עליך לרכוש אחד מספק ה-LLM שלך. כדי להשיג את מפתח ה-API של OpenAI, בצע את השלבים הבאים:
המשך אל דף OpenAI API. לאחר מכן לחץ על הפרופיל שלך הממוקם בפינה השמאלית העליונה של החלון. בחר הצג מפתחות API. זה ייקח אותך ל- מפתחות API עמוד.
על מפתחות API עמוד, לחץ על צור מפתח סודי חדש לַחְצָן.
תן שם למפתח ה-API שלך ולחץ על צור מפתח סודי לחצן כדי ליצור את המפתח. לאחר היצירה, עליך להעתיק את המפתח ולאחסן אותו במקום בטוח מכיוון ש-OpenAI לא יציג את המפתח שוב. אם תאבד אותו, תצטרך ליצור אחד חדש.
קוד המקור המלא זמין ב-a מאגר GitHub.
עכשיו כשיש לך את מפתח ה-API שלך, פתח את ה-IDE וייבא SKLLMConfig כיתה מספריית Scikit-LLM. מחלקה זו מאפשרת לך להגדיר אפשרויות תצורה הקשורות לשימוש בדגמי שפה גדולים.
from skllm.config import SKLLMConfig
מחלקה זו מצפה ממך להגדיר את מפתח ה-API של OpenAI ופרטי הארגון שלך.
# 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 למודל השפה הגדול.
Scikit-LLM דורש ממך תוכנית תשלום לפי שיטת העבודה. הסיבה לכך היא שלחשבון הניסיון בחינם OpenAI יש מגבלת קצב של שלוש בקשות לדקה שאינה מספיקה עבור Scikit-LLM.
ניסיון להשתמש בחשבון הניסיון החינמי יוביל לשגיאה דומה לזו שלמטה בעת ביצוע ניתוח טקסט.
למידע נוסף על מגבלות תעריפים. המשך אל דף מגבלות שיעורי OpenAI.
ספק ה-LLM אינו מוגבל רק ל-OpenAI. אתה יכול להשתמש גם בספקי LLM אחרים.
ייבוא הספריות הנדרשות וטעינת מערך הנתונים
ייבא פנדות שבהן תשתמש כדי לטעון את מערך הנתונים. כמו כן, מ-Scikit-LLM ומ-sikit-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)
ה ז'ָאנר העמודה מכילה את התוויות שברצונך לחזות.
סיווג טקסט אפס צילום עם 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))
הפלט הוא כדלקמן:
דוח הסיווג מספק מדדים עבור כל תווית שהמודל מנסה לחזות.
סיווג טקסט מרובה תווית Zero-Shot עם 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 מציעה את GPTVectorizer עבור זה. זה מאפשר לך להפוך טקסט לוקטורים בעלי ממדים קבועים באמצעות מודלים של 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
הנה הפלט:
הפלט מייצג את התכונות הווקטוריות של 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)
הפלט הוא כדלקמן:
האמור לעיל הוא סיכום של נתוני הבדיקה.
בניית יישומים על גבי לימודי LLM
Scikit-LLM פותחת עולם של אפשרויות לניתוח טקסט עם מודלים שפות גדולים. הבנת הטכנולוגיה שמאחורי מודלים של שפה גדולים היא חיונית. זה יעזור לך להבין את החוזקות והחולשות שלהם שיכולים לסייע לך בבניית יישומים יעילים על גבי טכנולוגיה חדשנית זו.