44 votes

En utilisant NLTK et WordNet ; comment puis-je convertir un verbe simple et tendu dans sa forme de participation présente, passée ou passée ?

En utilisant NLTK et WordNet, comment puis-je convertir un verbe simple et tendu dans sa forme actuelle, passée ou passée ?

Par exemple :

Je veux écrire une fonction qui me donnerait le verbe sous la forme attendue comme suit.

v = 'go'
present = present_tense(v)
print present # prints "going"

past = past_tense(v)
print past # prints "went"

28voto

Gunjan Points 255

Avec l'aide de NLTK, cela peut également être fait. Il peut donner la forme de base du verbe. Mais pas le temps exact, mais ça peut quand même être utile. Essayez le code suivant.

from nltk.stem.wordnet import WordNetLemmatizer
words = ['gave','went','going','dating']
for word in words:
    print word+"-->"+WordNetLemmatizer().lemmatize(word,'v')

La sortie est :

gave-->give
went-->go
going-->go
dating-->date

Jetez un oeil à la question de débordement de pile NLTK WordNet Lemmatizer : Ne devrait-il pas lemmatize toutes les inflexions d'un mot ?.

22voto

msbmsb Points 952

Je pense que ce que vous cherchez est la bibliothèque NodeBox : :Linguistics. Il fait exactement cela :

print en.verb.present("gave")
>>> give

18voto

Anatoly Alekseev Points 402

Pour Python3 :

pip install pattern

puis

from pattern.en import conjugate, lemma, lexeme, PRESENT, SG
print (lemma('gave'))
print (lexeme('gave'))
print (conjugate(verb='give',tense=PRESENT,number=SG)) # he / she / it

rendements

give 
['give', 'gives', 'giving', 'gave', 'given'] 
gives

Thnks à @Agargara pour avoir pointé & auteurs de Pattern pour leur beau travail, allez les soutenir ;-)

PS. Pour utiliser la plupart des fonctionnalités de pattern dans python 3.7+, vous pouvez utiliser l'astuce décrite ici

0voto

Hoda Points 39

JWI (la bibliothèque WordNet du mit) possède également un élément de type stemmer (WordNetStemmer) qui convertit différentes formes morphologiques d'un mot comme ("écrit", "écrit", "écrit") en leur forme de base. Il semble que cela ne fonctionne que pour les noms (comme les pluriels) et les verbes.

Word Stemming en Java avec WordNet et JWNL montre également comment faire ce genre de stemming en utilisant JWNL, une autre bibliothèque Wordnet basée sur Java :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X