File size: 4,619 Bytes
f885769
 
 
 
 
 
aa47277
 
 
321bca5
36c4196
f885769
 
aa47277
336a6cf
f885769
 
 
 
aa47277
 
321bca5
aa47277
00f9049
aa47277
 
 
 
f885769
d66aa4b
35cac53
 
 
b2226a9
35cac53
 
b2226a9
35cac53
 
b2226a9
d66aa4b
 
 
6d555ff
 
b2226a9
 
 
 
f885769
d4d20a6
aa47277
 
 
f885769
aa47277
 
 
4f0fab0
aa47277
f885769
 
 
 
 
321bca5
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
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 = st.checkbox("Joie", value=True)  # Pré-cochée
with col2:
    # Case à cocher dans la deuxième colonne
    tristesse = st.checkbox("Tristesse", value=True)  # Pré-cochée
with col3:
    # Case à cocher dans la deuxième colonne
    surcharge = st.checkbox("surcharge", 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:
    candidate_labels.append("joie")  # Remplacer par le label exact pour "positif"
if tristesse:
    candidate_labels.append("tristesse")  # Remplacer par le label exact pour "négatif"
if surcharge:
    candidate_labels.append("surcharge")  # 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_ylabel("Probabilité")
    ax.set_title("Probabilité de chaque étiquette")
    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