#LIFR
Ce module permet de générer une réponse en se basant sur une base de données de texte fournie et un début de réponse donné. Le résultat peut être une nouvelle phrase ou une réponse qui s'adapte aux données mathématiques fournies.


<p><b>Comment faire des operations avec LIFR</b></p>
Pour calculer une operation, la stocker dans une variable et afficher le résultat.<br>
[nom de la variable]=a*b=[a]*[b]=#

- En premier lieu, nous définissons la variable dans laquelle la valeur sera stockée. 
- Ensuite, nous attribuons les valeurs numériques et effectuons les calculs avec ces variables. 
- Enfin, le hashtag sera remplacé par la valeur du calcul.

## Quelques conditions que le module peut utiliser :
- `[x1]>[x2]` : Cette condition permet de favoriser le texte qui suit si la valeur de `x1` est strictement supérieure à la valeur de `x2`.
- `[x1]<[x2]` : Cette condition permet de favoriser le texte qui suit si la valeur de `x1` est strictement inférieure à la valeur de `x2`.
- `[novalue]` : Si la chaîne de caractères qui suit cette expression n'est pas présente dans les valeurs données ou créées, le texte qui suit cette condition sera favorisé.
- `[novalue]` : Si la chaîne de caractères qui suit cette expression est présente dans les valeurs données ou créées, le texte qui suit cette condition sera favorisé.
- `[break]` : Cette condition permet d'arrêter la génération d'un texte, indiquant que le processus doit se terminer à cet endroit.
- `[assemble]` : Si le programme ne trouve pas de mot qui suit, il rajoutera le mot après la balise [assemble], utile pour faire un effet de liste. 
- `[change/:/` : la fonction `[change/:/text à changer/:/à quoi le text doit être changé` les charactères qui doivent être changé doivent être accompagné d'un espace avant et après dans le text ou les modifications seront effectuées.

## comment importer le module:
`from LIFR import LIFR`


## Exemple
Exemple donné à LIFR avec le texte suivant :

```la valeur données [x1]>6 est donc plus grande que 6 [break] la valeur données [x1]<6 n'est donc pas plus grande que 6 [break]```

<p>par exemple:</p>

```print(LIFR.generate(({"data":"""la valeur données [x1]>6 est donc plus grande que 6 [break]\n la valeur données [x1]<6 nest donc pas plus grande que 6 [break]""","variable":{"[x1]":"2"}}))["text"])```

<p><b>la fonction generate renvoie un dictionnaire composé de:</b></p>
	text: le text généré 
	output: des informations sur le déroulement du procésus
			divisé en 2 sous parties:
				score_output:information sur le scorage des mots et de pourquoi ils ont étaient choisis
				maths-compare:informations sur le changement des variables en nombre pour ensuite verifier une condition mathématique



On peut aussi appeler la fonction LIFR.search() pour generer une réponse approprié à la question.

```print(search({"ask":"Quelles sont les dimensions rectangle dont le perimetre est egal a 34 cm et d'une aire a 60 cm2"})["text"])```

## Deux approches distinctes pour la sélection des données en relation avec le sujet.
- Vérifie si la demande de l'utilisateur est présente au début d'un paragraphe d'une liste de paragraphes, puis poursuit en se basant sur les divers paragraphes sélectionnés pour étoffer sa rédaction.	
- associe des motifs d'entrée spécifiques (présent dans une liste) à des réponses ou contenus correspondants. Lorsque l'utilisateur entre des mots-clés qui correspondent, le programme peut alors retourner la réponse correspondante de l'élément. Cela permet de créer des réponses automatisées en fonction des entrées de l'utilisateur.



## les differentes clefs des modules
### search:
- `ask` question auquel le programme doit répondre
- `variable` liste de variable mathematique
- `context` une chaine de charactères pouvant correspondre aux questions et au réponses d'avant ou autre contenu permettant de donner un context et à aider à donner les réponses les plus satisfaisantes. 

### generate:
- `creative`: permet de générer des phrases se basant plus ou moins sur les textes données.
- `data`: liste de liste de chaine de charatères correspondant aux phrases pouvant être utilisé par le modèle pour générer une réponse. ex:[["phrase1"],["phrase2"]...["phrase n"]]
- `good`: Exemple de parties de phrases n'ayant pas une formulation correcte, sous forme d'une liste de chaînes de caractères.
- `bad`: Exemple de parties de phrases ayant une formulation correcte qui seront promues par le système, sous forme d'une liste de chaînes de caractères.
- `variable`: definissement de differentes variables sous la forme d'un dictionnaire dont la clef est la variable et la valeur, la valeur de la variable.
