pytorch tf flaubert text-classification fr dataset:MLSUM arxiv:2004.14900 transformers license:mit pipeline_tag:text-classification
.gitattributes LICENCE README.md config.json merges.txt pytorch_model.bin special_tokens_map.json tf_model.h5 tokenizer_config.json vocab.json assets/Accuracy_cat.png assets/confusion_cat_m_0.2.png
---
language: 
- fr

license: mit

datasets:
- MLSUM

pipeline_tag: "text-classification"

widget:
- text: La bourse de paris en forte baisse après que des canards ont envahit le parlement.

tags:
- text-classification
- flaubert 
---

# Classification d'articles de presses avec Flaubert

Ce modèle ce base sur le modèle [`flaubert/flaubert_base_cased`](https://huggingface.co/flaubert/flaubert_base_cased) et à été fine-tuné en utilisant des articles de presse issus de la base de données MLSUM.  
Dans leur papier, les équipes de reciTAL et de la Sorbonne ont proposé comme ouverture de réaliser un modèle de détection de topic sur les articles de presse.

Les topics ont été extrait à partir des URL et nous avons effectué une étape de regroupement de topics pour éliminer ceux avec un trop faible volume et ceux qui paraissaient redondants.

Nous avons finalement utilisé la liste de topics suivante:
* Culture
* Economie
* Education
* Environement
* Justice
* Opinion
* Politique
* Societe
* Sport
* Technologie

## Entrainement

Nous avons benchmarké différents modèles en les entrainant sur différentes parties des articles (titre, résumé, corps et titre+résumé) et avec des échantillons d'apprentissage de tailles différentes.

![Performance](./assets/Accuracy_cat.png)

Les modèles ont été entrainé sur un cloud Azure avec des Tesla V100.

## Résulats

![Matrice de confusion](assets/confusion_cat_m_0.2.png)  
*Les lignes correspondent aux labels prédits et les colonnes aux véritables topics. Les pourcentages sont calculés sur les colonnes.*  

## Utilisation

```python
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from transformers import TextClassificationPipeline

model_name = 'lincoln/flaubert-mlsum-topic-classification'

loaded_tokenizer = AutoTokenizer.from_pretrained(model_name)
loaded_model = AutoModelForSequenceClassification.from_pretrained(model_name)

nlp = TextClassificationPipeline(model=loaded_model, tokenizer=loaded_tokenizer)
nlp("Le Bayern Munich prend la grenadine.")
```

## Citation

```bibtex
@article{scialom2020mlsum,
      title={MLSUM: The Multilingual Summarization Corpus}, 
      author={Thomas Scialom and Paul-Alexis Dray and Sylvain Lamprier and Benjamin Piwowarski and Jacopo Staiano},
      year={2020},
      eprint={2004.14900},
      archivePrefix={arXiv},
      primaryClass={cs.CL}
}
```