Spaces:
Runtime error
Runtime error
| 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}") | |