На самом деле, еще меньше. Основной инструмент для написания такого приложения — Node-RED в Bluemix



Несколько лет назад наша компания разработала инструмент Node-RED. Это open-source сервис, который помогает создавать приложения на модульной основе — нужно просто соединять готовые блоки. В качестве блоков выступают не только программные модули, но и различные устройства, веб-API и онлайн-службы. Для работы с Node-RED нужны базовые знания HTML, CSS и JavaScript. Конечно, чем глубже ваши знания, тем более совершенное приложение можно будет создать.

Сегодня в качестве примера мы покажем, как на основе Node-RED можно создать приложения для анализа твитов заданной тематики в режиме реального времени (первоисточник — англоязычная статья). Тематика (ключевое слово) — не единственный критерий, искать можно и по автору или хэштегу. Но в примере используется именно поиск по ключевым словам. Кроме темы, приложение, которое мы напишем, будет способно оценивать эмоциональную окраску сообщения. Искать будем только негативные твиты определенной тематики. Нужные сообщения будут показываться в течение пары секунд после того, как их кто-то напишет.

Как все это будет выглядеть?


Ну, например, мы ищем отзывы о ресторане «Jim’s fries». Помним, искать будем только негативные отзывы. Например, такие:
«Jim’s fries это худший ресторан из тех, где я был! И карточкой расплатиться не дали! Никому не советую!»

Хочу такое приложение, как его написать?





Итак, для того, чтобы создать подобный инструмент, нужно изначально открыть редактор Node-RED. Затем мы будем создавать приложение, перетаскивая нужные модули (это предварительно прописанные части кода, выполняющие желаемое действие) из панели слева в редакторе Node-RED в центральное поле редактора. Здесь и будем собирать наш алгоритм. Для того, чтобы соединять модули, нужно нажимать на точку выхода одного модуля, подтягивая ее к точке входа другого.

Каждый модуль должен получить определенные параметры. Для их назначения нажимаем на модуль дважды и заполняем появляющуюся форму.



Совет: если параметров для поиска несколько, добавьте их через запятую и без пробелов. Запятая=ИЛИ, пробел=И. Программный интерфейс Твиттера не выдаст 100% всех твитов. Твиты тех, на кого вы подписаны будут включать их ретвиты и то, что добавлено в избранное.
Как только нужные действия выполнены, нужно нажать кнопку запуска приложения (Deploy). Кнопка размещается в правом верхнем углу редактора. Если все правильно, все начинает работать сразу, без «доводки».

А вот и приложение


Искать твит –> Получить значение ЭМОЦИОНАЛЬНАЯ ОКРАСКА –> Отладить значение ЭМОЦИОНАЛЬНАЯ ОКРАСКА + Проанализировать уровень негатива –> Отправить сообщение по e-mail, если значение ЭМОЦИОНАЛЬНАЯ ОКРАСКА меньше либо равно заданному

Написанное в качестве примера приложение Node-RED включает лишь пять модулей. Первый — анализирует Twitter на предмет твитов с нужными ключевыми словами (они задаются как раз в параметрах модуля). Для того, чтобы все это работало, нужно задать свои учетные данные для Twitter. В поле For добавляем имя пользователя сервиса микроблогов, чьи твиты будем искать, хэштеги, плюс ключевые слова. В текущем примере использовался хэштег #testnegative.

Покончив с первым модулем, переходим ко второму. Здесь мы добавляем анализ эмоциональной окраски твита, соединяя вход второго модуля с выходом первого. Как уже говорилось выше, мы будем искать только лишь твиты с негативной окраской. Но можно искать и положительные твиты, почему нет? Эмоциональность сообщения оценивается по шкале от -5 до 5, где -5 – это очень негативный твит, 0 – нейтральный и 5 – чрезвычайно положительный отзыв.

Следующим идет модуль «отладить» для записи присвоенных значений эмоциональной окраски твита в лог Node-RED. Если нет времени, можно и не использовать такой модуль, но в этом случае возможны определенного рода сбои. В качестве примера приведем следующие типы отзывов:

• Значение ЭМОЦИОНАЛЬНАЯ ОКРАСКА 4: #testnegative Ресторан Jim’s fries потрясающий!
• Значение ЭМОЦИОНАЛЬНАЯ ОКРАСКА -3: #testnegative Jim’s fries это худший ресторан из тех, где я был!
• Значение ЭМОЦИОНАЛЬНАЯ ОКРАСКА -4: #testnegative Jim’s fries это худший ресторан из тех, где я был! И карточкой расплатиться не дали!
• Значение ЭМОЦИОНАЛЬНАЯ ОКРАСКА -5: #testnegative Jim’s fries это худший ресторан из тех, где я был! И карточкой расплатиться не дали! Никому не советую!
• Значение ЭМОЦИОНАЛЬНАЯ ОКРАСКА -8: #testnegative Jim’s fries это худший ресторан из тех, где я был! И карточкой расплатиться не дали! Никому не советую! Ужасный сервис!

Уже после этого используем модуль выбора, где отсеиваются все отзывы с эмоциональной окраской выше или равной -5. Модуль получил название «Проанализировать уровень негатива».

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



В качестве вывода


Среда Node-RED в Bluemix крайне проста и дружественна пользователю. Для создания приложения особые познания в программировании не нужны. Конечно, необходимы базовые знания и логика, но больше ничего не требуется. Кроме, разве что, задачи, которую требуется решить. Создаваемые приложения могут быть гораздо более сложными, чем наш пример. Вот еще один пример, где в Node-RED создается функциональное приложение для управления smart-устройствами дома:



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

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

Ну а для того, чтобы получить дополнительную информацию по среде Node-RED и Bluemix, предлагаем принять участие в вебинаре, который состоится уже 23 июня. Приходите, будет интересно :)
Поделиться с друзьями
-->

Комментарии (2)


  1. yusman
    16.06.2016 15:35

    Спасибо за обзор. Интересное решение, особенно порадовала площадка для обмена нодами и потоками.
    Кстати, решение очень похоже на Apache NiFi.


  1. Yoskaldyr
    17.06.2016 03:50

    А есть примеры рабочих приложений, написанных на Node-RED?