Как уже отмечали другие, непосредственная проблема заключается в том, что вы спорите с самим собой: вы не были последовательны в отношении того, какие аргументы должна использовать ваша функция - является ли вводимый текст одним предложением или списком предложений. Я позволил себе сменить имя функции. Вот предложенное использование, которое, я думаю, решает вашу проблему. Вы можете сократить несколько блоков операторов до одной строки, но я ожидаю, что текущая версия будет более читабельной для вас.
filtered_wordlist = [
'Call me Ishmael',
'The boy was odd',
'They could only say it just "happened to happen" and was not very likely to happen again.'
]
def word_id(id,txt):
mapop= []
words = txt.split()
for word in words:
tmp= (word,id,1)
mapop.append(tmp)
return mapop
lexicon = []
for id, sentence in enumerate(filtered_wordlist):
lexicon.append(word_id(id, sentence))
print(lexicon)
Вывод (с дополнительными разрывами строк для удобства чтения):
[('Call', 0, 1), ('me', 0, 1), ('Ishmael', 0, 1),
('The', 1, 1), ('boy', 1, 1), ('was', 1, 1), ('odd', 1, 1),
('They', 2, 1), ('could', 2, 1), ('only', 2, 1), ('say', 2, 1),
('it', 2, 1), ('just', 2, 1), ('"happened', 2, 1), ('to', 2, 1),
('happen"', 2, 1), ('and', 2, 1), ('was', 2, 1), ('not', 2, 1),
('very', 2, 1), ('likely', 2, 1), ('to', 2, 1), ('happen', 2, 1),
('again.', 2, 1)]