Spaces:
Sleeping
Sleeping
File size: 4,909 Bytes
f885769 aa47277 321bca5 36c4196 f885769 aa47277 336a6cf f885769 aa47277 321bca5 aa47277 00f9049 aa47277 f885769 d66aa4b 35cac53 137c117 35cac53 137c117 35cac53 137c117 d66aa4b 6d555ff 137c117 2f1c149 aa47277 f885769 aa47277 4f0fab0 aa47277 f885769 321bca5 f885769 644aab3 f885769 d3121a7 f885769 aa47277 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 |
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("Choisr 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
stress_au_travail = st.checkbox("stress_au_travail", 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 stress_au_travail:
candidate_labels.append("stress_au_travail") # 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()
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 |