Tekstin luokittelu BERTillä
HuggingFace transformers, AutoTokenizer, AutoModelForSequenceClassification, hienosäätö.
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.
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
- Word2Vec: Skip-gram ja CBOW
- GloVe- ja FastText-upotukset
- Tekstin luokittelu BERTillä
- Semanttinen samankaltaisuus ja lauseupotukset