|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
classifier_model = "morit/french_xlm_xnli" |
|
classifier = pipeline("zero-shot-classification", model=classifier_model) |
|
|
|
|
|
df = pd.read_csv("fic.csv", sep=";") |
|
|
|
comments = df["text"].tolist() |
|
|
|
|
|
st.header("Analyse de Texte") |
|
|
|
|
|
selected_comment = st.selectbox("Veuillez sélectionner un commentaire", comments) |
|
|
|
|
|
text = st.text_area('Entrer le texte à analyser', value=selected_comment) |
|
|
|
|
|
candidate_labels = [1, 0] |
|
|
|
|
|
hypothesis_template = "Cet exemple est un {}." |
|
|
|
|
|
if st.button("Analyser le texte"): |
|
if text and candidate_labels: |
|
result = classifier(text, candidate_labels, hypothesis_template=hypothesis_template) |
|
|
|
if result['labels'][0] == 1: |
|
st.info(f"Résultat: commentaire positif avec une confiance de {result['scores'][0]*100:.2f}%") |
|
if result['labels'][0] == 0: |
|
st.info(f"Résultat: commentaire négatif avec une confiance de {result['scores'][0]*100:.2f}%") |
|
else: |
|
st.write("Veuillez entrer du texte pour l'analyse.") |
|
|
|
|
|
inputs = df["text"].tolist() |
|
true_labels = df["label"].tolist() |
|
predictions = classifier(inputs, candidate_labels, hypothesis_template=hypothesis_template) |
|
predicted_labels = [result['labels'][0] for result in predictions] |
|
|
|
accuracy = accuracy_score(true_labels, predicted_labels) |
|
precision = precision_score(true_labels, predicted_labels, average='binary') |
|
recall = recall_score(true_labels, predicted_labels, average='binary') |
|
f1 = f1_score(true_labels, predicted_labels, average='binary') |
|
balanced_accuracy = balanced_accuracy_score(true_labels, predicted_labels) |
|
|
|
|
|
st.header("Métriques de Performance") |
|
st.subheader("Elles sont evaluées sur des données labelisés") |
|
metrics_df = pd.DataFrame({ |
|
"Métrique": ["Accuracy", "Precision", "Recall", "F1-score", "Balanced Accuracy"], |
|
"Valeur": [accuracy, precision, recall, f1, balanced_accuracy] |
|
}) |
|
st.table(metrics_df) |
|
|
|
st.markdown("Accuracy c'est le ratio d'instances correctement predites surle ratio total") |
|
st.markdown("Precision c'est le Pourcentage de bonnes predictions positives sur le nombre de positifs") |
|
st.markdown("Rappel c'est le Pourcentage de bonnes predictions positives sur le total") |
|
st.markdown("f1-score est la Moyenne de la precision et du rappel") |
|
st.markdown("Balanced-Accuracy est la Moyenne des taux de vrais positifs pour chaque classe") |
|
|