Я не знаю ни о чем другом, но это, безусловно, можно сделать. Например, используя TextBlob , вы можете попытаться придумать функцию, использующую части речи. Очевидно, вам понадобится больше, чем этот небольшой фрагмент, например, функция, которая проверяет соответствие субъекта / глагола, но это пример подхода, и, надеюсь, это пища для размышлений.
from textblob import TextBlob
from textblob.taggers import NLTKTagger
from textblob import Word
def lil_subj_replacer(phrase,input_subj,input_prp):
nltk_tagger = NLTKTagger()
blob = TextBlob(phrase,pos_tagger=nltk_tagger)
subject = True
for i,keyval in enumerate(blob.pos_tags):
key = keyval[0]
value = keyval[1]
if (value == 'PRP'):
if subject:
blob.words[i] = input_subj
subject = False
else:
blob.words[i] = input_prp
blob.words[i+1] = Word(blob.words[i+1]).lemmatize('v')
return ' '.join(blob.words)
my_phrase = 'You should go down the hall, as you reach the corner you are done.'
print(my_phrase)
print(lil_subj_replacer(phrase=my_phrase,input_subj='Your brother',input_prp='he'))
оригинал: You should go down the hall, as you reach the corner you are done.
без лемматизации: Your brother should go down the hall as he reach the corner he are done
лемматизированные глаголы: Your brother should go down the hall as he reach the corner he be done
edit: добавлен пример с lemmaz, так как вы упомянули его.