Spaces:
Running
Running
import gradio as gr | |
import tensorflow as tf | |
import numpy as np | |
import joblib | |
from tensorflow.keras.preprocessing.sequence import pad_sequences | |
from transformers import pipeline | |
# Fonction de prédiction pour le lstm | |
def analyser_sentiment_lstm(tweet): | |
sequence = tokenizer.texts_to_sequences([tweet]) | |
padded = pad_sequences(sequence) | |
prediction = model.predict(padded)[0] | |
sentiment = "Positif" if prediction[0] >= 0.5 else "Négatif" | |
return {sentiment: float(prediction[0]) if sentiment == "Positif" else 1 - float(prediction[0])} | |
def analyser_sentiment_camembert(tweet): | |
# charger le modèle | |
sentiment_pipeline = pipeline("sentiment-analysis", model="cmarkea/distilcamembert-base-sentiment") | |
# appliquer le modèle | |
result = sentiment_pipeline(tweet)[0]['label'] | |
return result | |
# Charger le modèle LSTM | |
model = tf.keras.models.load_model("lstm_model.h5") | |
# Charger le tokenizer utilisé pendant l'entraînement | |
tokenizer = joblib.load('tokenizer.joblib') | |
# définir les blocks | |
demo = gr.Blocks(theme = 'earneleh/paris') | |
# Interface Gradio | |
interface1 = gr.Interface( | |
fn=analyser_sentiment_lstm, | |
inputs=gr.Textbox(lines=3, placeholder="Entrez un tweet en français ici..."), | |
outputs=gr.Label(num_top_classes=3), | |
title="Analyse de Sentiment de Tweets", | |
description="Entrez un tweet en français pour obtenir son sentiment (positif, négatif)." | |
) | |
interface2 = gr.Interface( | |
fn = analyser_sentiment_camembert, | |
inputs=gr.Textbox(lines=3, placeholder="Entrez un tweet en français ici..."), | |
outputs=gr.Textbox(label='Output'), | |
title="Analyse de Sentiment de Tweets", | |
description="Entrez un tweet en français pour obtenir son sentiment." | |
) | |
# faire un tabbing des interfaces | |
with demo: | |
gr.TabbedInterface([interface1, interface2], ['LSTM_SAM', 'CAMEMBERT_SAM']) | |
# lancer l'interface | |
demo.launch() |