lemmatizer = nltk.WordNetLemmatizer()
…
from nltk.stem import WordNetLemmatizer
…
lemmatizer = WordNetLemmatizer
lemmatizer = WordNetLemmatizer
во-первых тут же удаляет этот экзмепляр и во-вторых помещает в переменную lemmatizer ссылку на сам класс WordNetLemmatizer. lemmatizer = WordNetLemmatizer()
добавить в конце круглые скобки, это, по-идее, поместит в переменную lemmatizer ссылку на экземпляр класса WordNetLemmatizer. Вероятно, именно это было целью всего этого безобразия. words.append(word_list)
делает не совсем очевидную вещь:words = []
for i in range(3):
words_list = ['qwa', 'wow', 'meow']
words.append(words_list)
print(words)
>>> [['qwa', 'wow', 'meow'], ['qwa', 'wow', 'meow'], ['qwa', 'wow', 'meow']]
words = []
for i in range(3):
words_list = ['qwa', 'wow', 'meow']
words.extend(words_list)
print(words)
>>>['qwa', 'wow', 'meow', 'qwa', 'wow', 'meow', 'qwa', 'wow', 'meow']
for word in words
попадают не список слов, а, вероятно, список списков слов.def logic(*args):
action, what1, what2 = args
if action == "==":
if what1 == what2:
print("True")
return True
else:
print("False")
return False
elif action == "!=":
if what1 != what2:
print("True")
return True
else:
print("False")
return False
def wrt(*args):
print(*args)
return f'printed {args}'
def default_func(*args):
return f'Error {args}'
def make_args(*args):
key = ''
try:
if isinstance(args[0], list) or isinstance(args[0], tuple):
args = args[0]
elif isinstance(args[0], str):
args = args[0].split(' ')
key = args[0]
args = args[1:]
except IndexError:
print('Empty')
result = []
result.append(key)
for i in args:
result.append(i)
return tuple(result)
def call_func(*args):
if not args:
key = 'keyerror'
else:
args = make_args(args[0])
key = args[0]
if len(args)> 1:
args = args[1:]
try:
result = functions[key](*args)
except KeyError:
result = functions['keyerror'](key, *args)
return result
functions = {'logic': logic,
'wrt': wrt,
'keyerror': default_func}
questions = ['ttt fff aaa',
'wrt "hello, world!"',
'wrt hello',
'logic == 1 1',
'logic == a 1',
'logic != True False',
['wrt', 'hello list'],
['wrt', 1, 2, '\n', '!'],
['wrt', '1\n2', '\t!'],
()]
for question in questions:
print(f'{question}: {call_func(question)}\n')
код, который должен решать твою проблему, но не решает. Всё лишнее выкинуть, оставить минимум необходимого.