bechir09's picture
Upload folder using huggingface_hub
4d1bb75 verified

A newer version of the Gradio SDK is available: 6.9.0

Upgrade
metadata
title: ESG_Intelligence_Platform
app_file: app.py
sdk: gradio
sdk_version: 6.0.2

🌍 ESG Intelligence Platform

Advanced Multi-Label ESG Text Classification with Visual Analytics

ESG Platform Python Gradio

✨ Features

πŸ” Single Text Analysis

  • Real-time ESG classification with confidence scores
  • Visual radar chart showing ESG profile
  • Keyword highlighting to explain predictions
  • Interactive examples for learning

πŸ“ Batch Processing

  • Upload CSV or TXT files for bulk analysis
  • Aggregate statistics and visualizations
  • Export results to CSV format
  • Trend analysis across documents

πŸ“Š Visual Analytics

  • ESG Radar Charts - Visualize multi-dimensional ESG profiles
  • Confidence Bars - See per-category certainty
  • Distribution Pie Charts - Batch analysis summaries
  • Score Trend Lines - Track patterns across documents

πŸš€ Quick Start

Installation

# Clone or navigate to the app directory
cd esg_app

# Install dependencies
pip install -r requirements.txt

# Run the application
python app.py

Access the App

Once running, open your browser to:

  • Local: http://localhost:7860
  • Public (if share=True): Check terminal for URL

πŸ“– Usage Guide

Single Text Analysis

  1. Enter text in the input box (or select a sample)
  2. Click "πŸ” Analyze Text"
  3. View results:
    • Prediction pills showing detected categories
    • ESG Radar showing dimensional scores
    • Confidence bars with thresholds
    • Highlighted keywords explaining the classification

Batch Analysis

  1. Upload a file:
    • CSV: First column should contain text
    • TXT: Separate documents with blank lines
  2. Click "πŸ“Š Analyze Batch"
  3. View aggregate results and export to CSV

🏷️ ESG Categories

Category Icon Description
Environmental (E) 🌿 Climate, emissions, energy, waste, biodiversity
Social (S) πŸ‘₯ Labor practices, diversity, health & safety, community
Governance (G) βš–οΈ Board structure, ethics, transparency, compliance
Non-ESG πŸ“„ General business content without ESG relevance

πŸ”§ Model Architecture

Input Text
    ↓
Qwen3-Embedding-8B (4096-dim)
    ↓
StandardScaler
    ↓
Logistic Regression Ensemble (per-class)
    ↓
Threshold Optimization
    ↓
Multi-Label Predictions

Key Technical Details

  • Embedding Model: Qwen3-Embedding-8B (4096 dimensions)
  • Classification: Logistic Regression with balanced class weights
  • Cross-Validation: 5-fold MultilabelStratifiedKFold
  • Threshold Optimization: Per-class + joint macro-F1 optimization
  • Ensemble: 3-seed averaging for robustness

πŸ“ˆ Performance

Metric Score
Macro F1 0.82+
Environmental F1 0.78
Social F1 0.85
Governance F1 0.79
Non-ESG F1 0.84

🎨 Customization

Modify Thresholds

Edit app.py or model.py:

CONFIG.thresholds = {
    'E': 0.35,    # Lower = more Environmental predictions
    'S': 0.45,    # Balanced
    'G': 0.40,    # Balanced
    'non_ESG': 0.50
}

Add Keywords

Extend the keyword lists in ESGConfig:

CONFIG.keywords['E'].extend(['sustainability', 'climate action'])

Custom Styling

Modify THEME_CSS in app.py for visual customization.

πŸ“ Project Structure

esg_app/
β”œβ”€β”€ app.py              # Main Gradio application
β”œβ”€β”€ model.py            # Model inference module
β”œβ”€β”€ requirements.txt    # Python dependencies
β”œβ”€β”€ README.md           # This file
└── models/             # Saved model weights (optional)
    β”œβ”€β”€ scaler.joblib
    β”œβ”€β”€ lr_E.joblib
    β”œβ”€β”€ lr_S.joblib
    β”œβ”€β”€ lr_G.joblib
    └── lr_non_ESG.joblib

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

πŸ“œ License

MIT License - Feel free to use and modify!


Built with ❀️ for ESG Analysis

🌿 Environmental | πŸ‘₯ Social | βš–οΈ Governance