Сбор и анализ данных в соц.сетях с API и NLP
Довольно сложная задача найти информацию для работы в области DataScience. Она есть в открытом доступе в такой социальной сети как Вконтакте.
Миллионы пользователей сами выкладывают огромное количество информации о себе. По статистике, люди предпочитают говорить о себе правду, так что в каком то процентном соотношении можно доверять информации изложенной на страницах пользователей. Получить доступ к этой информации можно через API.
Таким образом, чтобы получить какую-либо информацию например о пользователе, необходимо сделать http-запрос такого типа:
где мы видим протокол, по которому осуществляется соединение, адрес API-сервиса, название метода API и параметры запроса.
В ответ сервер вернет JSON с запрошенными данными.
В чем удобство данного метода сбора информации?
Основная польза в том, что таким способом можем собирать огромные объемы информации об огромном объеме пользователей, можем брать текст постов пользователей, текст комментариев, следить за активностью пользователей в различных группах, видеть, где они оставляют лайки, где они оставляют комментарии.
Далее данную информацию можно проанализировать с помощью алгоритмов машинного обучения и сделать вывод об активности того или иного пользователя, какую жизнь он ведет в социальной сети. На основании этих знаний можно выявить девиантное поведение сотрудников вашей фирмы.
Для начала необходимо провести процедуру регистрации приложения. Под приложением понимается любой программный продукт, совершающий http-запросы к API-сервису Вконтакте. Он может быть написан на любом языке программирования.
Наш выбор пал на язык Python и такие библиотеки как: rutermextract, urllib.request, json.
Чтобы создать новое приложение, необходимо перейти на страницу:
Там создаем приложение и переходим на вкладку Настройки, там имеется ID-приложения. Данный идентификатор понадобится для авторизации.
Теперь один из основных этапов — это авторизация пользователя. Для авторизации понадобить access_token. Токен — это набор цифр и латинских букв, с помощью которого будет проведена авторизация, это очень важная строка данных, если ее передать другому человеку, то можно потерять доступ к собственной странице.
Вставим следующую строку в адресную строку браузера:
Где client_id должен быть равен идентификатору вашего приложения.
После нажатия на клавишу Enter загрузиться страница, где в адресной строке отобразиться сам токен и другие параметры.
Таким образом мы смогли получить токен. Токен нужен для идентификации приложения при запросах к базе данных социальной сети.
Проверим нашу работу:
После access_token= пишем наш токен и нажимаем Enter. Вуаля! Мы получили идентификаторы пользователей, которые на текущий момент находятся онлайн.
Теперь сделаем кое-что поинтересней.
Попробуем найти пользователя по его фамилии, имени и дате рождения и возьмем и прочитаем текст постов этого человека.
Итак, напишем небольшую функцию для поиска пользователя и извлечения его идентификатора для последующего обращения к странице данного пользователя.
Данная функция возвращает идентификаторы пользователей по заданным параметрам. Конечно параметры будет лучше перевести в параметры функции, но для демонстрации оставим так как есть.
Результат выполнения программы:
Теперь отправим этот массив идентификаторов в функцию, которая извлечет посты этих пользователей и текст из них.
Результат выполнения данной функции представлен на картинке ниже:
У нас есть несколько видов постов: пост написанный самим человеком, репост, и посты с картинками. Посты с картинками и репосты не рассматриваем, в данной статье рассмотрим только посты написанные самими пользователями и извлечем ключевые слова из них.
Данная функция получает на вход текст поста и извлекает из него ключевые слова. С помощью встроенного морфологического анализатора pymorphy2.
Результат извлечения ключевых слов представлен на следующей картинке:
Такие ключевые слова извлечены из поста. Сложно говорить о смысле текста, но уже можно понять какие возможности можно получить с помощью данного инструмента.
Имея некоторые данные о своих клиентах: ФИО и дату рождения, можно найти некоторую часть этих клиентов в социальных сетях, посмотреть их увлечения, что они пишут и думают. Разделить этих клиентов на некоторые кластеры выявить девиантное поведение, вести диалог с ними особенным образом.