Ισχυρά μοντέλα γλώσσας + Scikit-learn = Scikit-LLM. Εκτελέστε εργασίες ανάλυσης κειμένου εν κινήσει με τη βοήθεια αυτής της βιβλιοθήκης.
Το Scikit-LLM είναι ένα πακέτο Python που βοηθά στην ενσωμάτωση μοντέλων μεγάλων γλωσσών (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. Στη συνέχεια, κάντε κλικ στο προφίλ σας που βρίσκεται στην επάνω δεξιά γωνία του παραθύρου. Επιλέγω Προβολή κλειδιών API. Αυτό θα σας οδηγήσει στο Κλειδιά API σελίδα.
Στο Κλειδιά API σελίδα, κάντε κλικ στο Δημιουργήστε νέο μυστικό κλειδί κουμπί.
Ονομάστε το κλειδί API και κάντε κλικ στο Δημιουργία μυστικού κλειδιού κουμπί για να δημιουργήσετε το κλειδί. Μετά τη δημιουργία, πρέπει να αντιγράψετε το κλειδί και να το αποθηκεύσετε σε ασφαλές μέρος, καθώς το OpenAI δεν θα εμφανίσει ξανά το κλειδί. Εάν το χάσετε, θα χρειαστεί να δημιουργήσετε ένα νέο.
Ο πλήρης πηγαίος κώδικας είναι διαθέσιμος σε α Αποθετήριο GitHub.
Τώρα που έχετε το κλειδί API, ανοίξτε το IDE και εισαγάγετε SKLLMCconfig τάξη από τη βιβλιοθήκη 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 και του μοντέλου μεγάλης γλώσσας.
Το Scikit-LLM απαιτεί από εσάς να έχετε ένα πρόγραμμα pay-as-you-go. Αυτό συμβαίνει επειδή ο δωρεάν δοκιμαστικός λογαριασμός OpenAI έχει ένα όριο χρέωσης τριών αιτημάτων ανά λεπτό, το οποίο δεν επαρκεί για το Scikit-LLM.
Η προσπάθεια χρήσης του δωρεάν δοκιμαστικού λογαριασμού θα οδηγήσει σε σφάλμα παρόμοιο με το παρακάτω κατά την εκτέλεση ανάλυσης κειμένου.
Για να μάθετε περισσότερα σχετικά με τα όρια τιμών. Προχωρήστε στο Σελίδα ορίων ποσοστού OpenAI.
Ο πάροχος LLM δεν περιορίζεται μόνο στο OpenAI. Μπορείτε να χρησιμοποιήσετε και άλλους παρόχους LLM.
Εισαγωγή των απαιτούμενων βιβλιοθηκών και φόρτωση του συνόλου δεδομένων
Εισαγάγετε panda που θα χρησιμοποιήσετε για να φορτώσετε το σύνολο δεδομένων. Επίσης, από το 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)
ο Είδος στήλη περιέχει τις ετικέτες που θέλετε να προβλέψετε.
Ταξινόμηση κειμένου Zero-Shot με 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 προσφέρει το 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
Εδώ είναι η έξοδος:
Η έξοδος αντιπροσωπεύει τα διανυσματικά χαρακτηριστικά TF-IDF για τα πρώτα 5 δείγματα του συνόλου δεδομένων.
Σύνοψη κειμένου με Scikit-LLM
Η σύνοψη κειμένου βοηθά στη συμπύκνωση ενός τμήματος κειμένου, διατηρώντας παράλληλα τις πιο κρίσιμες πληροφορίες του. Το Scikit-LLM προσφέρει το GPTSsummarizer, το οποίο χρησιμοποιεί τα μοντέλα 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 ανοίγει έναν κόσμο δυνατοτήτων για ανάλυση κειμένου με μεγάλα γλωσσικά μοντέλα. Η κατανόηση της τεχνολογίας πίσω από μεγάλα γλωσσικά μοντέλα είναι ζωτικής σημασίας. Θα σας βοηθήσει να κατανοήσετε τα δυνατά και τα αδύνατα σημεία τους που μπορούν να σας βοηθήσουν να δημιουργήσετε αποτελεσματικές εφαρμογές πάνω από αυτήν την τεχνολογία αιχμής.