ahmadouna commited on
Commit
834ea01
·
verified ·
1 Parent(s): 299455f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -35
app.py CHANGED
@@ -1,53 +1,57 @@
1
- import streamlit as st
2
  import pandas as pd
 
3
  from transformers import pipeline
4
- import numpy as np
5
- # Chargement du dataframe
 
 
 
 
 
6
  df = pd.read_csv("Comments.csv")
7
 
8
- #recup des comments en liste
9
  comments = df["Comment"].tolist()
10
- st.header("Analyse de Texte ")
11
 
12
- # Create a selectbox to choose a comment
13
- selected_comment = st.selectbox("Veuiller selelctionner un commentaire", comments)
14
 
15
- # Display the selected comment in the text input
 
 
 
16
  text = st.text_input('Entrer le texte à analyser', value=selected_comment)
17
 
18
  # Labels candidats pour la classification
19
- candidate_labels = ["commentaire positive", "commentaire négative"]
20
 
21
  # Modèle de phrase pour la formation de l'hypothèse
22
  hypothesis_template = "Cet exemple est un {}."
23
 
24
- # Create the classifier pipeline
25
- classifier = pipeline("zero-shot-classification", model="morit/french_xlm_xnli")
26
-
27
- # Exécution de la classification seulement si du texte est entré
28
- if text and candidate_labels: # Vérifier si du texte et au moins une étiquette sont présents
29
  result = classifier(text, candidate_labels, hypothesis_template=hypothesis_template)
30
  st.info(f"Résultat: {result['labels'][0]} avec une confiance de {result['scores'][0]*100:.2f}%")
31
  else:
32
  st.write("Veuillez entrer du texte pour l'analyse.")
33
- image1 = "toph1.png"
34
- st.text("\n \n \n")
35
- st.markdown("**Differentes Process pour l'analyse de sentiments**")
36
- st.image(image1, caption="Workflow analyse de sentiment", use_column_width=True)
37
-
38
- st.text("\n \n \n")
39
- st.header("**Comment ça marche**")
40
- st.text("\n \n \n")
41
- st.markdown("1. Recuperation des EAEs")
42
- st.markdown("3. Traitement des entretiens")
43
- st.markdown("Separations en 2 ensembles Train pour entrainer notre modele et Test les données pour evaluer notre modele")
44
- st.markdown("2. Analyse exploratoire des données")
45
- st.markdown("4. Comparaison de plusieurs modeles de Machne Learning pour choisir notre modele")
46
- st.markdown("5. Evaluation du modele choisi")
47
- st.markdown("6. Mise en production du modele choisi")
48
-
49
- image2 = "nlp.PNG"
50
- st.text("\n \n \n")
51
- st.markdown("**Workflow**")
52
- st.image(image2, caption="Workflow analyse de sentiment", use_column_width=True)
53
- #a completer
 
 
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
+
6
+ # Charger le modèle pré-entraîné
7
+ classifier_model = "morit/french_xlm_xnli"
8
+ classifier = pipeline("zero-shot-classification", model=classifier_model)
9
+
10
+ # Charger les données depuis le fichier CSV
11
  df = pd.read_csv("Comments.csv")
12
 
13
+ # Récupérer les commentaires en liste
14
  comments = df["Comment"].tolist()
 
15
 
16
+ # Afficher l'entête
17
+ st.header("Analyse de Texte")
18
 
19
+ # Créer une selectbox pour choisir un commentaire
20
+ selected_comment = st.selectbox("Veuillez sélectionner un commentaire", comments)
21
+
22
+ # Afficher le commentaire sélectionné dans l'input text
23
  text = st.text_input('Entrer le texte à analyser', value=selected_comment)
24
 
25
  # Labels candidats pour la classification
26
+ candidate_labels = ["commentaire positif", "commentaire négatif"]
27
 
28
  # Modèle de phrase pour la formation de l'hypothèse
29
  hypothesis_template = "Cet exemple est un {}."
30
 
31
+ # Exécuter la classification seulement si du texte est entré
32
+ if text and candidate_labels:
 
 
 
33
  result = classifier(text, candidate_labels, hypothesis_template=hypothesis_template)
34
  st.info(f"Résultat: {result['labels'][0]} avec une confiance de {result['scores'][0]*100:.2f}%")
35
  else:
36
  st.write("Veuillez entrer du texte pour l'analyse.")
37
+
38
+ # Calculer les métriques de performance (vous devez ajuster ces lignes selon votre tâche)
39
+ if text and candidate_labels:
40
+ inputs = df["Comment"].tolist()
41
+ true_labels = df["Label"].tolist()
42
+ predictions = classifier(inputs, candidate_labels, hypothesis_template=hypothesis_template)
43
+ predicted_labels = [result['labels'][0] for result in predictions]
44
+
45
+ accuracy = accuracy_score(true_labels, predicted_labels)
46
+ precision = precision_score(true_labels, predicted_labels, average='binary') # Si votre tâche est binaire
47
+ recall = recall_score(true_labels, predicted_labels, average='binary') # Si votre tâche est binaire
48
+ f1 = f1_score(true_labels, predicted_labels, average='binary') # Si votre tâche est binaire
49
+ balanced_accuracy = balanced_accuracy_score(true_labels, predicted_labels)
50
+
51
+ # Afficher les métriques sous forme de tableau
52
+ st.header("Métriques de Performance")
53
+ metrics_df = pd.DataFrame({
54
+ "Métrique": ["Accuracy", "Precision", "Recall", "F1-score", "Balanced Accuracy"],
55
+ "Valeur": [accuracy, precision, recall, f1, balanced_accuracy]
56
+ })
57
+ st.table(metrics_df)