Вы когда-нибудь задумывались, как «на самом деле» дела у вашей любимой технологической компании? Хотите отслеживать созданные вами или чужие хэштеги в Твиттере? Что ж, оказывается, есть простой способ получить доступ и запустить очень мощную обработку естественного языка (NLP) с минимальным обучением алгоритмам машинного обучения. Мы собираемся использовать Python, но мы можем вообще отказаться от пакета nltk!

Итак, с чего начать? Что ж, во-первых, давайте выберем одну из самых распространенных проблем в Твиттере - негативные комментарии и публикации. Как мы можем отслеживать негативное течение времени в том, что нас интересует? Для целей этой статьи я собираюсь исследовать хэштег "#Google". Первый шаг - получить данные из Twitter в Google Cloud Platform (GCP).

Работать с потоковой передачей данных на GCP легко, если вы напишете небольшой конвейер в Dataflow. К счастью, этот процесс конвейера был недавно опубликован Сервианом Грэмом Полли на Medium здесь.

Как мы будем строить наш трубопровод? Следуя приведенной выше статье Грэма, мы можем обратиться к общему решению для GCP (ниже).

Мы извлекаем данные из твиттера, выбирая несколько инструментов, показанных выше, и используем их для достижения наилучшего эффекта. В частности, мы концентрируемся на Dataflow и BigQuery. Конвейер Dataflow - это тот же тип конвейера, который использовал Грэм, он написан на Java и использует Cloud Build для развертывания. Данные JSON могут поступать прямо в наше хранилище данных BigQuery. Сначала необходимо создать учетную запись разработчика в Twitter, поэтому, если вы начинаете с нуля, сделайте это сразу же, так как на утверждение может уйти несколько дней.

Как только наши данные Twitter будут размещены в GCP, мы можем сразу же начать пользоваться преимуществами архитектуры GCP. Наши данные попадают в BigQuery, один из моих любимых инструментов для работы с данными в GCP, и это лучшее место для доступа к данным для аналитики. Очень быстрый запрос массивных наборов данных - это именно то, что нам нужно, чтобы легко обрабатывать твиты, которые получает наш конвейер. Чтобы узнать больше о BigQuery, перейдите здесь.

Что теперь? Что ж, прототипирование любого машинного обучения на GCP очень просто, и мы переходим ко второму моему любимому инструменту за все время, Google Cloud Datalab . Иногда он настолько хорош, что даже связан с BigQuery. Datalab предлагает интерфейс ноутбука Pythonic в среде GCP, построенной на Jupyter. У него есть интерфейсы, которые упрощают SQL-запросы к данным BigQuery, легкий доступ к bash и множество специальных команд, о которых мы не будем здесь рассказывать, но проверьте его % команд, когда у вас будет такая возможность.

Запустив Datalab, мы можем сразу погрузиться в обработку естественного языка (NLP). НЛП использует алгоритмические подходы к тексту для выявления настроений, извлечения информации и иного анализа текста. Эти алгоритмы обычно требуют большого количества обучения и могут быть громоздкими для построения с использованием традиционных методов. Однако все это мы обойдем с помощью Google NLP API.

NLP API - это предварительно обученный алгоритм машинного обучения, который стоит за такими технологиями, как Google Assistant, Google Translate и другими. Мы будем использовать его для извлечения полярности и величины из твитов в наших данных. Полярность - это то, насколько отрицательным или положительным является утверждение, а величина - насколько «сильным» является то же самое утверждение: «Я люблю Google Cloud Platform!» было бы строго положительным заявлением, т. Е. Большим значением и положительным полярность . «Иногда, но не всегда, я чувствую себя немного разочарованным, когда пытаюсь установить ключи строк в Bigtable». было бы слабо отрицательным утверждением, т. е. низкая величина и отрицательная полярность.

Так что в первую очередь? Внутри Datalab мы смотрим на наши данные BigQuery:

Как только наши данные будут считаны во фрейм данных в Python, мы увидим, что #Google встречается в 582/11030 твитах. Мы могли бы подождать, пока поступят новые данные, но для наших целей этого достаточно. Мы называем наш фрейм данных «google», и чтобы извлечь полярность и величину для всех твитов #Google, мы просто импортируем сборку и запускаем analyzeSentiment() каждого твита.

Обратите внимание: если вы делаете это впервые, вам нужно будет настроить ключ API в своей учетной записи GCP для использования NLP API. Теперь, когда у нас есть все данные, мы можем посмотреть на величину и полярность с течением времени для #Google.

Сначала это выглядит очень запутанным, но, к счастью, если мы хотим увидеть, сколько «любит» и «ненавидит» #Google за этот период, мы на самом деле ищем только резко отрицательные или положительные твиты (высокий абсолютная полярность и высокая величина). Наш набор данных показывает разброс по полярности и величине для нашего хэштега.

Похоже, что у нас есть более полярные (положительные) твиты с более высокими значениями (более сильные утверждения), что приятно видеть для нашего #Google. Может быть, не все ненавидят наш хэштег! Мы можем заглянуть дальше, разделив наши твиты на любовь и ненависть с помощью простого Python и используя фреймы данных для удобного построения графиков.

Если посмотреть на это с точки зрения общего количества твитов, мы сразу увидим проблему с #Google.

Во-первых, кажется, что преобладают слабые твиты, а также мы не получаем столько любви (численно), сколько ненависти. Все ненавидят наши твиты?

К счастью, если мы исследуем любовь и ненависть, мы сможем увидеть в наших твитах искупительную особенность. В частности, теперь, когда у нас есть любовь и ненависть, мы можем видеть, как они ведут себя с течением времени.

Так все ненавидят твиты #Google? К счастью, нет! Любовь, выделенная зеленым цветом выше, имеет наивысшую величину, то есть самые сильные чувства. Ненависти в черном в целом имеют более низкие, по сравнению с нашим пороговым значением, значения. Итак, есть много любви и ненависти, сильных твитов, но они действительно сильно колеблются в данных, которые нам удалось собрать. Несмотря на то, что у нас численно больше ненависти, наибольшую величину имеет любовь.

«В любви всегда есть какое-то безумие. Но в безумии всегда есть причина ».
- Фридрих Ницше

Что дальше?

Мы могли бы проверять любые другие хэштеги, которые мы хотели изобрести, или даже искать аккаунты, которые писали в Твиттере наиболее положительный или отрицательный контент, искать тенденции с течением времени или даже устанавливать отметки. Теперь, когда наши данные находятся в BigQuery и мы настроили Datalab, пределом является небо (или облако в любом случае).

Хочу увидеть больше? Код этого расследования находится в моей учетной записи GitHub здесь. Спасибо за прочтение!

Первоначально опубликовано на medium.com 5 ноября 2018 г.