_Один граф, чтобы править ими всех_ - Анализ сети Властелин колец
Table Of Content
**Ссылка на окончательные результаты → **ССЫЛКА
Первый раз, когда я посмотрел Властелин колец, был в 2001 году, и я почувствовал, что моя жизнь навсегда изменилась. С тех пор прошло много времени, но до сих пор я могу наслаждаться просмотром расширенной трилогии. Поскольку я посмотрел фильмы слишком много раз, я решил сделать что-то другое и объединить Властелин колец с миром анализа данных.
Как можно объединить Властелин колец и анализ данных? Хороший вопрос...
Как и в любом проекте анализа данных, все начинается с данных.
Быстрый поиск в Интернете привел меня на сайт One Wiki to Rule Them All, который служит энциклопедией книг Дж. Р. Р. Толкина. К счастью, на сайте содержится тысячи страниц с подробностями о персонажах, местах, расах и исторических событиях.
Кроме того, он позволяет любому, кто хочет, собирать информацию со своих страниц, используя парсер. Как я это знаю? Потому что на каждом сайте можно добавить "robots.txt/" к URL-адресу, чтобы проверить, разрешает ли сайт парсинг и при каких условиях. (ссылка на файл robots.txt сайта, дополнительная информация о файле robots.txt)
Для начала мне нужно было получить доступ к сайту и собрать всю информацию со страниц. Я решил собрать только страницы персонажей и сосредоточиться на них.
Какие данные можно получить?
На каждой странице содержится текст, фотографии, ссылки, и во многих случаях есть биографические данные. Меня особенно интересовали биографические данные, потому что я предполагал, что поля, которые они содержат, похожи во всех страницах, поэтому я могу объединить их в один фрейм данных.
Давайте начнем с биографических данных.
После сбора всех страниц персонажей, вот как выглядел фрейм данных: (визуализация фрейма данных с помощью missingno)
Как видите, здесь много столбцов, но большинство из них заполнены только наполовину или почти пусты. После некоторой очистки и перестановки данных, я провел анализ для следующих полей: Оружие, Царства, Раса, Пол, Культура.
Биографические данные
На графиках выше показано распределение рас и происхождения персонажей. Как показывает график рас, наиболее распространены люди, затем хоббиты, эльфы, гномы, орки и так далее. Во время анализа я столкнулся с персонажами, о которых не знал. Например, вы знали, что существует 3 разных персонажа, принадлежащих расе Балрогов?
На графике культур, как неудивительно, самыми распространенными культурами являются культуры людей с Гондором и Роханом на первом месте. Этот график коррелирует с графиком рас и рассказывает нам ту же историю.
График пола показывает, что мужчин гораздо больше, чем женщин (почти в 5 раз). Скорее всего, если бы книги были написаны в наши дни, а не в 20 веке, то график был бы более сбалансированным.
Последний график представляет распределение оружия. Чтобы создать этот график, я должен был нормализовать названия оружия. В большинстве случаев один тип оружия имел несколько версий. Например, в категории "меч" были "меч короля", "эльфийский меч", "меч роханцев" и другие.
Текст
NLP - увлекательный мир, в котором можно извлечь информацию из текста с помощью широкого спектра алгоритмов. Поскольку я хотел оставаться сосредоточенным, я решил создать только один график, который подчеркивает силу текста.
Вышеуказанный график был создан с использованием слов со страницы Гэндальфа. Слова расположены в форме кольца, и их размер пропорционален их частоте в тексте.
Ссылки
Ссылки могут не выглядеть мощным источником данных, но на мой взгляд, это будет недооценка. Используя анализ ссылок, мы можем выявить несколько интересных моментов. Например: A) насколько популярен персонаж и B) какие связи и отношения между персонажами.
Этот график очень интересен, потому что он показывает нам, что наиболее упоминаемые персонажи не обязательно являются центральными. Саурон и Гэндальф - важные персонажи, но, по моему мнению, они менее важны, чем Фродо. Тем не менее, Фродо оказался на девятом месте, в то время как Саурон и Гэндальф заняли первое и второе места соответственно. Рейтинг не говорит нам о центральности в истории, но он говорит нам о связности персонажей.
В теории сетей степень центральности - это метрика, которая используется для измерения центральности узлов в сети. Чем больше узлов указывает на вас, тем более центральным вы являетесь. График выше отличается от предыдущего графика, поскольку он измеряет центральность персонажей по количеству уникальных ссылок, а не просто по количеству ссылок.
Дополнительная метрика, которая говорит нам о важности узла, - степень центральности по посредничеству. Эта метрика измеряет, насколько важен узел для кратчайших путей в сети. Например, Бруклинский мост не является центральным местом из-за людей, которые его посещают, а из-за людей, которые проходят через него по пути куда-то еще.
Чтобы получить некоторые идеи относительно связей между персонажами, существует несколько алгоритмов обнаружения сообществ. В следующем примере граф показывает персонажей, окрашенных в цвета, обнаруженные с помощью алгоритма Лувена.
Поскольку данные, которые я собрал, уже содержали много деталей о персонажах, я не видел смысла использования этих сложных моделей в нашем случае. Персонажи могут быть разделены по своим расам или по своим культурам.
На приведенном выше графике вы можете увидеть связь между персонажами в виде сетевого графика. В этой интерактивной сети (созданной с использованием pyvis) при наведении мыши на каждый узел отображаются биографические данные персонажа. При наведении мыши на ребра отображается количество ссылок, что может научить нас о качестве связей между персонажами. Размер узлов пропорционален их степени центральности, а их расположение было рассчитано на основе их связи с использованием алгоритма симуляции Барнса-Хатта.
Спасибо всем за прочтение моей статьи, если у вас есть вопросы, комментарии или идеи для улучшения, пожалуйста, оставьте комментарий ниже!