ahmadouna commited on
Commit
027912a
1 Parent(s): 13516a4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +76 -16
app.py CHANGED
@@ -1,14 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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,32 +92,30 @@ hypothesis_template = "Cet exemple est un commentaire {}."
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)
 
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
  # 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
+ # Calculer les métriques de performance
111
+ metrics = load_metric("precision", "accuracy", "recall", "f1", "roc_auc")
112
+ metrics.add_batch(predictions=predicted_labels, references=true_labels)
113
+ results = metrics.compute()
 
114
 
115
  # Afficher les métriques sous forme de tableau
116
  st.header("Métriques de Performance")
117
  metrics_df = pd.DataFrame({
118
+ "Métrique": ["Precision", "Accuracy", "Recall", "F1 Score", "ROC-AUC Score"],
119
+ "Valeur": [results["precision"], results["accuracy"], results["recall"], results["f1"], results["roc_auc"]]
120
  })
121
  st.table(metrics_df)