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 комментариев
Конференция GoGlobal! соберет ведущих маркетологов

29 сентября 2021 года впервые состоится GoGlobal! — однодневная онлайн-конференция для маркетологов, заинтересованных в ускорении глобального присутствия своих кампаний.

«Вам звонок из Циан»: зачем компания скупает номера телефонов и как call-tracking помогает клиентам сервиса

Подменные номера телефонов защищают от нежелательных звонков и упрощают аналитику продаж

Почему не стоит заказывать товары 18+ на Озоне, если вы не готовы их потом нести в пункт самовывоза

Хочу поделиться неудачной историей заказа товара 18+ на Озоне. И как Озон не хочет помогать решить проблему. Текст могут читать только совершеннолетние пользователи сайта.

Sports.ru рекламирует запрещенных мошеннических букмекеров. Потерял 59 000 рублей

Добрый день! Пишу на vc, так как больше нигде не могу добиться ответа ни от представителей казино, ни от представителей Sports,ru, которые рекламируют нелегальное на территории РФ казино и букмекера 1xbet.

Выборы, выборы, кандидаты

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

Что может быть важнее прибыли. ESG-словарь для инвестора

В 2020–2021 гг. резко возросла популярность темы ответственного инвестирования, или ESG. Идея о том, что инвестиции должны не только приносить прибыль, но и поддерживать экологию и социальную справедливость, привела к тому, что ESG-фонды стали играть значимую роль на мировых рынках капитала.

Дайджест новостей Сбера: AR-экскурсия, распознавание животных и премия для учёных

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

«Яндекс» оставляет только положительные отзывы о своих сервисах

После ситуации с не доставленным заказом из Яндекс Лавки, я оставил отзыв на сервисе Карт. Его приняли и разместили, но доступен он только для аккаунта, с которого я его оставлял)))

Я задолбался пропускать интересные статьи на vc.ru и создал Capitan

Это самый удобный рабочий стол для браузера

«Сбербанк» через час после личного визита позвал 84-летнюю бабушку еще раз в прийти офис

Казалось бы удобно - оформил получение пенсии на карту и нет проблем. Но это не про историю со Сбербанком. Здесь через час после получения карты лично в отделении прилетело смс о блокировке онлайн сервисов банка.

null