FerdinandPyCode commited on
Commit
bc5d0b7
·
1 Parent(s): c860206
Files changed (2) hide show
  1. app.py +1 -1
  2. pattern_permettre.py +87 -66
app.py CHANGED
@@ -44,7 +44,7 @@ List_prompt = {
44
  "< Détection du pattern 'outre' >": outre_prompt_template(),
45
  "< Détection du pattern 'il suffit de' >": il_suffit_de_prompt_template(),
46
  "< Détection du pattern 'important crucial' >": importance_prompt_template(),
47
- "< Détection du pattern 'permettre' >": permettre_prompt_template(),
48
  "< Détection du pattern 'voici découvrez' >": voici_decouvrez_prompt_template(),
49
  "<V2 Détection des erreurs de 'langue courante' >" : academie_prompt_template(),
50
  "<V2 Détection des erreurs de style >": erreur_de_style_prompt_template()
 
44
  "< Détection du pattern 'outre' >": outre_prompt_template(),
45
  "< Détection du pattern 'il suffit de' >": il_suffit_de_prompt_template(),
46
  "< Détection du pattern 'important crucial' >": importance_prompt_template(),
47
+ "<V2 Détection du pattern 'permettre' >": permettre_prompt_template(),
48
  "< Détection du pattern 'voici découvrez' >": voici_decouvrez_prompt_template(),
49
  "<V2 Détection des erreurs de 'langue courante' >" : academie_prompt_template(),
50
  "<V2 Détection des erreurs de style >": erreur_de_style_prompt_template()
pattern_permettre.py CHANGED
@@ -6,90 +6,111 @@ from langchain.chat_models import ChatOpenAI
6
  import json
7
 
8
  # Modèle de sortie (adapté pour la détection des formes du verbe "permettre" avec reformulations)
9
- class PermettreDetection(BaseModel):
10
- pattern: str = Field(..., description="Forme verbale du verbe 'permettre' détectée.")
11
- indices: List[Tuple[int, int]] = Field(..., description="Indices de début et de fin pour chaque occurrence dans le texte.")
12
- sentence: str = Field(..., description="Phrase complète l'expression apparaît.")
13
- alternative_suggestions: List[str] = Field(..., description="Suggestions alternatives pour la reformulation de la phrase.")
14
 
15
- def to_dict(self):
16
- return {
17
- "pattern": self.pattern,
18
- "indices": self.indices,
19
- "sentence": self.sentence,
20
- "alternative_suggestions": self.alternative_suggestions
21
- }
22
 
23
- class Summary(BaseModel):
24
- total_patterns_detected: int = Field(..., description="Nombre total de formes du verbe 'permettre' détectées.")
25
- alternative_suggestions_provided: int = Field(..., description="Nombre total de suggestions fournies.")
26
- occurrences: int = Field(..., description="Nombre total d'occurrences trouvées dans le texte.")
27
 
28
- def to_dict(self):
29
- return {
30
- "total_patterns_detected": self.total_patterns_detected,
31
- "alternative_suggestions_provided": self.alternative_suggestions_provided,
32
- "occurrences": self.occurrences
33
- }
 
 
 
 
34
 
35
  class DetectionResult(BaseModel):
36
- patterns: List[PermettreDetection] = Field(..., description="Liste des formes verbales détectées.")
37
- summary: Summary = Field(..., description="Résumé de la détection.")
38
 
39
  def to_dict(self):
40
  return {
41
- "patterns": [pattern.to_dict() for pattern in self.patterns],
42
- "summary": self.summary.to_dict()
43
  }
44
 
 
45
  # Création du template pour la détection avec reformulations
46
  def permettre_prompt_template():
47
- return """
48
- Tu es un détecteur de texte AI très performant et précis. Ta mission est la suivante :
49
 
50
- - **Objectif :** Identifier toutes les formes conjuguées du verbe **"permettre"** dans le texte ci-dessous (ex : **"permet"**, **"permettra"**, **"permis"** en tant que verbe, etc.).
51
 
52
- - **Exclusions :** Ignore les cas où **"permis"** est utilisé comme **nom commun** (ex : **"permis de conduire"**, **"permis de construire"**, etc.).
 
 
 
 
53
 
54
- **Instructions supplémentaires :**
55
- - Analyse grammaticale : identifie les mots dont le **lemme** est **"permettre"**.
56
- - Ne pas considérer **"permis"** comme nom commun, mais bien comme verbe uniquement.
57
- - Couvre toutes les formes verbales, y compris les participes passés, infinitifs, et les temps futurs, présents, etc.
58
- - Ne pas dupliquer les détections des mêmes formes verbales.
59
 
60
  Pour chaque occurrence trouvée, veuillez :
61
- - Citer la phrase complète où l'expression apparaît.
62
- - Indiquer l'expression exacte utilisée dans le texte.
63
- - Expliquer pourquoi ces expressions peuvent alourdir ou rendre l'introduction trop familière, directe ou directive.
64
- - Proposer deux reformulations plus simples, fluides et naturelles pour rendre la phrase plus concise ou directe,
65
- en évitant d'utiliser l'expression "permettre" ou ses variantes. Assurez-vous que la reformulation conserve le sens original
66
- tout en étant plus formelle et professionnelle.
67
-
68
- Assurez-vous également de respecter les règles suivantes :
69
  1. Les expressions comme "crucial", "essentiel", "important", "fondamental" ne doivent pas être utilisées plus d'une fois dans l'introduction.
70
- 2. Les expressions comme "il existe", "il faut", "cependant", "de plus", "en revanche", "néanmoins", "toutefois" ne doivent pas être utilisées en début de phrase.
71
- 3. Les expressions comme "joue un rôle", "il est", ou "est une étape" ne doivent pas être associées à des adjectifs tels qu'"important", "essentiel", etc.
72
- 4. "En plus" ne doit pas être utilisé seul en début de phrase.
73
-
74
- **Format de sortie requis :**
75
- - "pattern": "mot ou expression détectée",
76
- - "indices": [[index de début, index de fin pour chaque occurrence]],
77
- - "sentence": "phrase où l'expression est utilisée",
78
- - "alternative_suggestions": ["suggestion 1", "suggestion 2"]
79
-
80
- Si aucun pattern n'est trouvé, retournez un JSON avec :
81
- - "pattern0": "",
82
- - "occurrences": 0,
83
-
84
- À la fin, ajoutez un résumé avec :
85
- - "total_patterns_detected": nombre total de patterns détectés,
86
- - "alternative_suggestions_provided": nombre de suggestions données,
87
- - "occurrences": nombre d'occurrences.
88
-
89
- Le texte à analyser est le suivant :
90
- ```{text}```
91
-
92
- \n{format_instruction}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  """
94
 
95
  def permettre_detection(text):
 
6
  import json
7
 
8
  # Modèle de sortie (adapté pour la détection des formes du verbe "permettre" avec reformulations)
9
+ class Expression(BaseModel):
10
+ expression: str = Field(..., description="Expression détectée (ex: 'est une étape importante')")
11
+ indice_debut: int = Field(..., description="Indice de début de l'expression")
12
+ indice_fin: int = Field(..., description="Indice de fin de l'expression")
 
13
 
14
+ class Phrase(BaseModel):
15
+ texte: str = Field(..., description="Phrase complète contenant l'expression ou les expressions détectées")
16
+ indice_debut: int = Field(..., description="Indice de début de la phrase")
17
+ indice_fin: int = Field(..., description="Indice de fin de la phrase")
 
 
 
18
 
19
+ class Reformulation(BaseModel):
20
+ texte: str = Field(..., description="Texte de la reformulation")
 
 
21
 
22
+ class PhraseDetectee(BaseModel):
23
+ phrase: Phrase = Field(..., description="Détails de la phrase")
24
+ erreurs: List[Expression] = Field(..., description="Liste des expressions détectées dans la phrase")
25
+ reformulations: List[Reformulation] = Field(..., description="Liste des reformulations proposées")
26
+ justification: str = Field(..., description="Justification des reformulations proposées")
27
+
28
+ class Summary(BaseModel):
29
+ total_erreurs: int = Field(..., description="Nombre total d'expressions détectées")
30
+ total_phrases: int = Field(..., description="Nombre total de phrases contenant des expressions")
31
+ total_reformulations: int = Field(..., description="Nombre total de reformulations proposées")
32
 
33
  class DetectionResult(BaseModel):
34
+ phrases_detectees: List[PhraseDetectee] = Field(..., description="Liste des phrases détectées avec détails")
35
+ summary: Summary = Field(..., description="Résumé de la détection")
36
 
37
  def to_dict(self):
38
  return {
39
+ "phrases_detectees": [phrase.model_dump() for phrase in self.phrases_detectees],
40
+ "summary": self.summary.model_dump()
41
  }
42
 
43
+
44
  # Création du template pour la détection avec reformulations
45
  def permettre_prompt_template():
46
+ return """En tant que rédacteur web expert, votre mission est d'analyser le texte suivant et d'identifier toutes les formes conjuguées du verbe "permettre" dans le texte ci-dessous (exemples : "permet", "permettra", "permis" lorsqu'il est utilisé comme verbe, etc.).
 
47
 
48
+ Exclusions : Ignorez les occurrences "permis" est utilisé comme nom commun (par exemple : "permis de conduire", "permis de construire", etc.).
49
 
50
+ Instructions supplémentaires :
51
+ - Réalisez une analyse grammaticale en identifiant les mots dont le lemme est "permettre".
52
+ - Ne considérez "permis" que comme un verbe, pas comme un nom commun.
53
+ - Couvrez toutes les formes verbales (présent, passé, futur, infinitif, participe passé, etc.).
54
+ - Évitez de répéter les mêmes formes verbales plusieurs fois dans une phrase.
55
 
56
+ Exemples d'erreurs à corriger :
57
+ - "Ce logiciel permet de gérer les données efficacement", mais on peut dire "Ce logiciel facilite la gestion des données."
58
+ - "Cette fonctionnalité permettra d'améliorer la productivité", mais on peut dire "Cette fonctionnalité améliore la productivité."
 
 
59
 
60
  Pour chaque occurrence trouvée, veuillez :
61
+ 1. Citer la phrase complète où apparaît l'expression.
62
+ 2. Identifier l'expression exacte utilisée dans le texte.
63
+ 3. Expliquer pourquoi l'utilisation du verbe "permettre" peut parfois alourdir le texte ou rendre l'introduction trop familière, directive ou permissive.
64
+ 4. Proposer deux reformulations de la phrase en :
65
+ - Simplifiant la phrase pour la rendre plus professionnelle, fluide, et en évitant d'utiliser le verbe "permettre" ou ses variantes.
66
+ - Assurant que la reformulation conserve le sens original tout en adoptant un ton plus formel et naturel.
67
+
68
+ Règles à respecter :
69
  1. Les expressions comme "crucial", "essentiel", "important", "fondamental" ne doivent pas être utilisées plus d'une fois dans l'introduction.
70
+ 2. Les expressions telles que "il existe", "il faut", "cependant", "de plus", "en revanche", "néanmoins", "toutefois" ne doivent pas être placées en début de phrase.
71
+ 3. Les expressions comme "joue un rôle", "il est", ou "est une étape" ne doivent pas être associées à des adjectifs tels que "important", "essentiel", etc.
72
+ 4. "En plus" ne doit pas être utilisé seul au début d'une phrase.
73
+
74
+
75
+ Votre analyse doit être retournée en JSON avec la structure suivante :
76
+ {{
77
+ "phrases_detectees": [
78
+ {{
79
+ "phrase": {{
80
+ "texte": "Phrase complète contenant l'expression ou les expressions détectées",
81
+ "indice_debut": x,
82
+ "indice_fin": y
83
+ }},
84
+ "erreurs": [
85
+ {{
86
+ "expression": "Expression détectée",
87
+ "indice_debut": a,
88
+ "indice_fin": b
89
+ }}
90
+ ],
91
+ "reformulations": [
92
+ {{ "texte": "Reformulation 1" }},
93
+ {{ "texte": "Reformulation 2" }},
94
+ {{ "texte": "Reformulation 3" }},
95
+ {{ "texte": "Reformulation 4" }},
96
+ {{ "texte": "Reformulation 5" }}
97
+ ],
98
+ "justification": "Justification des reformulations proposées."
99
+ }}
100
+ ],
101
+ "summary": {{
102
+ "total_erreurs": nombre_total_d_expressions_detectées,
103
+ "total_phrases": nombre_total_de_phrases_contenant_des_expressions,
104
+ "total_reformulations": nombre_total_de_reformulations_proposées
105
+ }}
106
+ }}
107
+
108
+
109
+ Texte à analyser :
110
+ {text}
111
+
112
+ Assurez-vous que les indices correspondent aux positions exactes dans le texte original et que le JSON est correctement formaté.
113
+ {format_instruction}
114
  """
115
 
116
  def permettre_detection(text):