2017-02-07 25 views
3

Я реализую несколько строк Заменителей с этими преобразованиями в видеанглийских глаголов обработки заканчиваются «е»

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

Если я держу его наивным можно использовать регулярное выражение для этого случая, чтобы найти & заменить, как thou [a-z]+est

Но беда приходит в английских глаголах, которые заканчиваются e, потому что на основе контекста, мне нужно обрезать est в некоторой & отделке просто st в остальном

Какое быстро-грязное решение для этого?

+0

Посмотрите на слова Морфологический с NLTK. – Chuck

ответ

4

Вероятно, наиболее быстрый и грязный:

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) 

Выход:

sittest sit 
walkest walk 
liest lie 
risest rise 

UPDATE. Немного менее быстрая и грязная (работает, например, для rotest → глагола rot, не существительное 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) 

Выход:

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

Обратите внимание, что он также корректно удаляет двойной согласный от "sittest"! – Leon

+1

Это _really_ быстро и грязно ... Мне это нравится. – Chuck

+1

Удивительный до сих пор, я действительно охотился, если есть метод типа word.is_verb(). Это работает лучше всего. Прием. – nehemiah

 Смежные вопросы

  • Нет связанных вопросов^_^