tymbos commited on
Commit
c398762
·
verified ·
1 Parent(s): 72577d1

Update train_tokenizer.py

Browse files
Files changed (1) hide show
  1. train_tokenizer.py +29 -41
train_tokenizer.py CHANGED
@@ -2,45 +2,33 @@
2
  from tokenizers import Tokenizer, decoders, models, normalizers, pre_tokenizers, trainers
3
  import os
4
 
5
- def train_tokenizer(iterator, vocab_size=50000, min_frequency=3, output_dir="tokenizer_model"):
6
- """
7
- Εκπαιδεύει έναν Tokenizer τύπου BPE και αποθηκεύει το αποτέλεσμα.
8
- """
9
  print("🔄 Ξεκινάει η εκπαίδευση του tokenizer...")
10
-
11
- # Δημιουργία του Tokenizer με μοντέλο BPE και ορισμό token για άγνωστα
12
- tokenizer = Tokenizer(models.BPE(unk_token="<unk>"))
13
-
14
- # Normalization για ελληνικά και Unicode (διατηρεί τους τόνους)
15
- tokenizer.normalizer = normalizers.NFC()
16
-
17
- # Προ-tokenizer για μικτά κείμενα (ελληνικά και αγγλικά)
18
- tokenizer.pre_tokenizer = pre_tokenizers.Sequence([
19
- pre_tokenizers.WhitespaceSplit(),
20
- pre_tokenizers.Punctuation(),
21
- pre_tokenizers.Digits(individual_digits=True)
22
- ])
23
-
24
- # Ορισμός ειδικών tokens
25
- trainer = trainers.BpeTrainer(
26
- vocab_size=vocab_size,
27
- min_frequency=min_frequency,
28
- special_tokens=["<|endoftext|>", "<pad>", "<unk>", "<mask>", "[CITATION]"],
29
- continuing_subword_prefix=""
30
- )
31
-
32
- # Εκπαίδευση του tokenizer
33
- tokenizer.train_from_iterator(iterator, trainer=trainer)
34
- tokenizer.decoder = decoders.ByteLevel()
35
-
36
- # Δημιουργία φακέλου αποθήκευσης αν δεν υπάρχει
37
- if not os.path.exists(output_dir):
38
- os.makedirs(output_dir)
39
-
40
- # Αποθήκευση του tokenizer
41
- tokenizer.save(os.path.join(output_dir, "tokenizer.json"))
42
- tokenizer.model.save(output_dir) # Αποθηκεύει vocab.json και merges.txt
43
-
44
- print(f"✅ Ο tokenizer αποθηκεύτηκε στον φάκελο '{output_dir}'!")
45
-
46
- return tokenizer
 
2
  from tokenizers import Tokenizer, decoders, models, normalizers, pre_tokenizers, trainers
3
  import os
4
 
5
+ def train_tokenizer(iterator, vocab_size=50000, min_frequency=3, output_dir="tokenizer_model", num_threads=4):
6
+ """Εκπαιδεύει έναν BPE tokenizer και τον αποθηκεύει."""
 
 
7
  print("🔄 Ξεκινάει η εκπαίδευση του tokenizer...")
8
+ try:
9
+ tokenizer = Tokenizer(models.BPE(unk_token="<unk>"))
10
+ tokenizer.normalizer = normalizers.NFC() # Υποστήριξη Unicode UTF-8 για ελληνικούς τόνους
11
+ tokenizer.pre_tokenizer = pre_tokenizers.Sequence([
12
+ pre_tokenizers.WhitespaceSplit(),
13
+ pre_tokenizers.Punctuation(),
14
+ pre_tokenizers.Digits(individual_digits=True)
15
+ ])
16
+ trainer = trainers.BpeTrainer(
17
+ vocab_size=vocab_size,
18
+ min_frequency=min_frequency,
19
+ special_tokens=["<|endoftext|>", "<pad>", "<unk>", "<mask>", "[CITATION]", "[CODE_START]", "[CODE_END]"],
20
+ continuing_subword_prefix=""
21
+ )
22
+ print(f"📏 Μέγεθος λεξιλογίου: {vocab_size}, Ελάχιστη συχνότητα: {min_frequency}")
23
+ tokenizer.train_from_iterator(iterator, trainer=trainer, num_threads=num_threads)
24
+ tokenizer.decoder = decoders.ByteLevel()
25
+ if not os.path.exists(output_dir):
26
+ os.makedirs(output_dir)
27
+ print(f"📂 Δημιουργήθηκε φάκελος: {output_dir}")
28
+ tokenizer.save(os.path.join(output_dir, "tokenizer.json"))
29
+ tokenizer.model.save(output_dir)
30
+ print(f"✅ Ο tokenizer αποθηκεύτηκε στον φάκελο '{output_dir}'!")
31
+ return tokenizer
32
+ except Exception as e:
33
+ print(f"❌ Σφάλμα κατά την αποθήκευση: {e}")
34
+ raise