Эта ошибка атрибута означает, что вы пытаетесь разделить список - поэтому у test_tweets не тот формат, который, как вы думаете, есть. Должен быть список, в котором вы ожидаете строку.
В качестве шага устранения неполадок вы можете временно изменить цикл, чтобы найти слова, являющиеся списками вместо строки:
test_sample = []
for (words, sentiment) in test_tweets:
if type(words) is list:
print('This is a list, not a string ', end='')
print(words)
# words_filtered = [t.lower() for t in words.split() if len(t) >= 3]
# sentiment = classifier.classify(extract_features(words.split()))
# test_sample.append(words_filtered, sentiment)
ТогдаКак только вы определите, какие слова являются списками, у вас есть несколько вариантов. Вы можете использовать тот же оператор if, чтобы пропустить этот набор данных или очистить его.
test_sample = []
for (words, sentiment) in test_tweets:
if type(words) is list:
words_filtered = [t.lower() for t in words if len(t) >= 3] # just skip the split method
sentiment = classifier.classify(extract_features(words))
# continue if you want to skip over lists, you can use continue to go to the next iteration of the loop
else:
words_filtered = [t.lower() for t in words.split() if len(t) >= 3]
sentiment = classifier.classify(extract_features(words.split()))
test_sample.append(words_filtered, sentiment)