3

j'applique quelques Substituts de chaîne, avec ces conversions à l'espritverbes anglais en cours de traitement se terminant par « e »

'thou sittest' → 'you sit' 
'thou walkest' → 'you walk' 
'thou liest' → 'you lie' 
'thou risest' → 'you rise' 

Si je le garde naïve, il est possible d'utiliser regex pour ce cas pour trouver & remplacer, comme thou [a-z]+est

Mais le problème vient dans les verbes anglais qui se terminent par e car en fonction du contexte que je dois couper le est dans une assiette & juste st dans le reste

Quelle est la solution rapide pour y parvenir?

+0

Regardez dans Word Découlant avec NLTK. – Chuck

Répondre

4

Probablement le plus rapide et sale:

import nltk 
words = set(nltk.corpus.words.words()) 
for old in 'sittest walkest liest risest'.split(): 
    new = old[:-2] 
    while new and new not in words: 
     new = new[:-1] 
    print(old, new) 

Sortie:

sittest sit 
walkest walk 
liest lie 
risest rise 

UPDATE. Un peu moins rapide et sale (fonctionne par exemple pour rotest → verbe rot, pas noun rote):

from nltk.corpus import wordnet as wn 
for old in 'sittest walkest liest risest rotest'.split(): 
    new = old[:-2] 
    while new and not wn.synsets(new, pos='v'): 
     new = new[:-1] 
    print(old, new) 

Sortie:

sittest sit 
walkest walk 
liest lie 
risest rise 
rotest rot 
+2

Notez qu'il supprime aussi correctement la double consonne de "sittest"! – Leon

+1

C'est vraiment rapide et sale ... J'aime ça. – Chuck

+1

Génial jusqu'ici, j'étais en train de chercher s'il y avait une méthode comme word.is_verb(). Cela fonctionne le mieux. Acceptant. – nehemiah