Цель этой работы - создать конвейер для классификации твитов об авиакомпаниях США и показать возможную информационную панель для понимания тенденций удовлетворенности клиентов.

Конвейерная архитектура

Для этой работы конвейер состоит из:

  • Kafka: для приема твитов.
  • Сервисы Python: для классификации твитов с помощью нейронной сети.
  • Elasticsearch: для хранения результатов.
  • Кибана: для создания панели управления.

С Kafka твиты загружаются в конвейер, таким образом конвейер может обрабатывать множество твитов. Полученный твит извлекается из темы одной или несколькими службами Python, которые классифицируют твит с помощью нейронной сети, обученной в моем последнем сообщении (здесь). Результаты обучения нейронной сети были хорошими, точность прогноза составляет около 94%, так что эта сеть может быть подготовлена ​​к производству для задачи классификации.

Когда твит классифицируется, он сохраняется службой python в индекс Elasticsearch. Над индексом находится информационная панель A Kibana, которая позволяет пользователю отслеживать тенденции американских авиакомпаний.

Сохраните нейронную сеть

Чтобы построить этот конвейер, потребуется небольшой рефакторинг процедуры обучения, описанный в предыдущем посте, потому что нейронную сеть нужно сохранить.

Рефакторинг следующий:

Чтобы сохранить нейронную сеть, необходимо объявить ModelCheckpoint, а затем определить обратный вызов для этой контрольной точки в model.fit. Таким образом, нейронная сеть сохраняется только в том случае, если результат лучше последней сохраненной модели. После этого шага наиболее обученная нейронная сеть сохраняется в файле hdf5 и может быть загружена конвейером.

Загрузите нейронную сеть

Ядро конвейера - это одна или несколько служб Python, которые загружают нейронную сеть и выполняют классификацию твитов. Этот сервис может хорошо масштабироваться, поскольку полностью не имеет состояния: возьмите один твит из темы Kafka, классифицируйте и напишите в Elasticsearch

С точки зрения кода, нейронная сеть может быть загружена очень, очень и очень просто:

с помощью load_module из keras.models можно загрузить файл hdf5, сохраненный во время фазы обучения.

Индекс Elasticsearch

Важным шагом является определение индекса Elasticsearch. Чтобы сделать этот шаг правильным образом, важно знать, каков вариант использования: цель панели инструментов - показать соотношение положительных и отрицательных твитов, а также показать последние твиты и то, как они классифицируются.

Итак, определены следующие поля:

  • tweet: поле с текстом для сохранения твита и возможности полнотекстового поиска.
  • Классификация: определяется как ключевые слова.
  • positive_classification_confidence: float и будет использоваться в будущем.
  • negative_classification_confidence: число с плавающей запятой и будет использоваться в будущем.

Полное определение индекса следующее:

Панель управления

Созданная панель инструментов очень проста:

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

Выводы

Этот вариант использования представляет собой игрушечный вариант использования: это всего лишь экспедиция по созданию конвейера анализа данных с помощью нейронной сети и поиграть с некоторыми интересными вещами, такими как elasticsearch, kibana и kafka.

На панели инструментов отображается очень мало информации: только классификация твитов, поэтому набор данных, используемый для обучения нейронной сети, очень мал (всего один месяц твитов).

Но если бы набор данных был больше, можно было бы провести интересный анализ с точки зрения американских авиакомпаний, например:

  • знать, каковы основные причины плохого полета, в наборе данных эта информация доступна, но недостаточно данных для обучения хорошей сети
  • знать, какой аэропорт самый проблемный

и другие.

Не стесняйтесь, дайте мне знать, что вы думаете об этом посте и как эта работа могла бы быть лучше.

Первоначально опубликовано на сайте devklaus.wordpress.com 3 мая 2018 г.