pierre-loic's picture
Update README.md
48331c6
metadata
license: cc
widget:
  - text: >-
      Nouveaux records d’émissions de CO₂ du secteur énergétique en 2022, selon
      une étude
  - text: >-
      Climat et énergie : les objectifs de l’Union européenne pour 2030 ont du «
      plomb dans l’aile »
  - text: >-
      Municipales à Paris : Emmanuel Grégoire « se prépare méthodiquement » pour
      l’après Hidalgo

🌍 Détection des articles de presse française traitant des sujets liés au climat

🇬🇧 / 🇺🇸 : as this model is trained only on French data, all explanations are written in French in this repository. The goal of the model is to classify titles of French newspapers in two categories : if it's about climate or not.

🗺️ Le contexte

Ce modèle de classification de titres d'article de presse française a été réalisé pour l'association Data for good à Grenoble et plus particulièrement pour l'association Quota climat.

L'objectif de ce modèle est de savoir si un article de presse traite du sujet du climat à partir de son titre. Cette tache est complexe car l'algorithme n'a pas accès au contenu des articles de presse. Néanmoins, à l'aide des modèles de langage basés sur les tranformeurs et plus particulièrement les modèles basés sur une architecture BERT, on peut obtenir des résultats intéressants. Nous avons étudié les deux principaux modèles basés sur cette architecture et entrainés sur des corpus en français : FlauBERT et CamemBERT

📋 L'utilisation du modèle final

Le modèle final présenté n'est évidemment pas parfait et possède des biais. En effet, certains choix du modèles peuvent être discutables : ceci provient du périmètre de définition de la notion de climat.

Pour tester le modèle avec le langage Python, il y a deux solutions :

  • Soit en téléchargeant le modèle avec la bibliothèque Python transformers

Pour tester le modèle, il suffit d'installer la bibliothèque Python transformers dans un environnement virtuel et exécuter le code suivant :

from transformers import pipeline

pipe = pipeline("text-classification", model="pierre-loic/climate-news-articles")
sentence = "Guerre en Ukraine, en direct : le président allemand appelle à ne pas « bloquer » Washington pour la livraison d’armes à sous-munitions"
print(pipe(sentence))
[{'label': 'NE TRAITE PAS DU CLIMAT', 'score': 0.6566330194473267}]
  • Soit en appelant l'API d'Hugging Face avec la bibliothèque Python requests

Pour appeler l'API d'Hugging Face, il vous faut un token que vous pouvez récupérer dans votre espace personnel. Il ne vous plus qu'à exécuter le code suivant :

import requests

API_URL = "https://api-inference.huggingface.co/models/pierre-loic/climate-news-articles"
headers = {"Authorization": "Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}

def query(payload):
    response = requests.post(API_URL, headers=headers, json=payload)
    return response.json()
    
output = query({
    "inputs": "Canicule : deux nouveaux départements du Sud-Est placés en vigilance orange lundi",
})
print(output)
[[{'label': 'TRAITE DU CLIMAT', 'score': 0.511335015296936}, {'label': 'NE TRAITE PAS DU CLIMAT', 'score': 0.48866504430770874}]]

🔎 Le détail du travail d'entrainement

La méthodologie utilisée

Différentes pistes d'étude ont été explorées pour aboutir au modèle final :

  • La première piste que nous avons étudiée est de faire prédire la classification des titres d'articles de presse entre "climat" et "pas climat" par ChatGPT grâce à du prompt engineering. Les résultats étaient assez intéressants mais le modèle se trompait parfois sur des cas très simples.
  • La deuxième piste que nous avons étudiée est de vectoriser les mots des titres de presse par une méthode Tf-Idf et d'utiliser un modèle de classification (régression logistique et random forest). Les résultats étaient légérement meilleurs qu'avec un dummy classifier (qui prédit toujours la classe majoritaire "Climat").
  • La troisième piste que nous avons étudiée est de vectoriser les titres des articles de presse avec un modèle de type BERT (camemBERT uniquement entrainé sur un corpus francophone) et ensuite d'utiliser un modèle de classification (régression logistique et random forest) sur les plongements. Les résultats étaient intéressants.
  • La quatrième piste (celle qui a été retenue pour ce modèle) est de faire un fine-tuning d'un modèle de BERT (FlauBERT ou CamemBERT) pour la tache de classification.

Les données

Les données proviennent d'une collecte de titres d'articles de presse française collectés durant plusieurs mois. Nous avons labellisé environ 2000 de ces titres pour entrainer le modèle.

Le modèle final

Le modèle retenu est un modèle de type FlauBERT avec un fine-tuning pour la classification des articles de presse. Les données d'entrainement ont été sous-échantilonnées (undersampling) pour équilibrer les classes.

Les améliorations envisageables

Pour améliorer le modèle, il pourrait être intéressant d'intégrer plus de données sur les domaines où le modèle se trompe le plus.