Klasyfikacja tekstu za pomocą BERT
Transformers HuggingFace, AutoTokenizer, AutoModelForSequenceClassification, dostrajanie.
Klasyfikacja tekstu za pomocą BERT to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Ograniczenia statycznych embeddingów
Word2Vec i GloVe przypisują każdemu słowu jeden stały wektor. Jednak słowo "bank" ma różne znaczenia w wyrażeniach "river bank" i "savings bank". Modele kontekstowe, takie jak BERT, rozwiązują ten problem.
Czym jest BERT
BERT to model transformerowy, który odczytuje całe zdanie jednocześnie i tworzy embeddingi uwzględniające kontekst. Wstępnie wytrenowany na ogromnych zbiorach tekstu może być dostrajany do zadań takich jak klasyfikacja.
Biblioteka transformers firmy Hugging Face
Biblioteka transformers zapewnia łatwy dostęp do BERT i tysięcy wstępnie wytrenowanych modeli, oferując spójne klasy tokenizerów i modeli.
from transformers import AutoTokenizer, AutoModelForSequenceClassification
name = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(name)
model = AutoModelForSequenceClassification.from_pretrained(name)AutoTokenizer
AutoTokenizer wczytuje właściwy tokenizer dla danego modelu. Dzieli tekst na tokeny podwyrazowe i mapuje je na identyfikatory oczekiwane przez model.
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
print(tokenizer.tokenize("unbelievable"))
# subwords like ["un", "##bel", "##ievable"]AutoModelForSequenceClassification
AutoModelForSequenceClassification wczytuje BERT z umieszczoną na nim głową klasyfikacyjną, zwracając jeden wynik dla każdej klasy w całej sekwencji.
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(
"distilbert-base-uncased-finetuned-sst-2-english"
)Tokenizowanie danych wejściowych
Należy wywołać tokenizer dla tekstu z parametrami truncation, padding i return_tensors, aby uzyskać tensory gotowe dla modelu. Obcinanie ogranicza długość długich danych wejściowych, a dopełnianie wyrównuje długości w partii.
inputs = tokenizer(
"This movie was fantastic!",
truncation=True,
padding=True,
return_tensors="pt",
)
print(inputs["input_ids"].shape)Tokeny specjalne
BERT automatycznie dodaje tokeny specjalne: [CLS] na początku (jego stan ukryty podsumowuje sekwencję) oraz [SEP] między zdaniami lub po nich. Klasyfikator korzysta z reprezentacji [CLS].
Uruchamianie modelu
Należy przekazać stokenizowane dane wejściowe do modelu, aby uzyskać logity, czyli surowe, nieznormalizowane wyniki klas.
import torch
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
print(logits)Od logitów do predykcji
Należy zastosować softmax do logitów, aby uzyskać prawdopodobieństwa, a następnie argmax, aby wyznaczyć indeks przewidywanej klasy. Na koniec należy przypisać temu indeksowi etykietę.
import torch
probs = torch.softmax(logits, dim=-1)
pred = torch.argmax(probs, dim=-1).item()
print(model.config.id2label[pred])Dostrajanie do własnego zadania
W przypadku niestandardowego zbioru danych należy dostroić BERT, trenując głowę klasyfikacyjną (i opcjonalnie cały model) na oznaczonych przykładach. Interfejs API Trainer obsługuje pętlę trenowania.
from transformers import Trainer, TrainingArguments
args = TrainingArguments(output_dir="out", num_train_epochs=3)
trainer = Trainer(model=model, args=args, train_dataset=train_ds)
trainer.train()Skrót w postaci pipeline
W przypadku szybkiego wnioskowania pomocniczy pipeline łączy tokenizowanie, uruchamianie modelu i dekodowanie w jednym wywołaniu, dzięki czemu idealnie nadaje się do tworzenia prototypów.
from transformers import pipeline
clf = pipeline("sentiment-analysis")
print(clf("I love this product!"))
# [{"label": "POSITIVE", "score": 0.99...}]Szybkie sprawdzenie
Sprawdź swoją wiedzę o BERT.
Podsumowanie
Podsumowanie: BERT tworzy embeddingi uwzględniające kontekst za pomocą transformerów. Należy użyć AutoTokenizer do tokenizowania z parametrami truncation/padding/return_tensors oraz AutoModelForSequenceClassification do uzyskania logitów. Logity należy przekształcić za pomocą softmax, a następnie argmax. Model można dostrajać za pomocą Trainer lub szybko prototypować z użyciem pipeline.
Często zadawane pytania
Czy lekcja „Klasyfikacja tekstu za pomocą BERT” jest bezpłatna?
Tak — pełny tekst „Klasyfikacja tekstu za pomocą BERT” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Klasyfikacja tekstu za pomocą BERT”?
Transformers HuggingFace, AutoTokenizer, AutoModelForSequenceClassification, dostrajanie. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Klasyfikacja tekstu za pomocą BERT”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Word2Vec: Skip-gram i CBOW
- Osadzenia GloVe i FastText
- Klasyfikacja tekstu za pomocą BERT
- Podobieństwo semantyczne i osadzenia zdań