File size: 2,148 Bytes
55f834a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import spacy

# Charger le modèle de langue française
nlp = spacy.load('fr_core_news_md')  # Utilisez 'fr_core_news_sm' si 'md' n'est pas disponible

def est_auxiliaire(token):
    return token.pos_ == "AUX" or (token.pos_ == "VERB" and token.tag_ and "Aux" in token.tag_)

def est_infinitif(token):
    return token.pos_ == "VERB" and "Inf" in token.tag_

def trouver_formes_permettre(texte):
    doc = nlp(texte)
    resultats = []
    for i, token in enumerate(doc):
        # Vérifier si le lemme est "permettre" et que le mot est un verbe (autre que "permis")
        if token.lemma_ == "permettre" and token.pos_ == "VERB" and token.text.lower() != "permis":
            resultats.append((token.text, token.idx))
        # Traiter spécifiquement le mot "permis"
        elif token.text.lower() == "permis":
            est_verbe = False
            # Vérifier si le mot précédent est un auxiliaire
            if i > 0 and est_auxiliaire(doc[i - 1]):
                est_verbe = True
            # Vérifier si le mot suivant est "de" suivi d'un verbe à l'infinitif
            elif i + 2 < len(doc) and doc[i + 1].text.lower() == "de" and est_infinitif(doc[i + 2]):
                est_verbe = True
            # Vérifier si le mot précédent est un déterminant (le, la, un, une, etc.)
            elif i > 0 and doc[i - 1].pos_ == "DET":
                est_verbe = False
            else:
                # Autres vérifications possibles si nécessaire
                est_verbe = False

            if est_verbe:
                resultats.append((token.text, token.idx))
            else:
                continue  # C'est un nom, on l'exclut
    return resultats

# Exemple d'utilisation
texte = """
Il m'a permis de partir. J'ai besoin d'un permis de conduire.
Cela permet de comprendre. La loi permettra des changements.
Le permis de construire a été accordé. Nous avons permis cette action.
"""

formes_permettre = trouver_formes_permettre(texte)
print("Les formes du verbe 'permettre' trouvées dans le texte avec leurs index sont :")
for mot, index in formes_permettre:
    print(f"Mot : '{mot}' à l'index {index}")