Update README.md
Browse files
README.md
CHANGED
|
@@ -9,4 +9,124 @@ datasets:
|
|
| 9 |
language:
|
| 10 |
- fr
|
| 11 |
pipeline_tag: question-answering
|
| 12 |
-
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
language:
|
| 10 |
- fr
|
| 11 |
pipeline_tag: question-answering
|
| 12 |
+
---
|
| 13 |
+
# 📚 Documentation Utilisateur de Tesity-T5 : Votre Modèle de Question/Answering avec Contexte
|
| 14 |
+
|
| 15 |
+

|
| 16 |
+
|
| 17 |
+
Félicitations \! Vous utilisez **Tesity-T5**, un modèle de langage puissant de type *Encoder-Decoder* créé par **Clemylia**.
|
| 18 |
+
|
| 19 |
+
Tesity-T5 est spécialisé dans le **Question/Answering guidé par Contexte**. Il excelle à synthétiser une réponse précise en se basant uniquement sur le texte que vous lui fournissez.
|
| 20 |
+
|
| 21 |
+
## 🎯 Objectif et Fonctionnement
|
| 22 |
+
|
| 23 |
+
Le but de Tesity-T5 est de vous fournir une réponse **factuelle** et **synthétisée** à une question spécifique, en utilisant le **contexte** que vous définissez comme seule source d'information.
|
| 24 |
+
|
| 25 |
+
| Composant | Rôle |
|
| 26 |
+
| :--- | :--- |
|
| 27 |
+
| **Contexte** (Input) | Le texte source qui contient l'information nécessaire pour répondre. 📝 |
|
| 28 |
+
| **Question** (Input) | L'interrogation spécifique à laquelle le modèle doit répondre. ❓ |
|
| 29 |
+
| **Réponse** (Output) | Le modèle extrait ou synthétise la réponse à partir du **Contexte**. ✅ |
|
| 30 |
+
|
| 31 |
+
-----
|
| 32 |
+
|
| 33 |
+
## 🛠️ Instructions d'Utilisation
|
| 34 |
+
|
| 35 |
+
Pour obtenir une réponse optimale de Tesity-T5, il est **crucial** de formater votre requête selon le protocole de l'architecture T5.
|
| 36 |
+
|
| 37 |
+
### 1\. Préparation de l'Environnement
|
| 38 |
+
|
| 39 |
+
Assurez-vous d'avoir les librairies `transformers` et `torch` installées :
|
| 40 |
+
|
| 41 |
+
```bash
|
| 42 |
+
pip install transformers torch
|
| 43 |
+
```
|
| 44 |
+
|
| 45 |
+
### 2\. Chargement du Modèle et du Tokenizer
|
| 46 |
+
|
| 47 |
+
Chargez le modèle et le tokenizer depuis Hugging Face. **
|
| 48 |
+
|
| 49 |
+
```python
|
| 50 |
+
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
|
| 51 |
+
import torch
|
| 52 |
+
|
| 53 |
+
MODEL_ID = "Clemylia/Tesity-T5"
|
| 54 |
+
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 55 |
+
|
| 56 |
+
# Chargement
|
| 57 |
+
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
|
| 58 |
+
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_ID).to(device)
|
| 59 |
+
|
| 60 |
+
print(f"Tesity-T5 prêt à être utilisé sur {device} ! 🚀")
|
| 61 |
+
```
|
| 62 |
+
|
| 63 |
+
-----
|
| 64 |
+
|
| 65 |
+
### 3\. Formatage de l'Entrée (Input Formatting)
|
| 66 |
+
|
| 67 |
+
Pour que le modèle comprenne la tâche, l'entrée doit être une chaîne de caractères unique et structurée :
|
| 68 |
+
|
| 69 |
+
**Format Requis :**
|
| 70 |
+
|
| 71 |
+
```
|
| 72 |
+
question_answering: [Votre Question] context: [Votre Contexte]
|
| 73 |
+
```
|
| 74 |
+
|
| 75 |
+
**Exemple de Requête :**
|
| 76 |
+
|
| 77 |
+
```python
|
| 78 |
+
mon_contexte = "L'entraînement from scratch de Tesity-T5 a été effectué sur la dataset Clem27sey/Nacid par Clemylia, la créatrice du modèle."
|
| 79 |
+
ma_question = "Qui a créé Tesity-T5 et sur quelle dataset a-t-il été entraîné ?"
|
| 80 |
+
|
| 81 |
+
# Création de l'Input formaté
|
| 82 |
+
input_text = f"question_answering: {ma_question} context: {mon_contexte}"
|
| 83 |
+
```
|
| 84 |
+
|
| 85 |
+
### 4\. Génération de la Réponse
|
| 86 |
+
|
| 87 |
+
Utilisez la méthode `model.generate()` pour obtenir la réponse.
|
| 88 |
+
|
| 89 |
+
```python
|
| 90 |
+
def generate_tesity_answer(question: str, context: str):
|
| 91 |
+
"""Génère la réponse à partir de la Question et du Contexte."""
|
| 92 |
+
|
| 93 |
+
# Formatage
|
| 94 |
+
input_text = f"question_answering: {question} context: {context}"
|
| 95 |
+
|
| 96 |
+
# Tokenisation
|
| 97 |
+
input_ids = tokenizer(
|
| 98 |
+
input_text,
|
| 99 |
+
return_tensors="pt",
|
| 100 |
+
max_length=512,
|
| 101 |
+
truncation=True
|
| 102 |
+
).input_ids.to(device)
|
| 103 |
+
|
| 104 |
+
# Génération
|
| 105 |
+
outputs = model.generate(
|
| 106 |
+
input_ids,
|
| 107 |
+
max_length=128,
|
| 108 |
+
num_beams=4, # Améliore la qualité de la réponse
|
| 109 |
+
early_stopping=True
|
| 110 |
+
)
|
| 111 |
+
|
| 112 |
+
# Décodage
|
| 113 |
+
answer = tokenizer.decode(outputs[0], skip_special_tokens=True)
|
| 114 |
+
return answer
|
| 115 |
+
|
| 116 |
+
# --- Utilisation ---
|
| 117 |
+
reponse_finale = generate_tesity_answer(ma_question, mon_contexte)
|
| 118 |
+
|
| 119 |
+
print(f"\nContexte : {mon_contexte}")
|
| 120 |
+
print(f"Question : {ma_question}")
|
| 121 |
+
print(f"\n➡️ Réponse de Tesity-T5 : {reponse_finale}")
|
| 122 |
+
```
|
| 123 |
+
|
| 124 |
+
-----
|
| 125 |
+
|
| 126 |
+
## ⚠️ Conseils pour un QA Efficace
|
| 127 |
+
|
| 128 |
+
* **Clarté du Contexte** : Plus votre contexte est **clair** et **précis**, meilleure sera la réponse. Tesity-T5 ne peut répondre qu'avec les informations présentes dans le contexte.
|
| 129 |
+
* **Pertinence** : Assurez-vous que la réponse à votre question est **explicitement** contenue ou **inférable** à partir du contexte. Si l'information est absente, le modèle risque d'halluciner ou de donner une réponse générique.
|
| 130 |
+
* **Longueur** : Pour la performance, la longueur totale de l'entrée (Contexte + Question) est limitée. Pour Tesity-T5, elle ne doit pas dépasser environ **512 tokens**.
|
| 131 |
+
|
| 132 |
+
Profitez bien de votre expérience avec ce puissant modèle \! 🌟
|