Анализ дружеских связей VK — различия между версиями
(→Введение) |
(→Заключение) |
||
(не показаны 24 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
− | [[File: | + | [[File:znaGfHygTsk.jpg|600px|thumb|right|Так выглядит пример социального графа дружеских связей.Каждый квадратик - человек.Каждая линия - дружба.]] |
== <big>Введение</big> == | == <big>Введение</big> == | ||
<big>Все мы знакомы с теорией о шести рукопожатиях. Недавний анализ сети Фейсбука вывел число 4,7. Мы решили проверить эти данные, только в той соцсети, в которой «живём» (а именно, ВКонтакте). | <big>Все мы знакомы с теорией о шести рукопожатиях. Недавний анализ сети Фейсбука вывел число 4,7. Мы решили проверить эти данные, только в той соцсети, в которой «живём» (а именно, ВКонтакте). | ||
Наша задача – анализ дружеских сетей Вконтакте,разработана на языке программирования Python. Она позволяет построить социальный граф своей странички в сети Вконтакте. Социальный граф — это информация о некоторой группе людей и об отношениях между ними (в данном случае о том, кто с кем дружит). Но часто под этим словосочетанием также подразумевается и схематичное изображение этой информации — в виде точек и линий между ними. Если определенным образом переставить точки, то можно видеть, как выделяются подгруппы людей, внутри которых почти все дружат между собой — это называется кластеризацией. | Наша задача – анализ дружеских сетей Вконтакте,разработана на языке программирования Python. Она позволяет построить социальный граф своей странички в сети Вконтакте. Социальный граф — это информация о некоторой группе людей и об отношениях между ними (в данном случае о том, кто с кем дружит). Но часто под этим словосочетанием также подразумевается и схематичное изображение этой информации — в виде точек и линий между ними. Если определенным образом переставить точки, то можно видеть, как выделяются подгруппы людей, внутри которых почти все дружат между собой — это называется кластеризацией. | ||
+ | |||
Чтобы построить социальный граф, нам надо: | Чтобы построить социальный граф, нам надо: | ||
+ | |||
1. Получить список всех друзей текущего пользователя и представить их в | 1. Получить список всех друзей текущего пользователя и представить их в | ||
виде точек на плоскости. | виде точек на плоскости. | ||
+ | |||
2. Для каждого друга из п.1 получить его друзей, общих с текущим пользователем. | 2. Для каждого друга из п.1 получить его друзей, общих с текущим пользователем. | ||
+ | |||
3. Точку каждого друга соединить линиями с точками других друзей, которые есть у него в друзьях.</big> | 3. Точку каждого друга соединить линиями с точками других друзей, которые есть у него в друзьях.</big> | ||
+ | |||
<big>Для более точного понимания можно рассмотреть пример: | <big>Для более точного понимания можно рассмотреть пример: | ||
− | + | у Вас есть все из перечисленных друзей (A, B, C, D, E, F H, K). В свою очередь у друга 'A' есть Ваш друг 'E' и 'F'. У друга 'B' есть Ваши друзья 'C', 'D', 'H', 'K'. Ваш друг 'C' дружит с 'D' и 'K'.</big> | |
− | + | [[File:2ZcCvKZC4pM.jpg|500px|thumb|left|<big>Иллюстрация к примеру</big>]] | |
− | [[File: | ||
== <big>Цель</big> == | == <big>Цель</big> == | ||
+ | <big>Главной целью нашей работы является анализ дружеских связей Вконтакте с помощью построения социального графа.</big> | ||
== <big>Задачи </big> == | == <big>Задачи </big> == | ||
− | + | <big> | |
− | + | 1.Получение данных пользователя. | |
− | + | ||
− | + | 2.Обработка полученных данных. | |
+ | |||
+ | 3.Визуализация. | ||
+ | |||
+ | </big> | ||
+ | |||
+ | == <big>Описание выполнения задач</big> == | ||
+ | |||
+ | <big>1.Для получения данных пользователь мы использовали API Вконтакте. API ВКонтакте — это интерфейс, который позволяет получать информацию из базы данных vk.com с помощью http-запросов к специальному серверу. Для работы с VK API в Python есть две популярные библиотеки: vk и vk_api. | ||
+ | В своём проекте мы использовали библиотеку vk_api.С помощью методов этой библиотеки мы получаем списки друзей, которые далее нужно будет сортировать. | ||
+ | |||
+ | |||
+ | 2.После получения списков друзей с помощью методов API VK,нам нужно будет их отсортировать.Делаем это следующим образом : | ||
+ | |||
+ | *Поисковым запросом находим список друзей исходного id. | ||
+ | |||
+ | *Далее заполняем словарь общих друзей. | ||
+ | |||
+ | *Получаем ответ. | ||
+ | |||
+ | Всю полученную информацию мы сохраняем в словаре. | ||
+ | |||
+ | Таким образом,суть в том, что мы просто составляем словарь по поисковым запросам.У нас есть первоначальная таблица id друзей.Затем, c помощью цикла у каждого id мы смотрим количество общих друзей с исходным id. | ||
+ | |||
+ | 3.Для визуализации графов мы использовали библиотеку NetworkX. | ||
+ | Рассматриваемая библиотека NetworkX предназначенная для создания, манипуляции и изучения структуры, динамики и функционирования сложных сетевых структур.Так же использовалась библиотека Matplotlib. | ||
+ | |||
+ | Более подробное описание выполнения работы Вы можете найти в текстовом документе нашей курсовой работы.(см. раздел "Скачать проект")</big> | ||
+ | |||
+ | == <big>Результаты работы программы</big> == | ||
+ | [[File:bZipYtxHV4s.jpg]] | ||
+ | |||
+ | <big>''Полученный социальный граф дружеских связей''.</big> | ||
+ | |||
+ | |||
+ | |||
+ | == <big>Заключение</big> == | ||
+ | <big>Таким образом, в ходе работы над проектом, был построен социальный граф дружеских связей в социальной сети Вконтакте. Мы смогли проанализировать информацию о некоторой группе людей и наглядно увидеть связь между ними. Из результатов программы можно увидеть, как выделяются подгруппы людей, внутри которых почти все дружат между собой —та самая кластеризация, о которой говорилось во введении. | ||
+ | </big> | ||
+ | |||
+ | == <big>Перспективы развития проекта</big> == | ||
+ | *Визуализация проекта с помощью 3D графики. | ||
+ | *Использование более полной информации о пользователях(например: фотографии профилей, имена. | ||
+ | *Работа в realtime. | ||
+ | *Использование RAD-buildera для вывода этого проекта в конченый продукт. | ||
+ | *Построение собственной рекомендательной системы на основе связей/общих интересов и тд. | ||
+ | |||
+ | == <big>Cписок литературы</big> == | ||
+ | |||
+ | <big> | ||
+ | |||
+ | * https://ru.wikipedia.org/wiki/Анализ_социальных_сетей | ||
+ | |||
+ | * https://ru.wikipedia.org/wiki/Социальный_граф | ||
+ | |||
+ | * Документация API VK : https://vk.com/dev/manuals | ||
+ | |||
+ | * Документация NetworkX : https://networkx.readthedocs.io/en/stable/ | ||
+ | |||
+ | * Документация Matplotlib: https://matplotlib.org</big> | ||
+ | |||
+ | == <big>Скачать проект</big> == | ||
+ | |||
+ | * Текстовый документ описания курсовой работы: | ||
+ | |||
+ | [[File:Курсовая_Работа_Граф_Дружеских_Связей.docx]] | ||
+ | |||
+ | * Код программы на языке Python : | ||
+ | |||
+ | [[:File:Код_Программы.docx]] | ||
+ | |||
+ | == <big>Участники проекта</big> == | ||
+ | |||
+ | * [http://tm.spbstu.ru/Лосева_Татьяна Лосева Татьяна] | ||
+ | * [http://tm.spbstu.ru/Киселёв_Лев Киселёв Лев] | ||
+ | |||
+ | == <big>См. также</big> == | ||
+ | [[Кафедра "Теоретическая механика"]] |
Текущая версия на 11:04, 2 июня 2017
Содержание
Введение[править]
Все мы знакомы с теорией о шести рукопожатиях. Недавний анализ сети Фейсбука вывел число 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.Получение данных пользователя.
2.Обработка полученных данных.
3.Визуализация.
Описание выполнения задач[править]
1.Для получения данных пользователь мы использовали API Вконтакте. API ВКонтакте — это интерфейс, который позволяет получать информацию из базы данных vk.com с помощью http-запросов к специальному серверу. Для работы с VK API в Python есть две популярные библиотеки: vk и vk_api. В своём проекте мы использовали библиотеку vk_api.С помощью методов этой библиотеки мы получаем списки друзей, которые далее нужно будет сортировать.
2.После получения списков друзей с помощью методов API VK,нам нужно будет их отсортировать.Делаем это следующим образом :
- Поисковым запросом находим список друзей исходного id.
- Далее заполняем словарь общих друзей.
- Получаем ответ.
Всю полученную информацию мы сохраняем в словаре.
Таким образом,суть в том, что мы просто составляем словарь по поисковым запросам.У нас есть первоначальная таблица id друзей.Затем, c помощью цикла у каждого id мы смотрим количество общих друзей с исходным id.
3.Для визуализации графов мы использовали библиотеку NetworkX. Рассматриваемая библиотека NetworkX предназначенная для создания, манипуляции и изучения структуры, динамики и функционирования сложных сетевых структур.Так же использовалась библиотека Matplotlib.
Более подробное описание выполнения работы Вы можете найти в текстовом документе нашей курсовой работы.(см. раздел "Скачать проект")
Результаты работы программы[править]
Полученный социальный граф дружеских связей.
Заключение[править]
Таким образом, в ходе работы над проектом, был построен социальный граф дружеских связей в социальной сети Вконтакте. Мы смогли проанализировать информацию о некоторой группе людей и наглядно увидеть связь между ними. Из результатов программы можно увидеть, как выделяются подгруппы людей, внутри которых почти все дружат между собой —та самая кластеризация, о которой говорилось во введении.
Перспективы развития проекта[править]
- Визуализация проекта с помощью 3D графики.
- Использование более полной информации о пользователях(например: фотографии профилей, имена.
- Работа в realtime.
- Использование RAD-buildera для вывода этого проекта в конченый продукт.
- Построение собственной рекомендательной системы на основе связей/общих интересов и тд.
Cписок литературы[править]
- Документация API VK : https://vk.com/dev/manuals
- Документация NetworkX : https://networkx.readthedocs.io/en/stable/
- Документация Matplotlib: https://matplotlib.org
Скачать проект[править]
- Текстовый документ описания курсовой работы:
Файл:Курсовая Работа Граф Дружеских Связей.docx
- Код программы на языке Python :