Ce modèle est une version fine-tunée de T5 Small pour la génération automatique de résumés de texte, optimisée pour le français. Il a été entraîné sur des données personnalisées et exporté en format ONNX pour une inférence rapide sur CPU.
1from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
2
3# Charger le tokenizer et le modèle depuis Hugging Face
4tokenizer = AutoTokenizer.from_pretrained("votre-username/t5-small-finetuned-summary")
5model = AutoModelForSeq2SeqLM.from_pretrained("votre-username/t5-small-finetuned-summary")
6
7# Préparer l'entrée
8input_text = "Votre article à résumer ici..."
9inputs = tokenizer(input_text, return_tensors="pt", max_length=512, truncation=True)
10
11# Générer le résumé
12outputs = model.generate(
13 **inputs,
14 max_length=150,
15 num_beams=4,
16 early_stopping=True,
17 do_sample=False
18)
19summary = tokenizer.decode(outputs[0], skip_special_tokens=True)
20print(summary)
Une API REST Flask est disponible pour intégrer le modèle dans des applications mobiles ou web.
1{
2 "text": "Votre texte à résumer ici...",
3 "max_length": 150
4}
1{
2 "summary": "Résumé généré..."
3}
1curl -X POST http://localhost:5000/summarize \
2 -H "Content-Type: application/json" \
3 -d '{"text": "Le texte à résumer", "max_length": 100}'
1import requests
2
3response = requests.post('http://localhost:5000/summarize', json={
4 'text': 'Votre article complet...',
5 'max_length': 150
6})
7summary = response.json()['summary']
8print(summary)
1import onnxruntime as ort
2from transformers import AutoTokenizer
3import numpy as np
4
5# Charger le tokenizer
6tokenizer = AutoTokenizer.from_pretrained("votre-username/t5-small-finetuned-summary")
7
8# Charger le modèle ONNX
9session = ort.InferenceSession("model.onnx")
10
11# Fonction de génération autoregressive
12def generate_summary(input_text, max_length=150):
13 # Tokeniser l'entrée
14 inputs = tokenizer(input_text, return_tensors="np", max_length=512, truncation=True)
15
16 # Initialiser le decoder avec le token de padding
17 decoder_input_ids = np.array([[tokenizer.pad_token_id]])
18
19 for _ in range(max_length):
20 # Forward pass ONNX
21 outputs = session.run(None, {
22 "input_ids": inputs["input_ids"],
23 "attention_mask": inputs["attention_mask"],
24 "decoder_input_ids": decoder_input_ids
25 })
26 logits = outputs[0]
27
28 # Sélectionner le token suivant (greedy decoding)
29 next_token = np.argmax(logits[:, -1, :], axis=-1)
30
31 # Ajouter au decoder
32 decoder_input_ids = np.append(decoder_input_ids, next_token.reshape(1, -1), axis=1)
33
34 # Arrêter si EOS
35 if next_token == tokenizer.eos_token_id:
36 break
37
38 # Décoder le résumé
39 summary = tokenizer.decode(decoder_input_ids[0], skip_special_tokens=True)
40 return summary
41
42# Exemple d'utilisation
43article = "Votre article complet ici..."
44summary = generate_summary(article)
45print(summary)
Pour des améliorations ou modifications (LoRA, export autoregressive complet, etc.), contactez l'auteur.