LaurentTRIPIED commited on
Commit
f7f5fe1
1 Parent(s): 0fff078

V1.0 RSECategorizer.py

Browse files
Files changed (2) hide show
  1. RSECategorizer.py +32 -0
  2. app.py +41 -15
RSECategorizer.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # RSECategorizer.py
2
+
3
+ from transformers import pipeline
4
+ import pandas as pd
5
+
6
+ # Charger le pipeline de classification avec un modèle léger
7
+ classifier = pipeline("zero-shot-classification", model="typeform/distilbert-base-uncased-mnli")
8
+
9
+ def classify_rse_actions(descriptions):
10
+ categories = [
11
+ "La gouvernance de la structure",
12
+ "Les droits humains",
13
+ "Les conditions et relations de travail",
14
+ "La responsabilité environnementale",
15
+ "La loyauté des pratiques",
16
+ "Les questions relatives au consommateur et à la protection du consommateur",
17
+ "Les communautés et le développement local"
18
+ ]
19
+
20
+ classified_data = []
21
+ for description in descriptions:
22
+ # Classification de chaque description
23
+ result = classifier(description, categories)
24
+ # Récupération de la catégorie avec la probabilité la plus élevée
25
+ top_category = result['labels'][0]
26
+ classified_data.append(top_category)
27
+
28
+ return classified_data
29
+
30
+ # Exemple d'utilisation (à des fins de test, à commenter ou supprimer pour l'intégration finale)
31
+ # descriptions = ["Promotion de l'énergie renouvelable", "Amélioration des conditions de travail"]
32
+ # print(classify_rse_actions(descriptions))
app.py CHANGED
@@ -3,6 +3,7 @@ import pandas as pd
3
  import requests
4
  import folium
5
  from streamlit_folium import folium_static
 
6
 
7
  # Fonction pour récupérer les données de l'API
8
  def get_data():
@@ -33,33 +34,58 @@ def display_organisations_engagees():
33
  df = df[["Nom", "Commune", "Section NAF", "Effectif", "Action RSE"]]
34
  st.dataframe(df, width=None, height=None)
35
 
36
- # Nouvelle fonction pour l'onglet "GeoRSE Insights"
37
  def display_geo_rse_insights():
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  data, _ = get_data()
39
  if data:
40
- m = folium.Map(location=[44.84474, -0.60711], zoom_start=11)
41
- for item in data:
42
- point_geo = item.get('point_geo', [])
43
- if point_geo:
44
- lat, lon = point_geo
45
- lat, lon = float(lat), float(lon)
46
- if lat and lon:
47
- folium.Marker(
48
- [lat, lon],
49
- popup=f"<b>{item.get('nom_courant_denomination', 'Sans nom')}</b><br>Action RSE: {item.get('action_rse', 'Non spécifié')}",
50
- icon=folium.Icon(color="green", icon="leaf"),
51
- ).add_to(m)
52
- folium_static(m)
53
 
54
  # Main function orchestrating the app UI
55
  def main():
56
  st.sidebar.title("Navigation")
57
- app_mode = st.sidebar.radio("Choisissez l'onglet", ["Organisations engagées", "GeoRSE Insights"])
58
 
59
  if app_mode == "Organisations engagées":
60
  display_organisations_engagees()
61
  elif app_mode == "GeoRSE Insights":
62
  display_geo_rse_insights()
 
 
63
 
64
  if __name__ == "__main__":
65
  main()
 
3
  import requests
4
  import folium
5
  from streamlit_folium import folium_static
6
+ from transformers import pipeline
7
 
8
  # Fonction pour récupérer les données de l'API
9
  def get_data():
 
34
  df = df[["Nom", "Commune", "Section NAF", "Effectif", "Action RSE"]]
35
  st.dataframe(df, width=None, height=None)
36
 
37
+ # Fonction pour l'onglet "GeoRSE Insights"
38
  def display_geo_rse_insights():
39
+ # La même fonction que celle définie précédemment pour afficher la carte
40
+
41
+ # Classification des actions RSE basée sur les descriptions
42
+ def classify_rse_actions(descriptions):
43
+ classifier = pipeline("zero-shot-classification", model="typeform/distilbert-base-uncased-mnli")
44
+ categories = [
45
+ "La gouvernance de la structure",
46
+ "Les droits humains",
47
+ "Les conditions et relations de travail",
48
+ "La responsabilité environnementale",
49
+ "La loyauté des pratiques",
50
+ "Les questions relatives au consommateur et à la protection du consommateur",
51
+ "Les communautés et le développement local"
52
+ ]
53
+
54
+ classified_data = []
55
+ for description in descriptions:
56
+ result = classifier(description, categories)
57
+ top_category = result['labels'][0]
58
+ classified_data.append(top_category)
59
+
60
+ return classified_data
61
+
62
+ # Nouvelle fonction pour l'onglet de classification RSE
63
+ def display_rse_categorizer():
64
+ st.header("Classification des Actions RSE")
65
+ st.write("Classification automatique des actions RSE des entreprises.")
66
+
67
  data, _ = get_data()
68
  if data:
69
+ descriptions = [item['action_rse'] for item in data if 'action_rse' in item]
70
+ categories = classify_rse_actions(descriptions)
71
+
72
+ # Affichage des résultats
73
+ for i, category in enumerate(categories):
74
+ st.write(f"Action RSE: {descriptions[i]}")
75
+ st.write(f"Catégorie prédite: {category}")
76
+ st.write("---")
 
 
 
 
 
77
 
78
  # Main function orchestrating the app UI
79
  def main():
80
  st.sidebar.title("Navigation")
81
+ app_mode = st.sidebar.radio("Choisissez l'onglet", ["Organisations engagées", "GeoRSE Insights", "Classification RSE"])
82
 
83
  if app_mode == "Organisations engagées":
84
  display_organisations_engagees()
85
  elif app_mode == "GeoRSE Insights":
86
  display_geo_rse_insights()
87
+ elif app_mode == "Classification RSE":
88
+ display_rse_categorizer()
89
 
90
  if __name__ == "__main__":
91
  main()