Update train_tokenizer.py
Browse files- train_tokenizer.py +15 -4
train_tokenizer.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
-
import 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 με χρήση
|
|
|
|
|
|
|
32 |
tokenizer.pre_tokenizer = pre_tokenizers.Sequence([
|
33 |
-
|
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 |
|