tymbos commited on
Commit
d18ea54
·
verified ·
1 Parent(s): e1e86f9

Update train_tokenizer.py

Browse files
Files changed (1) hide show
  1. train_tokenizer.py +15 -4
train_tokenizer.py CHANGED
@@ -1,9 +1,9 @@
1
- import regex # Χρησιμοποιείται για την υποστήριξη Unicode properties στο regex
2
  from tokenizers import Tokenizer, decoders, models, normalizers, pre_tokenizers, trainers
 
3
  from datasets import load_dataset
4
 
5
  # Ορισμός custom regex για κώδικα και πολυγλωσσικό κείμενο.
6
- # Χρησιμοποιεί το module regex που υποστηρίζει \p{L} και \p{N}.
7
  code_regex = r"""(?x:
8
  //.*?$| # Σχόλια τύπου //
9
  /\*.*?\*/| # Σχόλια τύπου /* */
@@ -18,6 +18,14 @@ code_regex = r"""(?x:
18
  \S # Οποιοσδήποτε άλλος χαρακτήρας
19
  )"""
20
 
 
 
 
 
 
 
 
 
21
  def train_tokenizer(iterator, vocab_size=32000, min_frequency=2):
22
  # Δημιουργία του Tokenizer με το μοντέλο BPE και ειδικό token για Unknown.
23
  tokenizer = Tokenizer(models.BPE(unk_token="<unk>"))
@@ -28,9 +36,12 @@ def train_tokenizer(iterator, vocab_size=32000, min_frequency=2):
28
  normalizers.StripAccents() # Προαιρετικό: αφαιρεί τόνους
29
  ])
30
 
31
- # Ορισμός custom pre-tokenizer με χρήση regex και ByteLevel
 
 
 
32
  tokenizer.pre_tokenizer = pre_tokenizers.Sequence([
33
- pre_tokenizers.Regex(pattern=code_regex),
34
  pre_tokenizers.ByteLevel(add_prefix_space=False)
35
  ])
36
 
 
1
+ import regex # Βιβλιοθήκη για υποστήριξη Unicode regex
2
  from tokenizers import Tokenizer, decoders, models, normalizers, pre_tokenizers, trainers
3
+ from tokenizers.pre_tokenizers import PreTokenizer
4
  from datasets import load_dataset
5
 
6
  # Ορισμός custom regex για κώδικα και πολυγλωσσικό κείμενο.
 
7
  code_regex = r"""(?x:
8
  //.*?$| # Σχόλια τύπου //
9
  /\*.*?\*/| # Σχόλια τύπου /* */
 
18
  \S # Οποιοσδήποτε άλλος χαρακτήρας
19
  )"""
20
 
21
+ def custom_pre_tokenizer(pretokenized_string):
22
+ """
23
+ Custom pre-tokenizer που χρησιμοποιεί το regex για να εξάγει tokens με offsets.
24
+ """
25
+ # Εφαρμόζουμε το regex για να βρούμε τα tokens
26
+ tokens_with_offsets = [(m.group(), m.span()) for m in regex.finditer(code_regex, pretokenized_string.sequence)]
27
+ pretokenized_string.split(lambda: tokens_with_offsets)
28
+
29
  def train_tokenizer(iterator, vocab_size=32000, min_frequency=2):
30
  # Δημιουργία του Tokenizer με το μοντέλο BPE και ειδικό token για Unknown.
31
  tokenizer = Tokenizer(models.BPE(unk_token="<unk>"))
 
36
  normalizers.StripAccents() # Προαιρετικό: αφαιρεί τόνους
37
  ])
38
 
39
+ # Ορισμός custom pre-tokenizer με χρήση της συνάρτησης που ορίσαμε
40
+ tokenizer.pre_tokenizer = PreTokenizer.custom(custom_pre_tokenizer)
41
+
42
+ # Επιπλέον χρήση του ByteLevel pre-tokenizer για συμβατότητα με το GPT-2
43
  tokenizer.pre_tokenizer = pre_tokenizers.Sequence([
44
+ tokenizer.pre_tokenizer,
45
  pre_tokenizers.ByteLevel(add_prefix_space=False)
46
  ])
47