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