Update app.py
Browse files
app.py
CHANGED
@@ -37,7 +37,7 @@ def fetch_splits(dataset_name):
|
|
37 |
|
38 |
def update_components(dataset_name):
|
39 |
if not dataset_name:
|
40 |
-
return [gr.
|
41 |
|
42 |
try:
|
43 |
splits_data = fetch_splits(dataset_name)
|
@@ -53,8 +53,9 @@ def update_components(dataset_name):
|
|
53 |
></iframe>
|
54 |
""" if first_config else "Δεν βρέθηκαν διαθέσιμα δεδομένα"
|
55 |
|
|
|
56 |
return [
|
57 |
-
gr.
|
58 |
gr.Dropdown.update(choices=splits_data['splits'].get(first_config, [])),
|
59 |
gr.HTML.update(value=iframe_html)
|
60 |
]
|
@@ -62,38 +63,46 @@ def update_components(dataset_name):
|
|
62 |
raise gr.Error(f"Σφάλμα: {str(e)}")
|
63 |
|
64 |
def update_split_choices(dataset_name, config):
|
|
|
65 |
if not dataset_name or not config:
|
66 |
return gr.Dropdown.update(choices=[])
|
67 |
|
68 |
try:
|
69 |
splits_data = fetch_splits(dataset_name)
|
70 |
-
return gr.Dropdown.update(choices=splits_data['splits'].get(config, []))
|
71 |
except:
|
72 |
return gr.Dropdown.update(choices=[])
|
73 |
|
74 |
-
def create_iterator(dataset_name,
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
|
87 |
-
def train_and_test(dataset_name,
|
88 |
try:
|
89 |
-
dataset_iterator = create_iterator(dataset_name,
|
90 |
|
91 |
# Συνδυασμός iterator από το streaming dataset και των custom αρχείων
|
92 |
def combined_iterator():
|
93 |
-
# Δεδομένα από
|
94 |
for text in dataset_iterator:
|
95 |
-
|
96 |
-
yield text
|
97 |
# Δεδομένα από τα custom αρχεία (αναμένεται λίστα με file paths)
|
98 |
if custom_files:
|
99 |
for file_path in custom_files:
|
@@ -150,16 +159,17 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
150 |
value="wikimedia/wikipedia",
|
151 |
placeholder="π.χ. 'wikimedia/wikipedia'"
|
152 |
)
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
|
|
157 |
)
|
158 |
split = gr.Dropdown(
|
159 |
label="Split",
|
160 |
-
choices=[],
|
161 |
value="train",
|
162 |
-
allow_custom_value=True
|
163 |
)
|
164 |
vocab_size = gr.Slider(20000, 100000, value=50000, label="Μέγεθος Λεξιλογίου")
|
165 |
min_freq = gr.Slider(1, 100, value=3, label="Ελάχιστη Συχνότητα")
|
@@ -170,7 +180,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
170 |
custom_files = gr.File(
|
171 |
label="Προσαρμοσμένα Ελληνικά Κείμενα",
|
172 |
file_count="multiple",
|
173 |
-
type="filepath"
|
174 |
)
|
175 |
train_btn = gr.Button("Εκπαίδευση", variant="primary")
|
176 |
|
@@ -183,18 +193,18 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
183 |
dataset_name.change(
|
184 |
fn=update_components,
|
185 |
inputs=dataset_name,
|
186 |
-
outputs=[
|
187 |
)
|
188 |
|
189 |
-
|
190 |
fn=update_split_choices,
|
191 |
-
inputs=[dataset_name,
|
192 |
outputs=split
|
193 |
)
|
194 |
|
195 |
train_btn.click(
|
196 |
fn=train_and_test,
|
197 |
-
inputs=[dataset_name,
|
198 |
outputs=[results_json, results_plot]
|
199 |
)
|
200 |
|
|
|
37 |
|
38 |
def update_components(dataset_name):
|
39 |
if not dataset_name:
|
40 |
+
return [gr.Textbox.update(value=""), gr.Dropdown.update(choices=[], value=None), gr.HTML.update(value="")]
|
41 |
|
42 |
try:
|
43 |
splits_data = fetch_splits(dataset_name)
|
|
|
53 |
></iframe>
|
54 |
""" if first_config else "Δεν βρέθηκαν διαθέσιμα δεδομένα"
|
55 |
|
56 |
+
# Επιστρέφουμε ένα νέο πεδίο όπου ο χρήστης μπορεί να εισάγει πολλαπλά configs (π.χ. "20231101.el,20231101.en")
|
57 |
return [
|
58 |
+
gr.Textbox.update(value=f"{first_config},20231101.en" if first_config and "el" in first_config else first_config),
|
59 |
gr.Dropdown.update(choices=splits_data['splits'].get(first_config, [])),
|
60 |
gr.HTML.update(value=iframe_html)
|
61 |
]
|
|
|
63 |
raise gr.Error(f"Σφάλμα: {str(e)}")
|
64 |
|
65 |
def update_split_choices(dataset_name, config):
|
66 |
+
# Εδώ παραμένει για το πρώτο config (μπορείτε να το τροποποιήσετε αν χρειαστεί)
|
67 |
if not dataset_name or not config:
|
68 |
return gr.Dropdown.update(choices=[])
|
69 |
|
70 |
try:
|
71 |
splits_data = fetch_splits(dataset_name)
|
72 |
+
return gr.Dropdown.update(choices=splits_data['splits'].get(config.split(",")[0].strip(), []))
|
73 |
except:
|
74 |
return gr.Dropdown.update(choices=[])
|
75 |
|
76 |
+
def create_iterator(dataset_name, configs, split):
|
77 |
+
"""
|
78 |
+
Δέχεται τη μεταβλητή configs ως string με λίστα από config χωρισμένα με κόμμα.
|
79 |
+
Για κάθε config φορτώνει το αντίστοιχο streaming dataset και επιστρέφει τα κείμενα.
|
80 |
+
"""
|
81 |
+
configs_list = [c.strip() for c in configs.split(",") if c.strip()]
|
82 |
+
for config in configs_list:
|
83 |
+
try:
|
84 |
+
dataset = load_dataset(
|
85 |
+
dataset_name,
|
86 |
+
name=config,
|
87 |
+
split=split,
|
88 |
+
streaming=True
|
89 |
+
)
|
90 |
+
for example in dataset:
|
91 |
+
text = example.get('text', '')
|
92 |
+
if text:
|
93 |
+
yield text
|
94 |
+
except Exception as e:
|
95 |
+
print(f"Σφάλμα φόρτωσης dataset για config {config}: {e}")
|
96 |
|
97 |
+
def train_and_test(dataset_name, configs, split, vocab_size, min_freq, test_text, custom_files):
|
98 |
try:
|
99 |
+
dataset_iterator = create_iterator(dataset_name, configs, split)
|
100 |
|
101 |
# Συνδυασμός iterator από το streaming dataset και των custom αρχείων
|
102 |
def combined_iterator():
|
103 |
+
# Δεδομένα από τα streaming datasets
|
104 |
for text in dataset_iterator:
|
105 |
+
yield text
|
|
|
106 |
# Δεδομένα από τα custom αρχεία (αναμένεται λίστα με file paths)
|
107 |
if custom_files:
|
108 |
for file_path in custom_files:
|
|
|
159 |
value="wikimedia/wikipedia",
|
160 |
placeholder="π.χ. 'wikimedia/wikipedia'"
|
161 |
)
|
162 |
+
# Νέο πεδίο για εισαγωγή πολλαπλών configs ως λίστα, χωρισμένα με κόμμα.
|
163 |
+
configs = gr.Textbox(
|
164 |
+
label="Configs (π.χ. '20231101.el,20231101.en' για ελληνικά και αγγλικά)",
|
165 |
+
value="20231101.el,20231101.en",
|
166 |
+
placeholder="Εισάγετε configs χωρισμένα με κόμμα"
|
167 |
)
|
168 |
split = gr.Dropdown(
|
169 |
label="Split",
|
170 |
+
choices=["train"],
|
171 |
value="train",
|
172 |
+
allow_custom_value=True
|
173 |
)
|
174 |
vocab_size = gr.Slider(20000, 100000, value=50000, label="Μέγεθος Λεξιλογίου")
|
175 |
min_freq = gr.Slider(1, 100, value=3, label="Ελάχιστη Συχνότητα")
|
|
|
180 |
custom_files = gr.File(
|
181 |
label="Προσαρμοσμένα Ελληνικά Κείμενα",
|
182 |
file_count="multiple",
|
183 |
+
type="filepath"
|
184 |
)
|
185 |
train_btn = gr.Button("Εκπαίδευση", variant="primary")
|
186 |
|
|
|
193 |
dataset_name.change(
|
194 |
fn=update_components,
|
195 |
inputs=dataset_name,
|
196 |
+
outputs=[configs, split, preview]
|
197 |
)
|
198 |
|
199 |
+
split.change(
|
200 |
fn=update_split_choices,
|
201 |
+
inputs=[dataset_name, configs],
|
202 |
outputs=split
|
203 |
)
|
204 |
|
205 |
train_btn.click(
|
206 |
fn=train_and_test,
|
207 |
+
inputs=[dataset_name, configs, split, vocab_size, min_freq, test_text, custom_files],
|
208 |
outputs=[results_json, results_plot]
|
209 |
)
|
210 |
|