NTA

Сбор и анализ данных в соц.сетях с API и NLP

Довольно сложная задача найти информацию для работы в области DataScience. Она есть в открытом доступе в такой социальной сети как Вконтакте.

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

Таким образом, чтобы получить какую-либо информацию например о пользователе, необходимо сделать http-запрос такого типа:

https://api.vk.com/method/users.get?user_id=210700286&v=5.52

где мы видим протокол, по которому осуществляется соединение, адрес API-сервиса, название метода API и параметры запроса.

В ответ сервер вернет JSON с запрошенными данными.

В чем удобство данного метода сбора информации?

Основная польза в том, что таким способом можем собирать огромные объемы информации об огромном объеме пользователей, можем брать текст постов пользователей, текст комментариев, следить за активностью пользователей в различных группах, видеть, где они оставляют лайки, где они оставляют комментарии.

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

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

Наш выбор пал на язык Python и такие библиотеки как: rutermextract, urllib.request, json.

Чтобы создать новое приложение, необходимо перейти на страницу:

https://vk.com/editapp?act=create

Там создаем приложение и переходим на вкладку Настройки, там имеется ID-приложения. Данный идентификатор понадобится для авторизации.

Теперь один из основных этапов — это авторизация пользователя. Для авторизации понадобить access_token. Токен — это набор цифр и латинских букв, с помощью которого будет проведена авторизация, это очень важная строка данных, если ее передать другому человеку, то можно потерять доступ к собственной странице.

Вставим следующую строку в адресную строку браузера:

https://oauth.vk.com/authorize?client_id=5490057&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends&response_type=token&v=5.52

Где client_id должен быть равен идентификатору вашего приложения.

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

Таким образом мы смогли получить токен. Токен нужен для идентификации приложения при запросах к базе данных социальной сети.

Проверим нашу работу:

https://api.vk.com/method/friends.getOnline?v=5.52&access_token=

После access_token= пишем наш токен и нажимаем Enter. Вуаля! Мы получили идентификаторы пользователей, которые на текущий момент находятся онлайн.

Теперь сделаем кое-что поинтересней.

Попробуем найти пользователя по его фамилии, имени и дате рождения и возьмем и прочитаем текст постов этого человека.

Итак, напишем небольшую функцию для поиска пользователя и извлечения его идентификатора для последующего обращения к странице данного пользователя.

#Поиск сотрудников по имеющимся данным def search_users(): q = 'Vladislav%20Makarov' #Имя Фамилия count = '10' #количество пользователей birth_day = '07' #день рождения birth_month = '08' #месяц рождения birth_year = '1997' #год рождения #сам запрос response = urllib.request.urlopen(URL + 'users.search?q=' + q + '&count=' + count + '&birth_day=' + birth_day + '&birth_month=' + birth_month + '&birth_year=' + birth_year + '&v=5.52&access_token=' + token) #преобразуем в json формат и в словарь json_m = response.read().decode('utf-8') data = json.loads(json_m) ids = [] for i in data['response']['items']: ids.append(i['id']) return ids

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

Результат выполнения программы:

Теперь отправим этот массив идентификаторов в функцию, которая извлечет посты этих пользователей и текст из них.

#возврат записей со стены пользователя или сообщества def wall(owner_id): count = '2' #количество записей response = urllib.request.urlopen(URL + 'wall.get?owner_id=' + owner_id + '&v=5.52&access_token=' + token) json_m = response.read().decode('utf-8') data = json.loads(json_m) #тут мы выводим текст записи на стене пользователя try: print(data['response']['items'][1]['text']) analyze(data['response']['items'][1]['text']) except Exception as e: print(e)

Результат выполнения данной функции представлен на картинке ниже:

У нас есть несколько видов постов: пост написанный самим человеком, репост, и посты с картинками. Посты с картинками и репосты не рассматриваем, в данной статье рассмотрим только посты написанные самими пользователями и извлечем ключевые слова из них.

#функция по извлечению ключевых слов поста def analyze(text): term_extractor = TermExtractor() for term in term_extractor(text): print(term.normalized, term.count)

Данная функция получает на вход текст поста и извлекает из него ключевые слова. С помощью встроенного морфологического анализатора pymorphy2.

Результат извлечения ключевых слов представлен на следующей картинке:

Такие ключевые слова извлечены из поста. Сложно говорить о смысле текста, но уже можно понять какие возможности можно получить с помощью данного инструмента.

Имея некоторые данные о своих клиентах: ФИО и дату рождения, можно найти некоторую часть этих клиентов в социальных сетях, посмотреть их увлечения, что они пишут и думают. Разделить этих клиентов на некоторые кластеры выявить девиантное поведение, вести диалог с ними особенным образом.

{ "author_name": "NTA", "author_type": "editor", "tags": ["\u0444\u0443\u043d\u043a\u0446\u0438\u044f","\u0442\u0443\u0442","\u0441\u0430\u043c","\u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c","\u043f\u043e\u0438\u0441\u043a","\u043c\u0435\u0441\u044f\u0446","\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e","\u0438\u043c\u044f","\u0434\u0435\u043d\u044c","\u0433\u043e\u0434","\u0432\u043e\u0437\u0432\u0440\u0430\u0442"], "comments": 0, "likes": 1, "favorites": 0, "is_advertisement": false, "subsite_label": "newtechaudit", "id": 119231, "is_wide": true, "is_ugc": false, "date": "Fri, 10 Apr 2020 10:16:56 +0300", "is_special": false }
0
0 комментариев
Популярные
По порядку
Читать все 0 комментариев
«Оптимальный портфель» – новая стратегия автоследования от «БКС Мир инвестиций»

«БКС Мир инвестиций» запустил новую стратегию «Оптимальный портфель» на площадке Fintarget – маркетплейсе инвестиционных стратегий.

Осталось всего 3 дня, чтобы подать заявку в Finlanding
В Москве стартовал прием заявок на соискание премий в области охраны окружающей среды

Победителям конкурса вручат  статуэтки с символом конкурса, нагрудные знаки и удостоверения, подписанные мэром Москвы.

фото: Департамент природопользования и охраны окружающей среды города Москвы

Премия разделена на два блока и предусматривает финансовое вознаграждение. Один блок – конкурс в области охраны окружающей среды – включает 8 премий. Сумма награды составляет по 200 тысяч рублей и по 100 тысяч рублей в 4-х номинациях.

Сервис для друзей: как зарабатывает Fixed.one — центр ремонта техники Apple, который растёт без рекламы Статьи редакции

Компания с оборотом 50 млн рублей и прибылью 4 млн рублей в год ремонтирует устройства от Apple и продаёт подержанную технику «Яндексу», «Арзамасу», Level Travel и другим.

Disney построил дом Винни-Пуха в английском лесу — его можно арендовать на ночь через Airbnb Статьи редакции

Ночь стоит от 7633 рублей.

Спальная зона Airbnb
Финт ушами от Тинькофф банка

Короче начали мне названивать операторы, типо возьмите кредитку, бла бла бла, вам предодобрена кредитная карта до 700к. Ну я их шлю, нах мне ваша кредитка, религия не позволяет. И тут один из операторов, с 10го звонка пробивает меня, а повелся я на то что можно с их кредитки без % оплатить другую кредитку. Ну я так подумал в целом 120 дней без %…

19 этикеток вина, которые намного больше, чем просто этикетка
Как успешно продавать кондиционеры с минимальными затратами на рекламу

Владелица магазина кондиционеров Светлана Исюк рассказала, как полезный контент и внимание к клиентам помогают выделиться на фоне конкурентов и как виртуальный маркетолог Макс помог продать 150 акционных моделей.

«Модульбанк» запустил сервис для анализа продаж на маркетплейсах (даже у конкурентов)

Он доступен бесплатно всем клиентам банка.

Brooke Cagle
«Самокат» запустит доставку безрецептурных лекарств совместно со «Сбер Еаптекой» Статьи редакции

Благодаря партнёрству ритейлер планирует сократить время доставки с 1–2 часов до 15 минут.

null