Oppikaa tekoälyä Pythonilla · Oppitunti

Tekstin luokittelu BERTillä

HuggingFace transformers, AutoTokenizer, AutoModelForSequenceClassification, hienosäätö.

Oppitunti 3/413 vaihetta

Tekstin luokittelu BERTillä on ilmainen Oppikaa tekoälyä Pythonilla-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Oppikaa tekoälyä Pythonilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Staattisten upotusten rajoitukset

Word2Vec ja GloVe antavat jokaiselle sanalle yhden kiinteän vektorin. Sana "bank" tarkoittaa kuitenkin eri asioita ilmauksissa "river bank" ja "savings bank". Asiayhteyden huomioivat mallit, kuten BERT, ratkaisevat tämän ongelman.

Mikä BERT on

BERT on transformer-malli, joka lukee koko virkkeen kerralla ja tuottaa asiayhteyden huomioivia upotuksia. Valtavalla tekstiaineistolla esikoulutettua mallia voidaan hienosäätää esimerkiksi luokittelutehtäviin.

Hugging Face transformers -kirjasto

transformers-kirjasto tarjoaa helpon pääsyn BERTiin ja tuhansiin esikoulutettuihin malleihin sekä yhdenmukaiset luokat tokenizereille ja malleille.

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 lataa mallille oikean tokenizerin. Se jakaa tekstin alisanoiksi eli tokeneiksi ja muuntaa ne mallin odottamiksi tunnisteiksi.

from transformers import AutoTokenizer

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

AutoModelForSequenceClassification

AutoModelForSequenceClassification lataa BERTin, jonka päälle on lisätty luokittelupää. Se tuottaa koko sekvenssille yhden pistemäärän kutakin luokkaa kohti.

from transformers import AutoModelForSequenceClassification

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

Syötteen tokenisointi

Kutsukaa tokenizeria tekstillänne käyttäen asetuksia truncation, padding ja return_tensors, jotta saatte mallille sopivat tensorit. Truncation rajoittaa pitkien syötteiden pituutta ja padding yhdenmukaistaa erän pituudet.

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

Erikoistokenit

BERT lisää erikoistokenit automaattisesti: [CLS] alkuun (sen piilotila tiivistää sekvenssin) ja [SEP] lauseiden väliin tai niiden jälkeen. Luokittelija lukee tiedot [CLS]-esityksestä.

Mallin suorittaminen

Välittäkää tokenisoidut syötteet mallille saadaksenne logitit eli käsittelemättömät ja normalisoimattomat luokkien pistemäärät.

import torch

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

Logiteista ennusteiksi

Muuntakaa logitit todennäköisyyksiksi käyttämällä softmax-funktiota ja valitkaa sitten ennustetun luokan indeksi argmax-funktiolla. Yhdistäkää indeksi luokkatunnisteeseen.

import torch

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

Hienosäätö omaa tehtävää varten

Kun käytössänne on mukautettu aineisto, hienosäätäkää BERT kouluttamalla luokittelupäätä (ja halutessanne koko mallia) merkittyjen esimerkkien avulla. Trainer-rajapinta käsittelee koulutussilmukan.

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

pipeline-apufunktio

Nopeaa päättelyä varten pipeline-apufunktio yhdistää tokenisoinnin, mallin suorittamisen ja tuloksen purkamisen yhdeksi kutsuksi. Se sopii erinomaisesti prototyyppien tekemiseen.

from transformers import pipeline

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

Pikatesti

Testatkaa BERTiä koskevat tietonne.

Kertaus

Kertaus: BERT tuottaa asiayhteyden huomioivia upotuksia transformereiden avulla. Käyttäkää AutoTokenizer-luokkaa tekstin tokenisointiin asetuksilla truncation/padding/return_tensors ja AutoModelForSequenceClassification-luokkaa saadaksenne logitit. Muuntakaa logitit softmax-funktiolla ja valitkaa sitten luokka argmax-funktiolla. Hienosäätäkää malli Trainer-rajapinnalla tai tehkää nopea prototyyppi pipeline-apufunktiolla.

Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
53
Oppitunnit
225

Usein kysytyt kysymykset

Onko oppitunti ”Tekstin luokittelu BERTillä” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Oppikaa tekoälyä Pythonilla-oppimispolun 3 oppituntia, myös oppitunnin “Tekstin luokittelu BERTillä”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppikaa tekoälyä Pythonilla-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Tekstin luokittelu BERTillä”?

HuggingFace transformers, AutoTokenizer, AutoModelForSequenceClassification, hienosäätö. Harjoittelet Oppikaa tekoälyä Pythonilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Oppikaa tekoälyä Pythonilla-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Oppikaa tekoälyä Pythonilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Tekstin luokittelu BERTillä”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Oppikaa tekoälyä Pythonilla-oppitunnilla?

Kyllä. Jokainen Oppikaa tekoälyä Pythonilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Word2Vec: Skip-gram ja CBOW
  2. GloVe- ja FastText-upotukset
  3. Tekstin luokittelu BERTillä
  4. Semanttinen samankaltaisuus ja lauseupotukset
← Takaisin: Oppikaa tekoälyä Pythonilla