Большие данные: где их достать и как анализировать?

Все говорят о больших данных (Big Data), извлечении информации из социальных сетей и интернет-содержимого. А вы когда-либо задавались вопросом как это делается? 

Это гостевая статья Ran Geva, соучредителя и технического директора сервиса Buzzilla.

В данной статье, используя 3 сервиса и технологии, я коротко затрону 3 основных шага для извлечения, индексирования и анализа больших данных. Допустим, мы хотим проанализировать то, что говорят люди о проблемах, связанных с операционной системой Android.

Шаг первый извлечение данных

Если вы хотите извлечь информацию из сети, сначала вам необходимо получить данные, которые вы хотите проанализировать. Это могут быть новости, ветки обсуждений обзоров и записей блогов. Лично я рекомендую для извлечения данных использовать сервис Webhose.io (предупреждение: я один из его основателей), так как он предлагает достоверные и структурированные оперативные данные, которые вы можете фильтровать по запросу, типу источника, языку и т. д. Агенты Webhose.io посещают сотни тысяч открытых источников, ежедневно загружая миллионы статей, так что вы можете получить доступ к огромному объему данных. Для достижения нашей цели нам необходимо искать ветки обсуждений (из форумов) на английском, которые ведутся в тех разделах сайта, где заголовок раздела содержит ключевое слово “Android”.

Используя мастера поиска Webhose.io, мы создадим конечную точку API, которая будет выглядеть следующим образом:

https://webhose.io/search?token=<Access-Token>&format=json&q=thread.section_title%3A(android)&language=english&site_type=discussions

 

С помощью этого мы получим форматированный JSON результат, который нам необходимо индексировать.

json результат

Шаг второй индексирование данных

Если вы работаете с гигабайтами данных и хотите иметь возможность отфильтровать их и выполнять поиск среди этих данных, вам необходимо индексировать их в поисковой системе. Этот шаг не обязателен в нашем примере, так как мы уже нашли и отфильтровали данные. Тем не менее, я хотел бы коротко пройтись по нескольким решениям этого вопроса.

Существует несколько простых решений типа “поиска как услуга” (англ. Search as a Service), которые вы можете использовать для хранения и индексирования своих данных в режиме онлайн:

  • Amazon CloudSearch полностью управляемый сервис на облаке, который упрощает процесс настройки, управления и масштабирования поискового решения.
  • SearchBlox готовое поисковое решение.
  • IndexDen поиск как услуга по всему тексту (могут скоро закрыться).

Существуют также и другие решения, требующие установки и кодирования:

  • ElasticSearch программное обеспечение, распространяемое с открытым исходным кодом, для поиска в реальном времени (англ. Open Source Distributed Real Time Search).
  • Solr платформа для корпоративного поиска с открытым исходным кодом (англ. Open source enterprise search platform).

Если масштабы проекта, над которым вы работаете, будут увеличиваться, то я советую использовать ElasticSearch или Solr. Если вы создаете подтверждение концепции или небольшой проект, тогда я советую использовать аутсорсинговый сервис, так как его проще всего настроить.

Шаг третий анализ данных

Чтобы начать понимать, что же происходит вокруг темы “Android”, вам необходимо извлечь ветки обсуждений и слова, выражающие общее настроение по данной теме. Предлагаю вам воспользоваться Semantria для извлечения важных моментов и общего настроения вокруг них вместе с темами и категориями. Чтобы понимать, что же делает Semantria, вы можете воспользоваться демоверсией данного сервиса.

Анализ данных

Вы также можете изменить порядок шага 2 и шага 3, и, перед индексированием статьи, извлечь общее настроение статьи, основные моменты и темы. Проделав все это, позже вы сможете выполнить поиск и найти только те статьи, которые содержат определенные основные моменты в сопровождении определенного настроения.

Заключение

При анализе больших данных три вышеописанных шага являются обязательными, но это еще далеко не полная цепочка действий. В случае со сложными задачами, которые могут потребовать длительного времени, вам может понадобится использовать кластер Hadoop для распределения работы. Возможно, вам будет нужно интегрировать внутренние коммерческие данные поверх полученных вами веб-данных, использовать перекрёстные ссылки и определять тенденции. На самом деле, большие данные еще больше, чем описывается в данной статье, но я все же надеюсь, что я смог хоть немного помочь лучше понять некоторые из задействованных процессов.