Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
9 |
-
|
|
|
|
|
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
|
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
|
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'
|
45 |
|
46 |
|
47 |
# Modèle de phrase pour la formation de l'hypothèse
|
48 |
hypothesis_template = "Cet exemple est un {}."
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
|
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 |
-
|
57 |
-
if result['labels'][0]==0:
|
58 |
-
|
59 |
-
|
60 |
-
st.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
#
|
79 |
st.header("Métriques de Performance")
|
80 |
metrics_df = pd.DataFrame({
|
81 |
"Métrique": ["Accuracy", "Precision", "Recall", "F1-score", "Balanced Accuracy"],
|
82 |
-
"Valeur": [
|
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
|