Zowaar eindelijk is er een Nederlandse Bert gemaakt met de wellicht wat kleinerende naam : BERTje. Waar de 'je' eventueel voor staat is mij nog niet duidelijk. Ik zie dit als uitleg: "The suffix -je is used to form diminutives in Dutch; it is also used with names in an affectionate sense".
In dit document staat alles toegelicht.
Het betreft het Bert basis model met 12 'lagen' en dat is goed nieuws want die is, naar eerder bleek, goed op mijn pc te draaien.
De beschrijving van de code zelf staat hier: https://github.com/wietsedv/bertje
Deze verwijst naar de Transformers oplossing. Een uitgebreide bibliotheek om diverse NLP modellen te kunnen draaien met PyTorch en Tensorflow.
Jammer met PyTorch heb ik niet zoveel ervaring. Ik installeer het wel (eerst Cuda naar de juiste versie updaten) . De basiscode lijkt redelijk te werken alleen ken de library, in tegenstelling tot de suggestie, het model "bert-base-dutch-cased" niet.
OSError: Model name 'bert-base-dutch-cased' was not found in tokenizers model name list (bert-base-uncased, bert-large-uncased, bert-base-cased, bert-large-cased, bert-base-multilingual-uncased, bert-base-multilingual-cased, bert-base-chinese, bert-base-german-cased, bert-large-uncased-whole-word-masking, bert-large-cased-whole-word-masking, bert-large-uncased-whole-word-masking-finetuned-squad, bert-large-cased-whole-word-masking-finetuned-squad, bert-base-cased-finetuned-mrpc, bert-base-german-dbmdz-cased, bert-base-german-dbmdz-uncased). We assumed 'bert-base-dutch-cased' was a path or url to a directory containing vocabulary files named ['vocab.txt'] but couldn't find such vocabulary files at this path or url.
Als ik het model rechtstreeks download en er op de juiste manier naar verwijs lijkt het allemaal wel goed te werken:
>>> tokenizer = BertTokenizer.from_pretrained("C:/Users/DirkW/Documents/bertje-base/vocab.txt")
>>> model = BertModel.from_pretrained("C:/Users/DirkW/Documents/bertje-base/")
>>> model.config
{
"attention_probs_dropout_prob": 0.1,
"finetuning_task": null,
"hidden_act": "gelu",
"hidden_dropout_prob": 0.1,
"hidden_size": 768,
"initializer_range": 0.02,
"intermediate_size": 3072,
"layer_norm_eps": 1e-12,
"max_position_embeddings": 512,
"num_attention_heads": 12,
"num_hidden_layers": 12,
"num_labels": 2,
"output_attentions": false,
"output_hidden_states": false,
"output_past": true,
"pruned_heads": {},
"torchscript": false,
"type_vocab_size": 2,
"use_bfloat16": false,
"vocab_size": 30000
}
Alleen weet ik dus niet zo goed hoe nu verder en de PyTorch voorbeelden lijken nog wat complex voor mij.
Gelukkig geven ze bij BERTje aan:
"The model is fully compatible with Transformers and interchangable with original BERT checkpoints."
Dus kan ik ook met eerder gebruikte / gemaakte software aan de slag als het goed is.
Ik heb ooit geexperimenteerd met het classificeren van documenten aan de juiste 'opbergfolder'. Helaas waren de documenten vooral in het Nederlands en had het destijds dus weinig zin om BERT te testen. Met die data ga ik nu dus wel aan de slag om te kijken of ik met BERTje betere resultaten kan krijgen. Eerst maar eens de data opnieuw prepareren voor dit gebruik. Het gaat om 53620 , elk maximaal 254 woorden lang. documenten waarvan de woorden al in index getallen zijn omgezet. Bert gaat echter uit van een eigen omzetting dus moet ik eerst de oorspronkelijke documenten terug genereren. Helaas is dat een langdurige zaak dus het echte testwerk kan vermoedelijk pas morgen beginnen.
Geen opmerkingen:
Een reactie posten