Анализ дружеских связей VK с помощью Python

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 11.01.2020
Размер файла 4,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Санкт-Петербургский политехнический университет

Институт Прикладной математики и механики

Кафедра теоретической механики

Курсовая работа на тему:

«Анализ дружеских связей VK с помощью Python»

Лосева Татьяна

Санкт-Петербург

2017

Оглавление

Введение

1. Получения данных пользователя с помощью API Вконтакте

2. Алгоритм обработки данных

3. Визуализация обработанных данных: построение графов

Итоги

Выводы

Список используемой литературы

Введение

Все мы знакомы с теориейо шести рукопожатиях. Недавний анализ сети Фейсбука вывел число 4,7. Мы решили проверить эти данные, только в той соцсети, в которой «живём» (а именно, ВКонтакте).

Наша задача - анализ дружеских сетей Вконтакте,разработана на языке программирования Python.Она позволяет построить социальный граф своей странички в сети Вконтакте. Социальный граф -- это информация о некоторой группе людей и об отношениях между ними (в данном случае о том, кто с кем дружит). Но часто под этим словосочетанием также подразумевается и схематичное изображение этой информации -- в виде точек и линий между ними. Если определенным образом переставить точки, то можно видеть, как выделяются подгруппы людей, внутри которых почти все дружат между собой (подгруппа одноклассников, одногруппников, коллег по работе) -- это называется кластеризацией.

Чтобы построить социальный граф, нам надо:

1. Получить список всех друзей текущего пользователя и представить их в виде точек на плоскости.

2. Для каждого друга из п.1 получить его друзей, общих с текущим пользователем.

3. Точку каждого друга соединить линиями с точками других друзей, которые есть у него в друзьях.

Для более точного восприятия этого понятия можно рассмотреть пример:

У Вас есть все из перечисленных друзей (A, B, C, D, E, F H, K). В свою очередь у друга 'A' есть Ваш друг 'E' и 'F'. У друга 'B' есть Ваши друзья 'C', 'D', 'H', 'K'. Ваш друг 'C' дружит с 'D' и 'K'.

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

Задачи, выполнимые в ходе работы :

1. Получение данных пользователь с помощью API ВКонтакте

2. Обработка полученных данных.

3. Визуализация обработанных данных : построение графов с помощью модулейNetworkX и Matplotlib

1. Получения данных пользователя с помощью API Вконтакте.

Рассмотрим принципы работы API ВКонтакте.

API (application programming interface) -- это посредник между разработчиком приложений и какой-либо средой, с которой это приложение должно взаимодействовать. API упрощает создание кода, поскольку предоставляет набор готовых классов, функций или структур для работы с имеющимися данными.

API ВКонтакте -- это интерфейс, который позволяет получать информацию из базы данных vk.com с помощью http-запросов к специальному серверу. Вам не нужно знать в подробностях, как устроена база, из каких таблиц и полей каких типов она состоит -- достаточно того, что API-запрос об этом «знает».

Для работы с VK API в Python есть две популярные библиотеки: vk и vk_api.

В своём проекте мы использовали библиотеку vk_api. После того, как модуль был установлен, нам необходимо создать Standalone-приложение, после чего мы сможем использовать нужные нам методы API, которые будут описаны далее. Приложение создается здесь -- выберем Standalone-приложение.

Для дальнейшей работы нам понадобится ID приложения, его можно найти во вкладке «настройки».

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

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

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

После получения токена, нам необходимо получить право доступа.

Для этого мы использовали используйте параметр scope диалога авторизации. Когда мы получали токен для своего приложения, в scope было указано значение friends -- и в окне авторизации приложение запросило доступ к друзьям.

Теперь мы можем делать вызов необходимого нам метода от своего имени.

Мы использовали методы для работы с друзьями:

· friends.get- возвращает список идентификаторов (id) друзей пользователя.

· friends.getMutual- возвращает список идентификаторов общих друзей между парой пользователей.

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

2. Алгоритм обработки данных

После получения списков друзей с помощью методов APIVK,нам нужно будет их отсортировать.Делать эту будем следующим образом :

1. Мы принимаем строку из 25 id, разделенных запятыми, вынимаем по одному id, делаем запрос к friends.get, а нужная нам информация будет приходить в словаре, где ключи -- это id, а значения -- список друзей данного id.

2. При первом запуске мы отправим хранимой процедуре список друзей текущего пользователя, id которого указан в настройках. Список будет разбит на несколько частей (N/25 -- это и число запросов), связано это с ограничением количества обращений к API Вконтакте.

3. Получение ответа.

Всю полученную информацию мы сохраняем в словаре, например:

Ключи 1, 2 и 3 были получены при глубине, равной 1. Предположим, что это и были все друзья указанного пользователя (0).

Если глубина больше 1, то далее воспользуемся разностью множеств, первое из которых -- значения словаря, а второе -- его ключи. Таким образом, мы получим те id (в данном случае 0 и 4), которых нет в ключах, разобьем их опять на 25 частей и отправим хранимой процедуре.

Тогда в нашем словаре появятся 2 новых ключа:

Таким образом,суть в том, что мы просто составляем таблицу по поисковым запросам,точнее даже не таблицу, а словарь.У нас есть первоначальная таблица idдрузей :

Затем, c помощью цикла у каждого idмы смотрим количество общих друзей с другими id.

3. Визуализация обработанных данных : построение графов

Для визуализации графов мы использовали библиотеку NetworkX.

Рассматривается библиотека NetworkX предназначенная для создания, манипуляции и изучения структуры, динамики и функционирования сложных сетевых структур.

Рассмотрены основы использования библиотеки в качестве инструмента обучения, прикладного программирования или научных исследований. вконтакте библиотека сетевой

Библиотека networkX создана на языке Python и предназначена для работы с графами и другими сетевыми структурами.

Основные принципы визуализации :

· Использование классов для работы с простыми графами;

· Узлом графа является изображение, (а именно круг);

· Встроенные процедуры для создания графов базовых типов;

· Получение таких характеристик графа как степени вершин, высота графа, диаметр, радиус, длинны путей, центр, промежуточности, и т. д.;

· Визуализировать сети в виде 2D.

Используемые методы :

1.Graph - реализация простого неориентированного графа. Дополнительные вершины между двумя узлами игнорируются, возможны узлы соединённые с самим собой.

Пример создания пустого графа :

2.Узлы и дуги - составляющие любого графа. Любой узел или дуга имеют уникальный идентификатор, по которому можно получить всю информацию с ним связанную, также дополнительно могут существовать имена более удобные для реализации текущего алгоритма нежели идентификаторы, также позволяющие получить эти данные.

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

В своей программе мы использовали именно этот способ.

3. Получение информации о графе

Кроме создания графа обычно нужно получать информацию о его узлах, дугах.Основнымиметодами,кторые мы использовали для этого, я получение массивов узлов и дуг (edges() и nodes() соответственно).

4.Визуализация графов

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

Предоставлены удобные методы для отображения графов с использованием Python библиотеки Matplotlib.

Простой пример визуализации графа:

Результаты работы программы

Полученныйсоциальный граф дружеских связей.

Заключение

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

Список используемой литературы

1. https://ru.wikipedia.org/wiki/Анализ_социальных_сетей

2. https://ru.wikipedia.org/wiki/Социальный_граф

3. Документация API VK : https://vk.com/dev/manuals

4. Документация NetworkX : https://networkx.readthedocs.io/en/stable/

5. Документация Matplotlib: https://matplotlib.org

Размещено на Allbest.ru

...

Подобные документы

  • Разработка блок-схемы и программы обработки одномерного массива с доступом к элементам с помощью индексов и с помощью указателей. Словесное описание алгоритма и пользовательского интерфейса, листинг программы обработки матрицы и результат её выполнения.

    курсовая работа [391,1 K], добавлен 30.09.2013

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

    реферат [27,4 K], добавлен 20.04.2019

  • Изучение программы обработки баз данных Microsoft Access. Особенности и принципы создания баз данных, форм для работы с ними, межтабличных связей. Конструирования различных видов отчетов. Создание кнопочной формы с помощью диспетчера, итоговых запросов.

    лабораторная работа [2,1 M], добавлен 11.03.2013

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

    дипломная работа [1,6 M], добавлен 25.04.2015

  • Разработка приложения для шифрования данных с помощью алгоритма DES5: процесс шифрования, расшифрования, получение ключей. Спецификация программы, процедуры и функции; описание интерфейса пользователя. Реализация задачи в среде программирования DELPHI.

    курсовая работа [812,6 K], добавлен 27.03.2012

  • Создание таблиц базы данных с помощью MS Access "Страны Азии". Форма базы данных и запросы к выборкам данных. Модификация структуры таблиц, создания связей между главными таблицами, редактирование данных и проектирование форм для реальной базы данных.

    контрольная работа [723,9 K], добавлен 25.11.2012

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

    курсовая работа [537,9 K], добавлен 28.06.2011

  • Интерфейс и начало работы в Microsoft Access. Построение реляционной базы данных и разработка инфологической модели. Разработка формы с помощью мастера форм и запроса в режиме конструктора. Создание таблиц данных. Поиск и замена значений в полях.

    методичка [3,9 M], добавлен 21.07.2009

  • Проект реляционной базы данных, ее нормализация. Поиск данных с помощью фильтра и запросов. Пример создания и работы с БД "Музыкальный каталог" (Музыка.accdb). Установление связей с помощью одноименных полей, являющихся в главной таблице первичным ключом.

    методичка [1,7 M], добавлен 25.04.2015

  • Размещение центров и синтез абонентских сетей дистанционного обучения в классе радиальных структур. Локальное перестроение дерева Штейнера, процедура объединения свободных ребер. Разработка программы: описание структур данных, настройка алгоритма.

    научная работа [677,3 K], добавлен 24.01.2010

  • Общая характеристика данных. Список как простейшая линейная структура данных. Табличные структуры данных (матрицы). Принцип действия метода дихотомии. Основные режимы обработки данных. Расчет отчислений в фонды по каждому сотруднику с помощью MS Excel.

    курсовая работа [1,6 M], добавлен 21.10.2009

  • Проектирование базы данных фирмы по предоставлению телекоммуникационных услуг с помощью СУБД MS SQL SERVER. Построение логической и физической модели данных. Описание информационных потребностей пользователя. Создание хранимых процедур и триггеров.

    курсовая работа [2,3 M], добавлен 21.03.2015

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

    лабораторная работа [787,7 K], добавлен 22.11.2014

  • Рассмотрение технологии создания базы данных с помощью программы MS Access. Описание структуры предприятия заказчика. Проведение автоматизации документооборота предприятия. Разработка интерфейса пользователя. Создание кнопочной формы, диаграмы, отчета.

    курсовая работа [3,8 M], добавлен 12.04.2015

  • Этапы создания и разработки базы данных. Построение модели предметной области. Разработка даталогической и физической моделей данных, способы обработки данных о сотрудниках организации. Проектирование приложений пользователя. Создание кнопочной формы.

    курсовая работа [2,1 M], добавлен 14.02.2011

  • Особенности и преимущества Microsoft Office Access как системы управления базами данных реляционного типа. Процесс создания новой таблицы с помощью конструктора, построение схемы данных, создание запроса с помощью языка SQL, вывод информации в отчёте.

    контрольная работа [199,2 K], добавлен 15.12.2014

  • Программа на языке Turbo Pascal для шифрования данных с помощью шифра Тритемиуса. Входные, выходные данные. Схема алгоритма и текст программы. Порядок ввода исходных данных и описание получаемых результатов. Тестовых задания и анализ их функционирования.

    курсовая работа [4,0 M], добавлен 06.01.2011

  • Назначение разработанных программных средств. Визуализации иклинометрии и каротажа. Изучение структуры баз данных, используемых в приложении. Встроенные типы данных Oracle и описание разработанных методов. Взаимодействие пользователя с экранной формой.

    курсовая работа [1,1 M], добавлен 14.08.2014

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

    курсовая работа [336,2 K], добавлен 27.06.2015

  • Выбор программных и аппаратных средств для создания базы данных. Описание структуры программы. Описание разработки приложения. Подключение к базе данных, выполняемое с помощью компонента ADOConnectio. Создание средств защиты информации в программе.

    курсовая работа [2,1 M], добавлен 16.02.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.