0Pricing
Learn AI with Python · Lekcja

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

  1. Word2Vec: Skip-gram i CBOW
  2. Osadzenia GloVe i FastText
  3. Klasyfikacja tekstu za pomocą BERT
  4. Podobieństwo semantyczne i osadzenia zdań
← Powrót do Learn AI with Python