Ответ 1
Я думаю, что вы ищете библиотеку NodeBox:: Linguistics. Он делает именно это:
print en.verb.present("gave")
>>> give
Используя NLTK и WordNet, как мне преобразовать простой напряженный глагол в его нынешнюю, прошлую или прошлую форму причастия?
Например:
Я хочу написать функцию, которая даст мне глагол в ожидаемой форме следующим образом.
v = 'go'
present = present_tense(v)
print present # prints "going"
past = past_tense(v)
print past # prints "went"
Я думаю, что вы ищете библиотеку NodeBox:: Linguistics. Он делает именно это:
print en.verb.present("gave")
>>> give
С помощью NLTK это также можно сделать. Он может дать базовую форму глагола. Но не точное время, но это все еще может быть полезно. Попробуйте следующий код.
from nltk.stem.wordnet import WordNetLemmatizer
words = ['gave','went','going','dating']
for word in words:
print word+"-->"+WordNetLemmatizer().lemmatize(word,'v')
Вывод:
gave-->give
went-->go
going-->go
dating-->date
Посмотрите на вопрос о переполнении стека NLTK WordNet Lemmatizer: не следует ли леммитировать все перегибы слова?.
JWI (библиотека WordNet от MIT) также имеет стебельщика (WordNetStemmer), который преобразует различные морфологические формы слова типа ( "написано", "пишет", "написал" ) в их базовую форму. Кажется, что это работает только для существительных (например, множественных чисел) и глаголов.
Word Stemming в Java с WordNet и JWNL также показывает, как это сделать, используя JWNL, другую Java-библиотеку Wordnet:
Для Python3:
git clone https://github.com/clips/pattern
cd pattern
git fetch
git checkout development
pip install mysqlclient
python setup.py install
затем
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
дает
give ['give', 'gives', 'giving', 'gave', 'given'] gives
thnks @Agargara для указания и авторов шаблона для их прекрасной работы, обратитесь за ними; -)