tymbos commited on
Commit
a9ae246
·
verified ·
1 Parent(s): 6c622d6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -31
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.Dropdown.update(choices=[], value=None), gr.Dropdown.update(choices=[]), gr.HTML.update(value="")]
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.Dropdown.update(choices=config_choices, value=first_config),
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, config, split):
75
- try:
76
- dataset = load_dataset(
77
- dataset_name,
78
- name=config,
79
- split=split,
80
- streaming=True
81
- )
82
- for example in dataset:
83
- yield example.get('text', '')
84
- except Exception as e:
85
- raise gr.Error(f"Σφάλμα φόρτωσης dataset: {str(e)}")
 
 
 
 
 
 
 
 
86
 
87
- def train_and_test(dataset_name, config, split, vocab_size, min_freq, test_text, custom_files):
88
  try:
89
- dataset_iterator = create_iterator(dataset_name, config, split)
90
 
91
  # Συνδυασμός iterator από το streaming dataset και των custom αρχείων
92
  def combined_iterator():
93
- # Δεδομένα από το streaming dataset
94
  for text in dataset_iterator:
95
- if text:
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
- config = gr.Dropdown(
154
- label="Config (π.χ. '20231101.el' για ελληνικά ή '20231101.en' για αγγλικά)",
155
- choices=[],
156
- interactive=True
 
157
  )
158
  split = gr.Dropdown(
159
  label="Split",
160
- choices=[],
161
  value="train",
162
- allow_custom_value=True # Ενεργοποίηση custom τιμών για το split
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" # Χρήση "filepath" αντί για "file"
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=[config, split, preview]
187
  )
188
 
189
- config.change(
190
  fn=update_split_choices,
191
- inputs=[dataset_name, config],
192
  outputs=split
193
  )
194
 
195
  train_btn.click(
196
  fn=train_and_test,
197
- inputs=[dataset_name, config, split, vocab_size, min_freq, test_text, custom_files],
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