Usando NLTK y WordNet; ¿Cómo convierto sencilla tiempo verbal en su presente forma de participio pasado o pasado?
Pregunta
El uso de NLTK y WordNet , ¿cómo puedo convertir verbo simple tensa en su presente, pasado o participio pasado?
Por ejemplo:
Quiero escribir una función que me daría verbo en forma esperada de la siguiente manera.
v = 'go'
present = present_tense(v)
print present # prints "going"
past = past_tense(v)
print past # prints "went"
Solución
Creo que lo que estás buscando es la nodebox :: Lingüística biblioteca. Se hace exactamente eso:
print en.verb.present("gave")
>>> give
Otros consejos
Con la ayuda de NLTK esto también se puede hacer. Se puede dar la forma de base del verbo. Pero no la exacta tensa, pero todavía puede ser útil. Pruebe el siguiente código.
from nltk.stem.wordnet import WordNetLemmatizer
words = ['gave','went','going','dating']
for word in words:
print word+"-->"+WordNetLemmatizer().lemmatize(word,'v')
La salida es:
gave-->give
went-->go
going-->go
dating-->date
Para consultar el desbordamiento de pila pregunta NLTK WordNet lematizador:? ¿No debería lemmatize todas las inflexiones de una palabra .
Para python3:
git clone https://github.com/clips/pattern
cd pattern
git fetch
git checkout development
pip install mysqlclient
python setup.py install
entonces
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
rendimientos
give ['give', 'gives', 'giving', 'gave', 'given'] gives
Thnks a @Agargara para señalar y autores de patrón para su hermoso trabajo, ir apoyarlos; -)
JWI (la biblioteca WordNet por el MIT) también tiene una despalilladora (WordNetStemmer) que convierte diferentes formas morfológicas de una palabra como ( "escritos", "escribe", "escribieron") a su forma básica. Parece que sólo funciona para los sustantivos (como los plurales) y verbos sin embargo.
Etimología en Java con WordNet y JWNL también muestra cómo hacer este tipo de derivados usando JWNL, otra biblioteca Wordnet basado en Java: