CoderCastrov logo
CoderCastrov
Визуализация данных

_Один граф, чтобы править ими всех_ - Анализ сети Властелин колец

_Один граф, чтобы править ими всех_ - Анализ сети Властелин колец
просмотров
5 мин чтение
#Визуализация данных
Table Of Content

    **Ссылка на окончательные результаты → **ССЫЛКА

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

    Как можно объединить Властелин колец и анализ данных? Хороший вопрос...

    Как и в любом проекте анализа данных, все начинается с данных.

    Быстрый поиск в Интернете привел меня на сайт One Wiki to Rule Them All, который служит энциклопедией книг Дж. Р. Р. Толкина. К счастью, на сайте содержится тысячи страниц с подробностями о персонажах, местах, расах и исторических событиях.

    Кроме того, он позволяет любому, кто хочет, собирать информацию со своих страниц, используя парсер. Как я это знаю? Потому что на каждом сайте можно добавить "robots.txt/" к URL-адресу, чтобы проверить, разрешает ли сайт парсинг и при каких условиях. (ссылка на файл robots.txt сайта, дополнительная информация о файле robots.txt)

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

    Какие данные можно получить?

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

    Давайте начнем с биографических данных.

    После сбора всех страниц персонажей, вот как выглядел фрейм данных: (визуализация фрейма данных с помощью missingno)

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

    Биографические данные

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

    На графике культур, как неудивительно, самыми распространенными культурами являются культуры людей с Гондором и Роханом на первом месте. Этот график коррелирует с графиком рас и рассказывает нам ту же историю.

    График пола показывает, что мужчин гораздо больше, чем женщин (почти в 5 раз). Скорее всего, если бы книги были написаны в наши дни, а не в 20 веке, то график был бы более сбалансированным.

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

    Текст

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

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

    Ссылки

    Ссылки могут не выглядеть мощным источником данных, но на мой взгляд, это будет недооценка. Используя анализ ссылок, мы можем выявить несколько интересных моментов. Например: A) насколько популярен персонаж и B) какие связи и отношения между персонажами.

    Этот график очень интересен, потому что он показывает нам, что наиболее упоминаемые персонажи не обязательно являются центральными. Саурон и Гэндальф - важные персонажи, но, по моему мнению, они менее важны, чем Фродо. Тем не менее, Фродо оказался на девятом месте, в то время как Саурон и Гэндальф заняли первое и второе места соответственно. Рейтинг не говорит нам о центральности в истории, но он говорит нам о связности персонажей.

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

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

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

    Сеть из 100 главных персонажей Обнаруженные сообщества с помощью алгоритма Лувена (100 главных персонажей)

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

    Сеть Властелин колец Детали персонажей

    Ссылка на интерактивный граф

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

    Спасибо всем за прочтение моей статьи, если у вас есть вопросы, комментарии или идеи для улучшения, пожалуйста, оставьте комментарий ниже!

    CodeАлон Коэн