ahmadouna commited on
Commit
321bca5
1 Parent(s): e2e2e22

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -99
app.py CHANGED
@@ -1,76 +1,14 @@
1
- # import pandas as pd
2
- # import streamlit as st
3
- # from transformers import pipeline
4
- # from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, balanced_accuracy_score
5
-
6
- # # Charger le modèle pré-entraîné
7
- # classifier_model = "morit/french_xlm_xnli"
8
- # classifier = pipeline("zero-shot-classification", model=classifier_model)
9
-
10
- # # Charger les données depuis le fichier CSV
11
- # df = pd.read_csv("fic.csv",sep=";")
12
- # # Récupérer les commentaires en liste
13
- # comments = df["text"].tolist()
14
-
15
- # # Afficher l'entête
16
- # st.header("Analyse de Texte")
17
-
18
- # # Créer une selectbox pour choisir un commentaire
19
- # selected_comment = st.selectbox("Veuillez sélectionner un commentaire", comments)
20
-
21
- # # Afficher le commentaire sélectionné dans l'input text
22
- # text = st.text_area('Entrer le texte à analyser', value=selected_comment)
23
-
24
- # # Labels candidats pour la classification
25
- # candidate_labels = [0, 1]
26
-
27
- # # Modèle de phrase pour la formation de l'hypothèse
28
- # hypothesis_template = "Cet exemple est un commentaire {}."
29
-
30
- # # Exécuter la classification seulement si du texte est entré
31
- # if text and candidate_labels:
32
- # result = classifier(text, candidate_labels, hypothesis_template=hypothesis_template)
33
-
34
- # #st.info(f"Résultat: {result['labels'][0]} avec une confiance de {result['scores'][0]*100:.2f}%")
35
- # if result['labels'][0]==1:
36
- # st.info(f"Résultat: commentaire positive avec une confiance de {result['scores'][0]*100:.2f}%")
37
- # else:
38
- # st.info(f"Résultat: commentaire negative avec une confiance de {result['scores'][0]*100:.2f}%")
39
- # else:
40
- # st.write("Veuillez entrer du texte pour l'analyse.")
41
-
42
- # # Calculer les métriques de performance (vous devez ajuster ces lignes selon votre tâche)
43
- # if text and candidate_labels:
44
- # inputs = df["text"].tolist()
45
- # true_labels = df["label"].tolist()
46
- # predictions = classifier(inputs, candidate_labels, hypothesis_template=hypothesis_template)
47
- # predicted_labels = [result['labels'][0] for result in predictions]
48
-
49
- # accuracy = accuracy_score(true_labels, predicted_labels)
50
- # precision = precision_score(true_labels, predicted_labels, average='binary') # Si votre tâche est binaire
51
- # recall = recall_score(true_labels, predicted_labels, average='binary') # Si votre tâche est binaire
52
- # f1 = f1_score(true_labels, predicted_labels, average='binary') # Si votre tâche est binaire
53
- # balanced_accuracy = balanced_accuracy_score(true_labels, predicted_labels)
54
-
55
- # # Afficher les métriques sous forme de tableau
56
- # st.header("Métriques de Performance")
57
- # metrics_df = pd.DataFrame({
58
- # "Métrique": ["Accuracy", "Precision", "Recall", "F1-score", "Balanced Accuracy"],
59
- # "Valeur": [accuracy, precision, recall, f1, balanced_accuracy]
60
- # })
61
- # st.table(metrics_df)
62
-
63
  import pandas as pd
64
  import streamlit as st
65
  from transformers import pipeline
66
- from datasets import load_metric
67
 
68
  # Charger le modèle pré-entraîné
69
  classifier_model = "morit/french_xlm_xnli"
70
  classifier = pipeline("zero-shot-classification", model=classifier_model)
71
 
72
  # Charger les données depuis le fichier CSV
73
- df = pd.read_csv("fic.csv", sep=";")
74
  # Récupérer les commentaires en liste
75
  comments = df["text"].tolist()
76
 
@@ -92,52 +30,33 @@ hypothesis_template = "Cet exemple est un commentaire {}."
92
  # Exécuter la classification seulement si du texte est entré
93
  if text and candidate_labels:
94
  result = classifier(text, candidate_labels, hypothesis_template=hypothesis_template)
95
-
96
- if result['labels'][0] == 1:
97
- st.info(f"Résultat: commentaire positive avec une confiance de {result['scores'][0] * 100:.2f}%")
 
98
  else:
99
- st.info(f"Résultat: commentaire negative avec une confiance de {result['scores'][0] * 100:.2f}%")
100
  else:
101
  st.write("Veuillez entrer du texte pour l'analyse.")
102
 
103
- # Utiliser les métriques de Hugging Face
104
  if text and candidate_labels:
105
  inputs = df["text"].tolist()
106
  true_labels = df["label"].tolist()
107
  predictions = classifier(inputs, candidate_labels, hypothesis_template=hypothesis_template)
108
  predicted_labels = [result['labels'][0] for result in predictions]
109
-
110
- # Déclarer un tableau pour stocker les métriques
111
- metrics_table = []
112
-
113
- # Calculer les métriques une par une et les ajouter au tableau
114
- precision = load_metric("precision")
115
- precision.add_batch(predictions=predicted_labels, references=true_labels)
116
- precision_result = precision.compute()
117
- metrics_table.append(("Precision", precision_result))
118
-
119
- accuracy = load_metric("accuracy")
120
- accuracy.add_batch(predictions=predicted_labels, references=true_labels)
121
- accuracy_result = accuracy.compute()
122
- metrics_table.append(("Accuracy", accuracy_result))
123
-
124
- recall = load_metric("recall")
125
- recall.add_batch(predictions=predicted_labels, references=true_labels)
126
- recall_result = recall.compute()
127
- metrics_table.append(("Recall", recall_result))
128
-
129
- f1 = load_metric("f1")
130
- f1.add_batch(predictions=predicted_labels, references=true_labels)
131
- f1_result = f1.compute()
132
- metrics_table.append(("F1 Score", f1_result))
133
-
134
- roc_auc = load_metric("roc_auc")
135
- roc_auc.add_batch(predictions=predicted_labels, references=true_labels)
136
- roc_auc_result = roc_auc.compute()
137
- metrics_table.append(("ROC-AUC Score", roc_auc_result))
138
 
139
  # Afficher les métriques sous forme de tableau
140
  st.header("Métriques de Performance")
141
- metrics_df = pd.DataFrame(metrics_table, columns=["Métrique", "Valeur"])
 
 
 
142
  st.table(metrics_df)
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import pandas as pd
2
  import streamlit as st
3
  from transformers import pipeline
4
+ from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, balanced_accuracy_score
5
 
6
  # Charger le modèle pré-entraîné
7
  classifier_model = "morit/french_xlm_xnli"
8
  classifier = pipeline("zero-shot-classification", model=classifier_model)
9
 
10
  # Charger les données depuis le fichier CSV
11
+ df = pd.read_csv("fic.csv",sep=";")
12
  # Récupérer les commentaires en liste
13
  comments = df["text"].tolist()
14
 
 
30
  # Exécuter la classification seulement si du texte est entré
31
  if text and candidate_labels:
32
  result = classifier(text, candidate_labels, hypothesis_template=hypothesis_template)
33
+
34
+ #st.info(f"Résultat: {result['labels'][0]} avec une confiance de {result['scores'][0]*100:.2f}%")
35
+ if result['labels'][0]==1:
36
+ st.info(f"Résultat: commentaire positive avec une confiance de {result['scores'][0]*100:.2f}%")
37
  else:
38
+ st.info(f"Résultat: commentaire negative avec une confiance de {result['scores'][0]*100:.2f}%")
39
  else:
40
  st.write("Veuillez entrer du texte pour l'analyse.")
41
 
42
+ # Calculer les métriques de performance (vous devez ajuster ces lignes selon votre tâche)
43
  if text and candidate_labels:
44
  inputs = df["text"].tolist()
45
  true_labels = df["label"].tolist()
46
  predictions = classifier(inputs, candidate_labels, hypothesis_template=hypothesis_template)
47
  predicted_labels = [result['labels'][0] for result in predictions]
48
+
49
+ accuracy = accuracy_score(true_labels, predicted_labels)
50
+ precision = precision_score(true_labels, predicted_labels, average='binary') # Si votre tâche est binaire
51
+ recall = recall_score(true_labels, predicted_labels, average='binary') # Si votre tâche est binaire
52
+ f1 = f1_score(true_labels, predicted_labels, average='binary') # Si votre tâche est binaire
53
+ balanced_accuracy = balanced_accuracy_score(true_labels, predicted_labels)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
 
55
  # Afficher les métriques sous forme de tableau
56
  st.header("Métriques de Performance")
57
+ metrics_df = pd.DataFrame({
58
+ "Métrique": ["Accuracy", "Precision", "Recall", "F1-score", "Balanced Accuracy"],
59
+ "Valeur": [accuracy, precision, recall, f1, balanced_accuracy]
60
+ })
61
  st.table(metrics_df)
62