GPT2-PBE / train_tokenizer.py
tymbos's picture
Update train_tokenizer.py
e022de9 verified
raw
history blame
1.42 kB
# -*- coding: utf-8 -*-
from tokenizers import Tokenizer, decoders, models, normalizers, pre_tokenizers, trainers
def train_tokenizer(iterator, vocab_size=50000, min_frequency=3):
"""
Εκπαιδεύει έναν Tokenizer τύπου BPE πάνω σε δεδομένα που παρέχονται από τον iterator.
"""
# Δημιουργία του Tokenizer με μοντέλο BPE και ορισμό token για άγνωστα
tokenizer = Tokenizer(models.BPE(unk_token="<unk>"))
# Normalization για ελληνικά και Unicode (διατηρεί τους τόνους)
tokenizer.normalizer = normalizers.NFC()
# Προ-tokenizer για μικτά κείμενα (ελληνικά και αγγλικά)
tokenizer.pre_tokenizer = pre_tokenizers.Sequence([
pre_tokenizers.WhitespaceSplit(),
pre_tokenizers.Punctuation(),
pre_tokenizers.Digits(individual_digits=True)
])
# Ορισμός ειδικών tokens (π.χ. για ιστορικά κείμενα)
trainer = trainers.BpeTrainer(
vocab_size=vocab_size,
min_frequency=min_frequency,
special_tokens=["<|endoftext|>", "<pad>", "<unk>", "<mask>", "[CITATION]"],
continuing_subword_prefix=""
)
tokenizer.train_from_iterator(iterator, trainer=trainer)
tokenizer.decoder = decoders.ByteLevel()
return tokenizer