В настоящее время в области науки о данных более важно думать о том, как обрабатывать данные во время их создания или публикации, и это то, что мы назвали потоковой обработкой в реальном времени.
Для обработки данных в реальном времени используется множество инструментов и систем, таких как 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.