Spaces:
Runtime error
Runtime error
Commit
·
88b138c
1
Parent(s):
f13d6a7
first version of pattern permettre
Browse files
pattern_detection_permettre.py
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import spacy
|
2 |
+
|
3 |
+
# Charger le modèle de langue française
|
4 |
+
nlp = spacy.load('fr_core_news_md') # Utilisez 'fr_core_news_sm' si 'md' n'est pas disponible
|
5 |
+
|
6 |
+
def est_auxiliaire(token):
|
7 |
+
return token.pos_ == "AUX" or (token.pos_ == "VERB" and token.tag_ and "Aux" in token.tag_)
|
8 |
+
|
9 |
+
def est_infinitif(token):
|
10 |
+
return token.pos_ == "VERB" and "Inf" in token.tag_
|
11 |
+
|
12 |
+
def trouver_formes_permettre(texte):
|
13 |
+
doc = nlp(texte)
|
14 |
+
resultats = []
|
15 |
+
for i, token in enumerate(doc):
|
16 |
+
# Vérifier si le lemme est "permettre" et que le mot est un verbe (autre que "permis")
|
17 |
+
if token.lemma_ == "permettre" and token.pos_ == "VERB" and token.text.lower() != "permis":
|
18 |
+
resultats.append((token.text, token.idx))
|
19 |
+
# Traiter spécifiquement le mot "permis"
|
20 |
+
elif token.text.lower() == "permis":
|
21 |
+
est_verbe = False
|
22 |
+
# Vérifier si le mot précédent est un auxiliaire
|
23 |
+
if i > 0 and est_auxiliaire(doc[i - 1]):
|
24 |
+
est_verbe = True
|
25 |
+
# Vérifier si le mot suivant est "de" suivi d'un verbe à l'infinitif
|
26 |
+
elif i + 2 < len(doc) and doc[i + 1].text.lower() == "de" and est_infinitif(doc[i + 2]):
|
27 |
+
est_verbe = True
|
28 |
+
# Vérifier si le mot précédent est un déterminant (le, la, un, une, etc.)
|
29 |
+
elif i > 0 and doc[i - 1].pos_ == "DET":
|
30 |
+
est_verbe = False
|
31 |
+
else:
|
32 |
+
# Autres vérifications possibles si nécessaire
|
33 |
+
est_verbe = False
|
34 |
+
|
35 |
+
if est_verbe:
|
36 |
+
resultats.append((token.text, token.idx))
|
37 |
+
else:
|
38 |
+
continue # C'est un nom, on l'exclut
|
39 |
+
return resultats
|
40 |
+
|
41 |
+
# Exemple d'utilisation
|
42 |
+
texte = """
|
43 |
+
Il m'a permis de partir. J'ai besoin d'un permis de conduire.
|
44 |
+
Cela permet de comprendre. La loi permettra des changements.
|
45 |
+
Le permis de construire a été accordé. Nous avons permis cette action.
|
46 |
+
"""
|
47 |
+
|
48 |
+
formes_permettre = trouver_formes_permettre(texte)
|
49 |
+
print("Les formes du verbe 'permettre' trouvées dans le texte avec leurs index sont :")
|
50 |
+
for mot, index in formes_permettre:
|
51 |
+
print(f"Mot : '{mot}' à l'index {index}")
|