Spaces:
Sleeping
Sleeping
File size: 5,472 Bytes
f885769 aa47277 321bca5 36c4196 f885769 aa47277 336a6cf f885769 aa47277 321bca5 aa47277 00f9049 aa47277 f446f6e d66aa4b 35cac53 137c117 35cac53 e19d90e 35cac53 137c117 d66aa4b 6d555ff 137c117 e19d90e 137c117 2f1c149 aa47277 f885769 aa47277 4f0fab0 aa47277 f885769 321bca5 f885769 753f6bd f9faf28 753f6bd f885769 753f6bd f9faf28 f885769 ad6e436 a01f014 ad6e436 b8e55ef f885769 b8e55ef 321bca5 f885769 321bca5 b8e55ef e2e2e22 f885769 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import pandas as pd
import streamlit as st
from transformers import pipeline
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, balanced_accuracy_score
from PIL import Image
from transformers import AutoTokenizer, AutoModelForSequenceClassification,pipeline
# Charger le modèle pré-entraîné
classifier_model = "morit/french_xlm_xnli"
classifier_model ="MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7"
tokenizer=AutoTokenizer.from_pretrained(classifier_model)
classifier=pipeline("zero-shot-classification",model=classifier_model,tokenizer=tokenizer)
# Charger les données depuis le fichier CSV
df = pd.read_csv("fic.csv",sep=";")
# Récupérer les commentaires en liste
comments = df["text"].tolist()
# Afficher l'entête
st.header("Analyse de Texte")
st.subheader("Choisir les etiquettes a considerer")
col1, col2,col3,col4= st.columns(4) # Crée deux colonnes
with col1:
# Case à cocher dans la première colonne
joie_au_travail = st.checkbox("joie_au_travail", value=True) # Pré-cochée
with col2:
# Case à cocher dans la deuxième colonne
harcelement_moral = st.checkbox("harcelement_moral", value=True) # Pré-cochée
with col3:
# Case à cocher dans la deuxième colonne
epuisement_professionel = st.checkbox("epuisement_professionnel", value=True) # Pré-cochée
with col4:
# Case à cocher dans la deuxième colonne
neutre = st.checkbox("neutre", value=True) # Pré-cochée
# Collecter les labels choisis dans une liste
candidate_labels = []
if joie_au_travail:
candidate_labels.append("joie_au_travail") # Remplacer par le label exact pour "positif"
if harcelement_moral:
candidate_labels.append("harcelement_moral") # Remplacer par le label exact pour "négatif"
if epuisement_professionel:
candidate_labels.append("epuisement_professionel") # Remplacer par le label exact pour "négatif"
if neutre:
candidate_labels.append("neutre") # Remplacer par le label exact pour "négatif"
# Créer une selectbox pour choisir un commentaire
# Afficher le commentaire sélectionné dans l'input text
text = st.text_area('Entrer le texte à analyser')
# Modèle de phrase pour la formation de l'hypothèse
hypothesis_template = "Cet exemple est un {}."
#sil ya du texte et les etiquettes sont choisies on affiche un histogramme avec les etiquettes(joie,tristesse,surcharge) et leur probabilité
if text:
result = classifier(text, candidate_labels, hypothesis_template=hypothesis_template,truncation=True,max_length=1000)
#st.info(f"Résultat: {result['labels'][0]} avec une confiance de {result['scores'][0]*100:.2f}%")
# if result['labels'][0]==1:
# st.info(f"Résultat: commentaire positive avec une confiance de {result['scores'][0]*100:.2f}%")
# if result['labels'][0]==0:
# st.info(f"Résultat: commentaire negative avec une confiance de {result['scores'][0]*100:.2f}%")
# if result['labels'][0]==2:
# st.info(f"Résultat: commentaire neutre avec une confiance de {result['scores'][0]*100:.2f}%")
# Créer un dataframe pour l'affichage des résultats
df_result = pd.DataFrame({
"Etiquette": result["labels"],
"Probabilité": result["scores"]
})
#bouton pour geerer le texte saisi
if st.button("Analyser") :
# Afficher les résultats sous forme de tableau
st.header("Résultats")
#st.table(df_result)
# représenter les résultats sous forme d'histogramme
#taille de la figure
# fig, ax = plt.subplots(figsize=(4, 2))
# ax.bar(df_result["Etiquette"], df_result["Probabilité"])
# ax.set_xticklabels(["A", "B", "C","D"])
# ax.set_ylabel("Probabilité")
# ax.set_title("Probabilité de chaque étiquette")
# ax.legend(["Probabilité"])
fig, ax = plt.subplots(figsize=(8, 4))
bars = ax.bar(df_result["Etiquette"], df_result["Probabilité"])
# Ajouter des annotations de texte pour chaque barre
for bar in bars:
yval = bar.get_height()
ax.text(bar.get_x() + bar.get_width()/2, yval, round(yval, 2), ha='center', va='bottom')
ax.set_xlabel("Etiquette")
ax.set_ylabel("Probabilité")
ax.set_title("Probabilité de chaque étiquette")
# Afficher la légende
ax.legend(['Probabilité'], loc='upper right')
st.pyplot(fig)
#traitement ded données:train_test_split
st.header("Decoupage de notre dataset")
image=Image.open("train_test.PNG")
st.image(image, caption='Train_test_Split', use_column_width=True)
# Faire un tableau explicatives de metriques de performance(accuarcy,precision,recall,f1-score,balanced accuracy)
st.header("Métriques de Performance")
metrics_df = pd.DataFrame({
"Métrique": ["Accuracy", "Precision", "Recall", "F1-score", "Balanced Accuracy"],
"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']
})
st.table(metrics_df)
#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 |