def extract_percept_descriptions(context_text): tokens = [t.text.lower() for t in tokenize(context_text) if t.text.isalpha()] lemmas = [morph.parse(w)[0].normal_form for w in tokens] percept_positions = [i for i, l in enumerate(lemmas) if l in percept_lemmas] descriptions = {'visual': [], 'auditory': [], 'emotional': []} for pos in percept_positions: start = max(0, pos - 5) end = min(len(lemmas), pos + 6) window_lemmas = lemmas[start:end] for l in window_lemmas: if l in visual_lemmas: descriptions['visual'].append(l) elif l in auditory_lemmas: descriptions['auditory'].append(l) elif l in emotional_lemmas: descriptions['emotional'].append(l)