В настоящее время в области науки о данных более важно думать о том, как обрабатывать данные во время их создания или публикации, и это то, что мы назвали потоковой обработкой в ​​реальном времени.

Для обработки данных в реальном времени используется множество инструментов и систем, таких как Google Cloud DataFlow, Amazon Kinesis и Apache Kafka. Прочтите эту статью, чтобы узнать больше о различных инструментах и ​​системах, используемых для обработки данных в реальном времени. В этом руководстве мы собираемся использовать Spark Streaming в потоковой обработке в реальном времени.

Apache Spark - это инструмент аналитики в реальном времени с открытым исходным кодом, поддерживающий языки программирования Java, Python и Scala. Он поддерживает работу с различными источниками данных, такими как HDFS, Flume, Kafka и Twitter. Он также поддерживает работу с пользовательскими источниками данных.

Наша цель

В этом руководстве мы собираемся построить конвейер анализа настроений (положительных и отрицательных) потоковой передачи в реальном времени с помощью Spark для комментариев на английском языке в Twitter, включая некоторые ключевые слова.

Библиотеки python PySpark и tweepy будут использоваться для потоковой передачи англоязычных комментариев в Twitter. Поскольку Twitter предоставляет API, к которому разработчикам легко получить доступ.

Затем мы построим модель обработки естественного языка (NLP), которую можно будет использовать для применения анализа настроений к данным Twitter. В этой модели мы будем использовать набор данных sentiment140 для обучения модели, также мы будем использовать Tfidfvectorizer (от sklearn) и nltk в построении модели.

Шаг 1. Построение модели анализа настроений

Примечание. В этом руководстве мы используем Google Colab для запуска скриптов.

1- Импортируйте пакеты

  • pandas: инструмент анализа и обработки данных с открытым исходным кодом, используемый в коде для работы с фреймами данных.
  • nltk: Natural Language Toolkit использовал корпус останавливающих слов, который использовался при очистке данных.
  • sklearn: из библиотеки sklearn мы использовали: TfidfVectorizer для извлечения функций из комментариев и построения их векторов функций. Кроме того, модель классификации SVM должна использоваться для классификации комментариев как положительных и отрицательных.

2- Постройте модель классификации

В классе TweetsClassifier у нас есть:

  • Функция __load_data (): считывает набор данных и удаляет из него останавливающие слова.
  • Функция __train_model (): разделяет набор данных на обучение и тестирование, а затем использует данные обучения для обучения классификатора SVM.
  • Функция __evaluate_mode (): использует набор данных тестирования для оценки модели и печати ее точности.

3- Создайте объект из модели классификации

  • После запуска этого кода вы получите объект классификатора, который можно использовать для классификации любых новых комментариев Twitter на положительные и отрицательные.
  • Этот код напечатает точность модели, которая колеблется от 75% до 78%.

Шаг 2. Потоковая передача данных Twitter с использованием Apache Spark и TCP-сокета

1- Учетная запись разработчика Twitter. Первое, что вам нужно сделать, это создать учетную запись разработчика Twitter, чтобы иметь возможность использовать Twitter API с действующими учетными данными. Прочтите эту статью, чтобы узнать больше о том, как создать учетную запись разработчика в Twitter.

2- Использование сокета TCP: Используя сокет python lib, создайте канал связи между нашим локальным компьютером (используя предварительно определенный локальный IP-адрес и порт) и API Twitter для прослушивания поступающих комментарии из Твиттера.

3- Использование Apache Spark: Используя PySpark python lib, создайте сеанс искры, а затем создайте поток чтения искры, который считывает данные из сокета, используя тот же IP-адрес и номер порта, которые назначены сокету.

4- Анализ настроений: после того, как поток искрового чтения получит данные в реальном времени, передайте эти данные в предварительно обученную модель классификации SVM, чтобы получить результаты классификации.

Прочтите эту статью, чтобы помочь вам в создании сокета TCP и Spark Stream.

Настройка Apache Spark в Google Colab

Если вы пользователь ОС Windows, настройка Apache Spark на локальном компьютере и получение работающего кода с помощью Apache Streams - это кошмар. Однако его можно настроить, прочтите эту статью, если хотите.

Но настроить его в Google Colab намного проще, выполнив следующие действия.

  • Загрузите OpenJDK-8, среду разработки для создания приложений, апплетов и компонентов с использованием языка программирования Java.
  • Загрузите последнюю версию установочного tgz-файла apache-spark в Google Colab (например, spark-3.1.2-bin-hadoop3.2.tgz)
  • Установите findspark lib, который будет использоваться при инициализации файлов запуска apache-spark.
  • Задайте пути JAVA_HOME и SPARK_HOME к операционной системе, в которой работает Python, с помощью библиотеки os.
  • Поздравляем, после завершения этой настройки в записной книжке Google Colab у вас есть полный конвейер анализа настроений потоковой передачи в реальном времени, построенный с использованием python.

ПРИМЕЧАНИЕ.

  • Вы можете использовать песочницу Hortonworks на VMware, что является лучшим решением, если вы знакомы с VMware. Прочтите этот документ, чтобы помочь вам на этапах установки песочницы Hortonworks.

Вывод

В этом руководстве мы построили модель классификации SVM для применения анализа настроений в реальном времени к комментариям, полученным из Twitter API с помощью сокета TCP и потоковой передачи Apache Spark.

использованная литература