Spaces:
Build error
Build error
Download app.py from Kotieu/sentimentAnalyzer: direct link, hf CLI and curl.
- Browser
- Download file 3.25 kB
-
https://huggingface.co/spaces/Kotieu/sentimentAnalyzer/resolve/main/app.py
- Command line
-
hf download hf://spaces/Kotieu/sentimentAnalyzer/app.py
-
curl -L -o app.py https://huggingface.co/spaces/Kotieu/sentimentAnalyzer/resolve/main/app.py
3.25 kB
| import streamlit as st | |
| from transformers import pipeline | |
| import matplotlib.pyplot as plt | |
| from PIL import Image, ImageFilter | |
| import numpy as np | |
| from tensorflow.keras.applications.mobilenet_v2 import MobileNetV2, preprocess_input, decode_predictions | |
| from tensorflow.keras.preprocessing.image import img_to_array | |
| # Chargement du modèle d'analyse de sentiments et de reconnaissance d'images | |
| sentiment_pipeline = pipeline("sentiment-analysis") | |
| image_model = MobileNetV2(weights='imagenet') | |
| def plot_sentiment(sentiment): | |
| """ Dessine un graphique en camembert pour l'analyse de sentiments. """ | |
| labels = ['Positive', 'Negative'] | |
| sizes = [sentiment['score'], 1 - sentiment['score']] | |
| colors = ['#ff9999','#66b3ff'] | |
| fig, ax = plt.subplots() | |
| ax.pie(sizes, colors=colors, labels=labels, autopct='%1.1f%%', startangle=90) | |
| ax.axis('equal') | |
| return fig | |
| def classify_image(image): | |
| """ Classifie l'image et retourne les prédictions. """ | |
| image = image.resize((224, 224)) | |
| image = img_to_array(image) | |
| image = np.expand_dims(image, axis=0) | |
| image = preprocess_input(image) | |
| preds = image_model.predict(image) | |
| return decode_predictions(preds, top=3)[0] | |
| def apply_filters(image): | |
| """ Applique des filtres à l'image et retourne l'image filtrée. """ | |
| filter = st.sidebar.selectbox("Sélectionnez un filtre", ["Original", "Flou", "Contours", "Accentuation"]) | |
| if filter == "Flou": | |
| return image.filter(ImageFilter.BLUR) | |
| elif filter == "Contours": | |
| return image.filter(ImageFilter.CONTOUR) | |
| elif filter == "Accentuation": | |
| return image.filter(ImageFilter.EDGE_ENHANCE) | |
| return image | |
| # Configuration de l'application | |
| st.title("Mon Application de Reconnaissance d'Images et d'Analyse de Sentiments") | |
| st.sidebar.title("Options") | |
| # Barre de navigation | |
| options = st.sidebar.radio("Choisissez une fonctionnalité:", ['Reconnaissance d\'Images', 'Analyse de Sentiments']) | |
| # Reconnaissance d'images | |
| if options == 'Reconnaissance d\'Images': | |
| uploaded_file = st.file_uploader("Téléchargez une image...", type=["jpg", "png", "jpeg"]) | |
| if uploaded_file is not None: | |
| image = Image.open(uploaded_file) | |
| filtered_image = apply_filters(image) | |
| st.image(filtered_image, caption='Image téléchargée', use_column_width=True) | |
| # Classification de l'image | |
| st.write("Classifying...") | |
| labels = classify_image(filtered_image) | |
| for label in labels: | |
| st.write(f"{label[1]} ({label[2]*100:.2f}%)") | |
| # Analyse de sentiments basée sur les étiquettes de l'image | |
| sentiments = [sentiment_pipeline(label[1])[0] for label in labels] | |
| for sentiment in sentiments: | |
| st.write(f"Sentiment pour '{sentiment['label']}' : {sentiment['score']:.2f}") | |
| fig = plot_sentiment(sentiment) | |
| st.pyplot(fig) | |
| # Analyse de sentiments | |
| elif options == 'Analyse de Sentiments': | |
| user_input = st.text_area("Entrez le texte à analyser", "Tapez ici...") | |
| if st.button("Analyser"): | |
| result = sentiment_pipeline(user_input)[0] | |
| st.write(f"Sentiment: {result['label']}, Score: {result['score']:.2f}") | |
| fig = plot_sentiment(result) | |
| st.pyplot(fig) | |