Использование NLTK при получении ошибки: неподдерживаемые типы операндов для *: 'NoneType' и 'int'

В первом ответе уже сказано: Mono ни на что другое, кроме Windows, не приходит ни с чем, поэтому изначально он не доверяет никакому сертификату. Итак, что делать?

Вот хорошая статья о различных способах решения проблемы с точки зрения разработчика: http://www.mono-project.com/archived/usingtrustedrootsrespectfully/

Краткое описание: вы можете:

  • игнорировать проблему безопасности
  • игнорировать проблему
  • , чтобы user know and abort
  • позволяет пользователю узнать и дать ему возможность продолжать свой собственный риск

Вышеупомянутая ссылка содержит примеры кода для каждого случая.

1
задан EdChum 29 March 2019 в 08:59
поделиться

1 ответ

Поскольку выводится Model not present, run train.py first, мы знаем, что IOError было поднято внутри predict, но предложение except просто вызывает print, что означает, что predict вернет None.

Затем вы делаете predict([sys.argv[1]]) * 100), что означает, что вы пытаетесь сделать None * 100 (как предполагает трассировка стека), что не имеет никакого смысла.

Есть несколько способов исправить это, например, позволить распространению исключения:

def predict(headline):
    f = open('trained_model')
    clf = pickle.load(f)
    f = open('vectorizer')
    vectorizer = pickle.load(f)
    return clf.predict_proba(vectorizer.transform(headline))[0][1]

if __name__ == "__main__":
    try:
        print ("headline is "  + str(int(predict([sys.argv[1]])*100)) + "% likely to be clickbait")
    except IOError:
        print("Model not present, run train.py first")

или проверить, является ли его возвращаемое значение None, прежде чем его использовать:

if __name__ == "__main__":
    predict_result = predict([sys.argv[1]])
    if predict_result is not None:
        print ("headline is "  + str(int(predict_result * 100)) + "% likely to be clickbait")
0
ответ дан DeepSpace 29 March 2019 в 08:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: