2017-02-07 12 views
3

로 끝나는 된 처리 thou [a-z]+est영어 동사는</p> <pre><code>'thou sittest' → 'you sit' 'thou walkest' → 'you walk' 'thou liest' → 'you lie' 'thou risest' → 'you rise' </code></pre> <p>내가 그것을 같이, & 교체 찾으려면이 경우에 정규식을 사용할 수 있습니다 순진를 유지하면 내가 마음에 이러한 전환으로, 몇 가지 문자열 대체물을 구현하고 'E'

그러나 문제는 상황에 따라 때문에 나머지

일부 & 트림 단지 stest을 손질 할 필요가 e로 끝나는 영어 동사에 온다

이 문제를 해결하기위한 빠른 해결책은 무엇입니까? 아마도 가장 신속하고 더러운

+0

봐. – 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. A는 약간 덜 신속하고 더러운 (rote를 명사하지 동사 rot, → rotest에 대한 예를 들어, 작동) :

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) 

출력 : NLTK와 형태소 Word로

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

또한 "sittest"에서 이중 자음을 올바르게 제거합니다. – Leon

+1

그건 _ 빠르고 _ 더러운 ... 나는 그것을 좋아한다. – Chuck

+1

지금까지 word.is_verb()와 같은 메서드가 있으면 정말 사냥을하고있었습니다. 이것은 가장 효과적입니다. 수락. – nehemiah