Введение

Коронавирус (COVID-19) — это инфекционное заболевание, которое привело к продолжающейся пандемии. Болезнь была впервые выявлена ​​в Ухане, Китай, а первый случай был выявлен в декабре 2019 года. По состоянию на 21 мая 2021 года в 180 странах и территориях зарегистрировано более 160 миллионов случаев. Огромный масштаб этой пандемии привел к множеству проблем для нынешнего поколения. Одной из острых проблем, с которой я столкнулся, является распространение фиктивных новостных статей, а в современном мире ложные новостные статьи могут вызвать панику и массовую истерию. Я осознал серьезность этой проблемы и решил построить свой следующий проект по машинному обучению на ее решении.

Это моя вторая статья о проекте Fake News Classifier, в которой подробно рассматриваются шаги, необходимые для развертывания обученного классификатора SVM в качестве веб-приложения на Heroku с использованием инфраструктуры Flask. Те, кто не читал мою 1-ю статью, могут сделать это по следующей ссылке.

Постановка задачи

Разработать веб-приложение, которое точно классифицирует новостную статью о COVID-19 как настоящую новость или поддельную новость.

Рабочий процесс

В своей первой статье «Классификатор фейковых новостей для борьбы с дезинформацией о COVID-19-I» я выполнил предварительную обработку данных, инженерию данных, обучение модели, тестирование модели и оценку модели в Google Colab. Я пришел к выводу, что алгоритм машинного обучения SVM обеспечивает оптимальные результаты при классификации новостной статьи как подлинной или поддельной.

Поскольку первоначальный анализ был завершен в первой статье, описанные ниже шаги будут сосредоточены на развертывании обученной модели SVM в качестве веб-приложения на Heroku с использованием инфраструктуры Flask.

Шаг 1. Обучите модель машинного обучения SVM и сохраните обученную модель и векторы Tf-Idf в виде файла рассола соответственно.

Сначала я создал файл сценария Python, известный как model.py, и выполнил все необходимые шаги, необходимые для обучения модели SVM с использованием обучающих данных. Подробное пошаговое описание можно найти в Часть I этой статьи. Позже обученный классификатор SVM и векторы Tf-Idf были сохранены в виде файла рассола.

Шаг 2. Создайте веб-приложение.

Поскольку мы сохранили наш обученный классификатор SVM, а также векторы Tfi-Idf, пришло время отвлечь наше внимание на создание веб-приложения. Для этого я создал файл сценария Python, известный как app.py. App.py действует как серверная часть для нашего веб-приложения и занимается обработкой данных, введенных пользователем, и классификацией новостной статьи с использованием обученного классификатора SVM.

Еще один файл, который имеет первостепенное значение, это файл Index.html. Index.html — это файл, содержащий код внешнего интерфейса нашего веб-приложения, и он взаимодействует с app.py (нашим внутренним интерфейсом) для отображения результатов пользователю.

Шаг 3. Создайте файлы конфигурации, необходимые для размещения веб-приложения на Heroku.

Прежде чем мы сможем разместить веб-приложение на Heroku, необходимы некоторые важные файлы конфигурации. Первый файл называется Procfile. Procfile используется для указания файла, который необходимо выполнить первым, когда пользователь посещает веб-приложение. procfile содержит следующий оператор конфигурации.

web:gunicorn app:app

Первый параметр «приложение» — это файл, который необходимо выполнить первым (app.py), тогда как второй параметр «приложение» — это Flask (__name__). Вторым обязательным файлом конфигурации является файл requiremnts.txt. Этот файл необходим, поскольку он позволяет среде Heroku загружать все необходимые библиотеки, необходимые для бесперебойной работы нашего веб-приложения.

Шаг 4. Перенесите весь код в репозиторий GitHub.

Следующим шагом будет создание нового репозитория на GitHub. Этот репозиторий будет подключен к платформе Heroku, и Heroku получит доступ ко всем необходимым файлам кода из самого репозитория. Файлы, которые я загрузил в свой репозиторий GitHub, — это app.py, model.pkl, tfidf.pkl, nltk.txt, requirements.txt, procfile и папка шаблонов. После завершения загрузки перейдите к шагу 5.

Шаг 5. Создайте новую учетную запись на Heroku и свяжите только что созданный репозиторий GitHub со своей учетной записью Heroku.

1 - Если у вас еще нет учетной записи Heroku, создайте ее и войдите в свою учетную запись Heroku. Перейдите в правый верхний угол панели инструментов Heroku и нажмите «Создать», а затем выберите «Создать новое приложение».

2. Теперь введите желаемое название приложения, укажите в качестве региона США и, наконец, нажмите «Создать приложение».

3- После настройки приложения вы будете перенаправлены на панель управления только что созданного приложения Heroku. Здесь мы подключим это приложение к нашему репозиторию GitHub. Прокрутите вниз до метода развертывания и нажмите Подключиться к GitHub.

4. Сразу под опцией Подключиться к GitHub откроется приглашение, в котором вас попросят ввести имя репозитория вашего веб-приложения. Введите имя своего репозитория GitHub, нажмите кнопку «Поиск», а затем выберите параметр «Подключиться» рядом с нужным репозиторием. Подождите несколько секунд, и ваш репозиторий веб-приложений будет подключен к приложению Heroku.

Шаг 5. Разверните веб-приложение с помощью Heroku.

Есть два варианта, которые Heroku предоставляет для завершения развертывания веб-приложения. Два варианта: автоматическое развертывание и ручное развертывание. Для этого проекта я решил выбрать ручное развертывание. Чтобы выполнить развертывание вручную, прокрутите вниз и перейдите к пункту развертывания вручную. Убедитесь, что ветка репозитория указана правильно, а затем нажмите «Развернуть ветку». Развертывание должно начаться автоматически, и вы сможете увидеть все установки в файле журнала, который отображается в разделе Сборка.

Если установка прошла успешно, вы получите URL-адрес в конце журналов сборки. Кроме того, после раздела Развертывание в Heroku вы получите сообщение о том, что «приложение было успешно развернуто». Этот URL-адрес можно использовать для доступа к веб-приложению из любой точки мира, и вы можете поделиться им со своими коллегами и позволить им протестировать развернутое веб-приложение.

Вывод

Следующий проект был первым завершенным проектом сквозного машинного обучения, в котором я успешно развернул свой классификатор SVM на облачной платформе Heroku. Проект комплексного машинного обучения открывает несколько аспектов стека технологий и помогает вам работать как с интерфейсной, так и с серверной частью приложения.

На мой взгляд, разработка высокоточных моделей машинного обучения бесполезна, если она остается в вашем блокноте Jupyter или Colab. Комплексный проект дает возможность продемонстрировать точность вашей модели широкому кругу конечных пользователей, от непрофессионала до опытного ИТ-специалиста. Эта идеология побудила меня сделать упор на том, что впредь я сосредоточусь на развертывании каждого проекта машинного обучения, за который берусь.

Весь проект можно найти на моей странице Github. Надеюсь, вам понравилось читать мой блог.