Itsme5 commited on
Commit
cbdb918
·
verified ·
1 Parent(s): 059b3ab

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -0
app.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from transformers import PreTrainedTokenizerFast
3
+ from tokenizers import ByteLevelBPETokenizer
4
+ from datasets import load_dataset
5
+
6
+ app = FastAPI()
7
+
8
+ @app.on_event("startup")
9
+ async def train_tokenizer():
10
+ # Μέγεθος λεξιλογίου και ελάχιστη συχνότητα
11
+ vocab_size = 50000
12
+ min_frequency = 2
13
+
14
+ # Φόρτωση δεδομένων από Oscar και Wikipedia μέσω streaming
15
+ dataset_greek = load_dataset("oscar", "unshuffled_deduplicated_el", split="train", streaming=True)
16
+ dataset_english = load_dataset("wikipedia", "20220301.en", split="train", streaming=True)
17
+
18
+ # Διαχείριση καθαρού κώδικα (π.χ., από GitHub ή άλλες πηγές αν υπάρχουν)
19
+ try:
20
+ dataset_code = load_dataset("bigcode/the-stack", split="train", streaming=True)
21
+ datasets_list = [dataset_greek, dataset_english, dataset_code]
22
+ except:
23
+ datasets_list = [dataset_greek, dataset_english]
24
+
25
+ # Ενοποίηση των δεδομένων και προεπεξεργασία
26
+ def preprocess_data(dataset):
27
+ for item in dataset:
28
+ text = item["text"]
29
+ # Αφαίρεση περιττών χαρακτήρων και κανονικοποίηση
30
+ text = text.strip().lower() # Μπορείς να το κάνεις lower εάν το θέλεις
31
+ if text: # Εξασφαλίζουμε ότι δεν είναι άδειο το κείμενο
32
+ yield text
33
+
34
+ combined_data = (
35
+ preprocess_data(dataset) for dataset in datasets_list
36
+ )
37
+
38
+ # Δημιουργία του tokenizer
39
+ tokenizer = ByteLevelBPETokenizer()
40
+
41
+ # Εκπαίδευση του tokenizer
42
+ tokenizer.train_from_iterator(
43
+ combined_data,
44
+ vocab_size=vocab_size,
45
+ min_frequency=min_frequency,
46
+ special_tokens=["<s>", "<pad>", "</s>", "<unk>", "<mask>"]
47
+ )
48
+
49
+ # Αποθήκευση του tokenizer
50
+ tokenizer.save_model(".")
51
+
52
+ @app.get("/")
53
+ async def root():
54
+ return {"message": "Custom Tokenizer Training Completed and Saved"}