Lär Er AI med Python · Lektion

Textklassificering med BERT

HuggingFace transformers, AutoTokenizer, AutoModelForSequenceClassification, finjustering.

Lektion 3 av 413 steg

Textklassificering med BERT är en gratis lektion i Lär Er AI med Python på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Begränsningarna hos statiska embeddingar

Word2Vec och GloVe ger varje ord en enda fast vektor. Men "bank" betyder olika saker i "river bank" och "savings bank". Kontextuella modeller som BERT löser detta.

Vad är BERT

BERT är en transformer-modell som läser en hel mening på en gång och skapar kontextmedvetna embeddingar. Den är förtränad på enorma textmängder och kan finjusteras för uppgifter som klassificering.

Biblioteket transformers från Hugging Face

Biblioteket transformers ger enkel åtkomst till BERT och tusentals förtränade modeller, med enhetliga klasser för tokeniserare och modeller.

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 laddar rätt tokeniserare för en modell. Den delar upp text i delordstoken och mappar dem till de ID:n som modellen förväntar sig.

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
print(tokenizer.tokenize("unbelievable"))
# subwords like ["un", "##bel", "##ievable"]

AutoModelForSequenceClassification

AutoModelForSequenceClassification laddar BERT med ett klassificeringshuvud ovanpå och producerar en poäng per klass för hela sekvensen.

from transformers import AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained(
    "distilbert-base-uncased-finetuned-sst-2-english"
)

Tokenisera indata

Anropa tokeniseraren på texten med truncation, padding och return_tensors för att få tensorer som är redo för modellen. Trunkering begränsar längden på lång indata, och utfyllnad justerar längderna i en batch.

inputs = tokenizer(
    "This movie was fantastic!",
    truncation=True,
    padding=True,
    return_tensors="pt",
)
print(inputs["input_ids"].shape)

Specialtokenerna

BERT lägger automatiskt till specialtokener: [CLS] i början (dess dolda tillstånd sammanfattar sekvensen) och [SEP] mellan eller efter meningar. Klassificeraren läser från representationen av [CLS].

Kör modellen

Skicka de tokeniserade indata till modellen för att få logits, alltså råa, icke-normaliserade klasspoäng.

import torch

with torch.no_grad():
    outputs = model(**inputs)
logits = outputs.logits
print(logits)

Från logits till prediktioner

Tillämpa softmax på logits för att få sannolikheter och använd sedan argmax för att få indexet för den predikterade klassen. Mappa indexet till en etikett.

import torch

probs = torch.softmax(logits, dim=-1)
pred = torch.argmax(probs, dim=-1).item()
print(model.config.id2label[pred])

Finjustera för er uppgift

För en anpassad datamängd finjusterar Ni BERT genom att träna klassificeringshuvudet (och vid behov hela modellen) på era etiketterade exempel. API:t Trainer hanterar träningsslingan.

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

Genvägen med pipeline

För snabb inferens samlar hjälpfunktionen pipeline tokenisering, körning och avkodning i ett enda anrop, vilket passar utmärkt för prototyper.

from transformers import pipeline

clf = pipeline("sentiment-analysis")
print(clf("I love this product!"))
# [{"label": "POSITIVE", "score": 0.99...}]

Snabbtest

Testa era kunskaper om BERT.

Sammanfattning

Sammanfattning: BERT skapar kontextmedvetna embeddingar med hjälp av transformers. Använd AutoTokenizer för att tokenisera med truncation/padding/return_tensors och AutoModelForSequenceClassification för att få logits. Konvertera logits genom att först använda softmax och sedan argmax. Finjustera med Trainer eller skapa snabbt en prototyp med pipeline.

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
53
Lektioner
225

Vanliga frågor

Är lektionen ”Textklassificering med BERT” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”Textklassificering med BERT”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Vad lär jag mig i ”Textklassificering med BERT”?

HuggingFace transformers, AutoTokenizer, AutoModelForSequenceClassification, finjustering. Ni övar på Lär Er AI med Python med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lär Er AI med Python?

Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Textklassificering med BERT”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lär Er AI med Python-lektionen?

Ja. Varje Lär Er AI med Python-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Word2Vec: Skip-gram och CBOW
  2. GloVe- och FastText-embeddingar
  3. Textklassificering med BERT
  4. Semantisk likhet och menings-embeddingar
← Tillbaka till Lär Er AI med Python