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
|