ahmadouna commited on
Commit
f885769
·
verified ·
1 Parent(s): d4d20a6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -31
app.py CHANGED
@@ -1,12 +1,22 @@
 
 
 
 
 
 
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
  from PIL import Image
 
 
6
  # Charger le modèle pré-entraîné
7
  classifier_model = "morit/french_xlm_xnli"
8
- #classifier_model ="MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7"
9
- classifier = pipeline("zero-shot-classification", model=classifier_model)
 
 
10
 
11
  # Charger les données depuis le fichier CSV
12
  df = pd.read_csv("fic.csv",sep=";")
@@ -16,7 +26,7 @@ comments = df["text"].tolist()
16
  # Afficher l'entête
17
  st.header("Analyse de Texte")
18
 
19
- st.subheader("Choisr les etiquettes a consideerer")
20
  col1, col2,col3= st.columns(3) # Crée deux colonnes
21
 
22
  with col1:
@@ -35,52 +45,62 @@ if joie:
35
  candidate_labels.append("joie") # Remplacer par le label exact pour "positif"
36
  if tristesse:
37
  candidate_labels.append("tristesse") # Remplacer par le label exact pour "négatif"
38
- if peur:
39
  candidate_labels.append("surcharge") # Remplacer par le label exact pour "négatif"
40
  # Créer une selectbox pour choisir un commentaire
41
- selected_comment = st.selectbox("Veuillez sélectionner un commentaire", comments)
42
 
43
  # Afficher le commentaire sélectionné dans l'input text
44
- text = st.text_area('Entrer le texte à analyser', value=selected_comment)
45
 
46
 
47
  # Modèle de phrase pour la formation de l'hypothèse
48
  hypothesis_template = "Cet exemple est un {}."
49
 
50
- # Exécuter la classification seulement si du texte est entré
51
- if text and candidate_labels:
52
- result = classifier(text, candidate_labels, hypothesis_template=hypothesis_template)
53
-
 
54
  #st.info(f"Résultat: {result['labels'][0]} avec une confiance de {result['scores'][0]*100:.2f}%")
55
- if result['labels'][0]==1:
56
- st.info(f"Résultat: commentaire positive avec une confiance de {result['scores'][0]*100:.2f}%")
57
- if result['labels'][0]==0:
58
- st.info(f"Résultat: commentaire negative avec une confiance de {result['scores'][0]*100:.2f}%")
59
- else:
60
- st.write("Veuillez entrer du texte pour l'analyse.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
 
 
 
62
  st.header("Decoupage de notre dataset")
63
  image=Image.open("train_test.PNG")
64
  st.image(image, caption='Train_test_Split', use_column_width=True)
65
- # Calculer les métriques de performance (vous devez ajuster ces lignes selon votre tâche)
66
-
67
- inputs = df["text"].tolist()
68
- true_labels = df["label"].tolist()
69
- predictions = classifier(inputs, candidate_labels, hypothesis_template=hypothesis_template)
70
- predicted_labels = [result['labels'][0] for result in predictions]
71
-
72
- accuracy = accuracy_score(true_labels, predicted_labels)
73
- precision = precision_score(true_labels, predicted_labels, average='binary')
74
- recall = recall_score(true_labels, predicted_labels, average='binary')
75
- f1 = f1_score(true_labels, predicted_labels, average='binary')
76
- balanced_accuracy = balanced_accuracy_score(true_labels, predicted_labels)
77
 
78
- # Afficher les métriques sous forme de tableau
79
  st.header("Métriques de Performance")
80
  metrics_df = pd.DataFrame({
81
  "Métrique": ["Accuracy", "Precision", "Recall", "F1-score", "Balanced Accuracy"],
82
- "Valeur": [accuracy, precision, recall, f1, balanced_accuracy]
83
  })
84
  st.table(metrics_df)
85
- # a continuer
86
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import matplotlib.pyplot as plt
4
+
5
+
6
+
7
  import pandas as pd
8
  import streamlit as st
9
  from transformers import pipeline
10
  from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, balanced_accuracy_score
11
  from PIL import Image
12
+ from transformers import AutoTokenizer, AutoModelForSequenceClassification,pipeline
13
+
14
  # Charger le modèle pré-entraîné
15
  classifier_model = "morit/french_xlm_xnli"
16
+ classifier_model ="MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7"
17
+ tokenizer=AutoTokenizer.from_pretrained(classifier_model)
18
+
19
+ classifier=pipeline("zero-shot-classification",model=classifier_model,tokenizer=tokenizer)
20
 
21
  # Charger les données depuis le fichier CSV
22
  df = pd.read_csv("fic.csv",sep=";")
 
26
  # Afficher l'entête
27
  st.header("Analyse de Texte")
28
 
29
+ st.subheader("Choisr les etiquettes a considerer")
30
  col1, col2,col3= st.columns(3) # Crée deux colonnes
31
 
32
  with col1:
 
45
  candidate_labels.append("joie") # Remplacer par le label exact pour "positif"
46
  if tristesse:
47
  candidate_labels.append("tristesse") # Remplacer par le label exact pour "négatif"
48
+ if surcharge:
49
  candidate_labels.append("surcharge") # Remplacer par le label exact pour "négatif"
50
  # Créer une selectbox pour choisir un commentaire
 
51
 
52
  # Afficher le commentaire sélectionné dans l'input text
53
+ text = st.text_area('Entrer le texte à analyser')
54
 
55
 
56
  # Modèle de phrase pour la formation de l'hypothèse
57
  hypothesis_template = "Cet exemple est un {}."
58
 
59
+
60
+ #sil ya du texte et les etiquettes sont choisies on affiche un histogramme avec les etiquettes(joie,tristesse,surcharge) et leur probabilité
61
+
62
+ if text:
63
+ result = classifier(text, candidate_labels, hypothesis_template=hypothesis_template,truncation=True,max_length=1000)
64
  #st.info(f"Résultat: {result['labels'][0]} avec une confiance de {result['scores'][0]*100:.2f}%")
65
+ # if result['labels'][0]==1:
66
+ # st.info(f"Résultat: commentaire positive avec une confiance de {result['scores'][0]*100:.2f}%")
67
+ # if result['labels'][0]==0:
68
+ # st.info(f"Résultat: commentaire negative avec une confiance de {result['scores'][0]*100:.2f}%")
69
+ # if result['labels'][0]==2:
70
+ # st.info(f"Résultat: commentaire neutre avec une confiance de {result['scores'][0]*100:.2f}%")
71
+ # Créer un dataframe pour l'affichage des résultats
72
+ df_result = pd.DataFrame({
73
+ "Etiquette": result["labels"],
74
+ "Probabilité": result["scores"]
75
+ })
76
+ #bouton pour geerer le texte saisi
77
+ if st.button("Analyser") :
78
+ # Afficher les résultats sous forme de tableau
79
+ st.header("Résultats")
80
+ #st.table(df_result)
81
+
82
+
83
+ # représenter les résultats sous forme d'histogramme
84
+ #taille de la figure
85
+ fig, ax = plt.subplots(figsize=(4, 2))
86
+ ax.bar(df_result["Etiquette"], df_result["Probabilité"])
87
+ ax.set_ylabel("Probabilité")
88
+ ax.set_title("Probabilité de chaque étiquette")
89
+ st.pyplot(fig)
90
 
91
+
92
+ #traitement ded données:train_test_split
93
  st.header("Decoupage de notre dataset")
94
  image=Image.open("train_test.PNG")
95
  st.image(image, caption='Train_test_Split', use_column_width=True)
 
 
 
 
 
 
 
 
 
 
 
 
96
 
97
+ # Faire un tableau explicatives de metriques de performance(accuarcy,precision,recall,f1-score,balanced accuracy)
98
  st.header("Métriques de Performance")
99
  metrics_df = pd.DataFrame({
100
  "Métrique": ["Accuracy", "Precision", "Recall", "F1-score", "Balanced Accuracy"],
101
+ "Valeur": ['Pourcentage de prédictions correctes', 'Pourcentage de prédictions positives correctes', 'Pourcentage de vrais positifs prédits', 'Moyenne pondérée de la précision et du rappel', 'Moyenne du rappel pour chaque classe']
102
  })
103
  st.table(metrics_df)
 
104
 
105
+
106
+ #Ce matin, j'ai été submergé de joie en recevant la promotion tant attendue, un moment vraiment heureux. Cependant, l'annonce du départ soudain de mon collègue préféré a apporté une vague de tristesse. Face à ces nouvelles responsabilités, je me sens déjà surchargé, me demandant comment je vais gérer tout cela