hoololi commited on
Commit
95258cd
·
verified ·
1 Parent(s): a096c72

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -81
app.py CHANGED
@@ -1,23 +1,4 @@
1
- # Événements - Mise à jour quand les checkboxes changent
2
- checkbox_inputs = list(novel_checkboxes.values())
3
-
4
- def update_from_checkboxes(*checkbox_values):
5
- # Reconstruire le dictionnaire novel -> bool
6
- novel_selection = {novel: value for novel, value in zip(available_novels, checkbox_values)}
7
- selected_novels = [novel for novel, selected in novel_selection.items() if selected]
8
-
9
- # Créer le graphique
10
- fig = create_embeddings_plot(selected_novels)
11
-
12
- return fig
13
-
14
- # Connecter tous les checkboxes à la fonction de mise à jour
15
- for checkbox in checkbox_inputs:
16
- checkbox.change(
17
- fn=update_from_checkboxes,
18
- inputs=checkbox_inputs,
19
- outputs=[plot_display]
20
- )"""
21
  App Gradio pour visualiser les embeddings de romans français
22
  Interface minimaliste avec style Seaborn
23
  """
@@ -42,21 +23,6 @@ sns.set_palette("deep")
42
 
43
  # ==================== CHARGEMENT DES DONNÉES ====================
44
 
45
- def load_novels_dataset():
46
- """Charge le dataset des romans depuis Hugging Face"""
47
-
48
- try:
49
- print(f"📚 Chargement du dataset {DATASET_NAME}...")
50
- dataset = load_dataset(DATASET_NAME)
51
-
52
- # Convertir en DataFrame pour facilité d'usage
53
- df = dataset.to_pandas()
54
- print(f"✅ Dataset chargé: {len(df)} phrases de {len(df['roman'].unique())} romans")
55
- return df
56
- except Exception as e:
57
- print(f"❌ Erreur lors du chargement: {e}")
58
- return None
59
-
60
  # Charger le dataset au démarrage
61
  print("🔄 Initialisation de l'application...")
62
  try:
@@ -133,9 +99,6 @@ except Exception as e:
133
  print(f"❌ Impossible de créer les données de test: {test_error}")
134
  dataset_df = None
135
  available_novels = []
136
- print(f"❌ Impossible de créer les données de test: {test_error}")
137
- dataset_df = None
138
- available_novels = []
139
 
140
  # ==================== FONCTIONS DE VISUALISATION ====================
141
 
@@ -149,7 +112,6 @@ def create_embeddings_plot(selected_novels, figsize=(10, 8)):
149
  ha='center', va='center', transform=ax.transAxes, fontsize=16)
150
  ax.set_xlim(0, 1)
151
  ax.set_ylim(0, 1)
152
- plt.title("Visualisation des embeddings")
153
  return fig
154
 
155
  # Filtrer les données selon les romans sélectionnés
@@ -161,7 +123,6 @@ def create_embeddings_plot(selected_novels, figsize=(10, 8)):
161
  ha='center', va='center', transform=ax.transAxes, fontsize=16)
162
  ax.set_xlim(0, 1)
163
  ax.set_ylim(0, 1)
164
- plt.title("Visualisation des embeddings")
165
  return fig
166
 
167
  # Calculer les bornes globales pour garder l'échelle fixe
@@ -188,7 +149,6 @@ def create_embeddings_plot(selected_novels, figsize=(10, 8)):
188
  )
189
 
190
  # Configuration du graphique
191
- plt.title('Embeddings des Romans Français', fontsize=16, fontweight='bold', pad=20)
192
  plt.xlabel('t-SNE dimension 1', fontsize=12)
193
  plt.ylabel('t-SNE dimension 2', fontsize=12)
194
 
@@ -215,48 +175,8 @@ def create_embeddings_plot(selected_novels, figsize=(10, 8)):
215
 
216
  return fig
217
 
218
- def get_summary_stats(selected_novels):
219
- """Calcule et affiche des statistiques sur les romans sélectionnés"""
220
-
221
- if dataset_df is None or not selected_novels:
222
- return "Aucune donnée disponible"
223
-
224
- filtered_df = dataset_df[dataset_df['roman'].isin(selected_novels)]
225
-
226
- if filtered_df.empty:
227
- return "Aucun roman sélectionné"
228
-
229
- # Calculer les statistiques simplifiées
230
- stats = []
231
- stats.append(f"📊 **Statistiques des romans sélectionnés:**\n")
232
-
233
- for roman in selected_novels:
234
- roman_data = filtered_df[filtered_df['roman'] == roman]
235
- if not roman_data.empty:
236
- nb_phrases = len(roman_data)
237
- stats.append(f"📚 **{roman}** : {nb_phrases} phrases")
238
-
239
- # Info globale
240
- stats.append(f"\n🎯 **Total: {len(filtered_df)} phrases de {len(selected_novels)} roman(s)**")
241
-
242
- return "\n".join(stats)
243
-
244
  # ==================== INTERFACE GRADIO ====================
245
 
246
- def update_visualization(novel_checkboxes):
247
- """Met à jour la visualisation selon les romans sélectionnés"""
248
-
249
- # Extraire les romans sélectionnés des checkboxes
250
- selected_novels = [novel for novel, selected in novel_checkboxes.items() if selected]
251
-
252
- # Créer le graphique
253
- fig = create_embeddings_plot(selected_novels)
254
-
255
- # Générer les statistiques
256
- stats = get_summary_stats(selected_novels)
257
-
258
- return fig, stats
259
-
260
  def create_gradio_interface():
261
  """Crée l'interface Gradio minimaliste"""
262
 
@@ -310,6 +230,27 @@ def create_gradio_interface():
310
  label="📊 Projection t-SNE des embeddings",
311
  value=create_embeddings_plot(available_novels)
312
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
 
314
  return demo
315
 
 
1
+ """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  App Gradio pour visualiser les embeddings de romans français
3
  Interface minimaliste avec style Seaborn
4
  """
 
23
 
24
  # ==================== CHARGEMENT DES DONNÉES ====================
25
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  # Charger le dataset au démarrage
27
  print("🔄 Initialisation de l'application...")
28
  try:
 
99
  print(f"❌ Impossible de créer les données de test: {test_error}")
100
  dataset_df = None
101
  available_novels = []
 
 
 
102
 
103
  # ==================== FONCTIONS DE VISUALISATION ====================
104
 
 
112
  ha='center', va='center', transform=ax.transAxes, fontsize=16)
113
  ax.set_xlim(0, 1)
114
  ax.set_ylim(0, 1)
 
115
  return fig
116
 
117
  # Filtrer les données selon les romans sélectionnés
 
123
  ha='center', va='center', transform=ax.transAxes, fontsize=16)
124
  ax.set_xlim(0, 1)
125
  ax.set_ylim(0, 1)
 
126
  return fig
127
 
128
  # Calculer les bornes globales pour garder l'échelle fixe
 
149
  )
150
 
151
  # Configuration du graphique
 
152
  plt.xlabel('t-SNE dimension 1', fontsize=12)
153
  plt.ylabel('t-SNE dimension 2', fontsize=12)
154
 
 
175
 
176
  return fig
177
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  # ==================== INTERFACE GRADIO ====================
179
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  def create_gradio_interface():
181
  """Crée l'interface Gradio minimaliste"""
182
 
 
230
  label="📊 Projection t-SNE des embeddings",
231
  value=create_embeddings_plot(available_novels)
232
  )
233
+
234
+ # Événements - Mise à jour quand les checkboxes changent
235
+ checkbox_inputs = list(novel_checkboxes.values())
236
+
237
+ def update_from_checkboxes(*checkbox_values):
238
+ # Reconstruire le dictionnaire novel -> bool
239
+ novel_selection = {novel: value for novel, value in zip(available_novels, checkbox_values)}
240
+ selected_novels = [novel for novel, selected in novel_selection.items() if selected]
241
+
242
+ # Créer le graphique
243
+ fig = create_embeddings_plot(selected_novels)
244
+
245
+ return fig
246
+
247
+ # Connecter tous les checkboxes à la fonction de mise à jour
248
+ for checkbox in checkbox_inputs:
249
+ checkbox.change(
250
+ fn=update_from_checkboxes,
251
+ inputs=checkbox_inputs,
252
+ outputs=[plot_display]
253
+ )
254
 
255
  return demo
256