# -*- 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 και ορισμό token για άγνωστα tokenizer = Tokenizer(models.BPE(unk_token="")) # 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|>", "", "", "", "[CITATION]"], continuing_subword_prefix="" ) tokenizer.train_from_iterator(iterator, trainer=trainer) tokenizer.decoder = decoders.ByteLevel() return tokenizer