2218

Когда нечего делать на каникулах - игра в википедии

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

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


Важный дисклеймер: я не одобряю идеи Гитлера, не призываю никого одобрять эти идеи и вообще никого ни к чем не призываю.


Техническое исполнение


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

Началось всё с написания простенького приложения на C# с SQL базой для вытаскивания статей первого уровня, то есть тех, у которых есть прямая ссылка на Гитлера. Делалось это путем вызова API и запроса обратных ссылок (backlinks) со статьи про Гитлера. Первый уровень был вытащен, перешла ко второму, который добывался всё через те же backlinks. С третьим уровнем начались проблемы: по скромным подсчетам для перебора статей третьего уровня мне бы потребовалось около 40 дней, а ждать так долго совершенно не хотелось. К тому же мне хотелось в том числе найти статьи, с которых нет ссылок на Гитлера, так что нужен был какой-то финт ушами. Сделать какой-то умный финт ушами я не осилила, поэтому самым прямолинейным методом просто вытащила все статьи до 8.500.000 идентификатора. Почему именно такая правая граница? Потому что максимальный идентификатор у одной из статей второго уровня был 8.000.000, ну и я еще докинула 500.000. По итогу, я не могу 100% утверждать, что там, за 8.500.000 жизни нет, но если она и есть, то её очень мало, и она не сильно повлияет на конечный результат. Затем нужно было избавиться от всяких служебных статей, и вот уже с такой вычищенной выборкой работать дальше, проверяя, есть ли у статей ссылки на статьи с уже известным уровнем.


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


Ну а теперь самое интересное..


Результаты


Определяя Индекс Гитлера как кол-во шагов, за которые можно дойти до статьи про Гитлера, получаем следующую статистику

То есть с 97% статей можно перейти на статью про Гитлера максимум за 3 шага. Добавим туда четвертый уровень, и получим 99,8%, то есть почти все. А статей 6-го уровня я вообще не нашла. Вместо них, зато, встретились те, с которых нет ссылок на Гитлера. 400 из них не имеют ссылок вообще никуда, не то что на Гитлера.


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

так, а это что такое?

Пошла, проверила, всё так:

К теме трёх поросят неоднократно обращался другой мультипликатор, Тэкс Эвери: так, мультфильм «Blitz Wolf» времён Второй мировой войны использует волка для карикатурного изображения Адольфа Гитлера, два беззаботных поросёнка представляют страны, заключившие с ним пакт о ненападении, и лишь третий поросёнок (сержант Свин), подозревая подвох, готовится к войне.

Второй и третий уровень содержат слишком много статей, чтобы найти какие-то закономерности, поэтому я даже не пыталась. Но может быть вам будет интересно узнать, что от носовой слизи (да, такая статья на википедии тоже есть) можно дойти до Гитлера за 3 шага:


Носовая слизь -> хлорид натрия -> Германия (или Китай) -> Гитлер


Четвертый уровнь и милые сердцу математические термины

Там же химия, астрономия, медицина, неизвестные мне люди и населенные пункты, просто неизвестные мне слова типа Жарри, Мапуче и Бокштейн.


Пятый уровень и еще меньше известных слов. Вот тубус знаю, тубус - это детство. Тело с ручками тоже знаю, метод Гаусса-Зейделя знать должна, но не знаю.

Ну и если вам несказанно повезло попасть в 0.1 процент статей, не связанных с Гитлером никак, вас там встретят Центр художественного перевода и литературных связей Азербайджана, Раздражающий контакный дерматит и Всемирный день кастрации животных. Ну и так, по мелочи.


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


С наступающим!

31
Автор поста оценил этот комментарий

Четвертым шагом попал на Гитлера.

раскрыть ветку (1)
26
Автор поста оценил этот комментарий

о как! через ссылки непосредственно в тексте статьи? не по категориям?

показать ответы
24
Автор поста оценил этот комментарий

А ты пожертвовала три доллара на "мощный API" Википедии? :)

раскрыть ветку (1)
39
Автор поста оценил этот комментарий

даже чутка больше :)

показать ответы
24
Автор поста оценил этот комментарий

Да, как-то получилось. Я может не правильно что-то делал. Сначала вискас -> 1936 год -> Летняя олимпиада в Германии -> Адольф Гитлер

раскрыть ветку (1)
8
Автор поста оценил этот комментарий

а я там даже вискас не нашла :(

показать ответы
5
DELETED
Автор поста оценил этот комментарий

Таки да. Ключ ко всему - любая страна. Яблоко - Штрудель - СВН - Германия

раскрыть ветку (1)
10
Автор поста оценил этот комментарий

Сейчас продолжаю эксперимент, убрав большинство стран и языки. Без ссылок остались 114.000 слов, из них 15.000 сменили индекс с 2 на 3. Остальное пока считается.

показать ответы
0
Автор поста оценил этот комментарий
Так в чем прикол игры ? Набераешь 1938-39 выбераешь событие связанное с германией и привет гитлер :/ и страну не юзаешь и события 2 мировой
раскрыть ветку (1)
5
Автор поста оценил этот комментарий

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

показать ответы
Автор поста оценил этот комментарий

А как вы это делаете?

У меня уже 10 случайных переходов, Гитлер не обнаружен:

Крылья Советов>Махачкала>Самый благоустроенный город России>Саранск>Инсар>Алатырь>Мордовия>Чемпионат мира по футболу 2018>Трамп>Форс-мажор>Корабль-призрак

раскрыть ветку (1)
5
Автор поста оценил этот комментарий

Переходить нужно не случайно :)

показать ответы
2
DELETED
Автор поста оценил этот комментарий

Вы проделали хорошую работу. Это удивляет. Немного читерский подход с Гитлером на первом шаге, Я как начал читать пост, то его сразу отбросил как самый простой.


Мне был больше интересен хуманизированный вариант поиска, то есть заставить машину искать так, как ищет человек. Кликая по всем ссылкам и считая количество слов между ссылкам. Например: Допустим, в статье про США через 4 слова есть ссылка на Вторую мировую войну, а через 10 слов ссылка на Германию. Потом в этих двух посчитать через сколько слов я попаду на Гитлера. Какой из этих двух путей при равном количестве шагов будет наиболее короткий, если бы я вычитывал каждое слово.


Сколько по времени заняла реализация Вашего алгоритма поиска?

раскрыть ветку (1)
4
Автор поста оценил этот комментарий

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

0
Автор поста оценил этот комментарий
Как можно увидеть Ваше приложение? Сами предложили снабдить желающих.
раскрыть ветку (1)
4
Автор поста оценил этот комментарий

А можно я ограничусь базой? За говнокод стыдно просто )

показать ответы
10
Автор поста оценил этот комментарий

То есть это 0,1% статей, все ссылки которых ведут только друг на друга? Ведь иначе бы все равно пришли к Гитлеру.

раскрыть ветку (1)
4
Автор поста оценил этот комментарий

Получается, что так

показать ответы
0
Автор поста оценил этот комментарий

И даже Зощенко?

раскрыть ветку (1)
4
Автор поста оценил этот комментарий

2-й уровень через

Иллюстрация к комментарию
показать ответы
0
DELETED
Автор поста оценил этот комментарий

Я бы тоже сыграл, но не понял алгоритм перебора статей... Интересно позадавать ещё условий с исключением однокоренных слов типа ГЕРМАНия, ГЕРМАНский и задать ID статей которые нужно игнорировать.

раскрыть ветку (1)
7
Автор поста оценил этот комментарий

Да, с условиями интересно.. Яблоко, кстати, раньше было 2го уровня. Сейчас, подозреваю, прыгнет на 3й, как и большинство


алгоритм перебора такой

Иллюстрация к комментарию
показать ответы
2
Автор поста оценил этот комментарий

Платформа типа edx/coursera для зарубежья, делаем свой knowledge graph на данных common crawl/wikidata. Сейчас уходим от hdfs в сторону обычного s3api и переезжаем с AWS на GCP

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

не буду делать вид, что поняла все сокращения, но звучит интересно :)

показать ответы
19
DELETED
Автор поста оценил этот комментарий
метод Гаусса-Зейделя знать должна, но не знаю

Господи, как бы я хотел про него ничего не знать…

*плачет при упоминании линейной алгебры*

Ну и если вам несказанно повезло попасть в 0.1 процент статей, не связанных с Гитлером никак, вас там встретят

Статьи, в которых ссылок нет в принципе))

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

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Там есть где-то 1200 статей с ссылками, но не на Гитлера

показать ответы
Автор поста оценил этот комментарий

С дня кастрации переходит изи:

1) ссылка в тексте World Spay Day

2) ссылка Humane Society of the United States

3) в статье ссылка на вторую мировую

4) Гитлер

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Ну там через английскую википедию, а с неё я данные не собирала. Но вообще конечно вы правы :)

показать ответы
1
Автор поста оценил этот комментарий

Да уж, просто все. Европейская часть, США, Азия, все в общем завязаны на вторую-мировую. А там по накатанной. А интересно, со словом умбиликус как?

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

с умбиликуса сразу идет редирект на Пуп 3-го уровня

а оттуда например золотое сечение -> немецкий язык

показать ответы
0
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Ну что, ловите )

https://github.com/nfrey/HitlerIndex

база тут: https://www.dropbox.com/s/pziq68i4ifs6wa0/LastBackup?dl=0


Постаралась написать комменты, но говнокодом это быть не перестаёт. Еще есть файл SQLQueries, там те, что я регулярно использовала.

будут вопросы - welcome.

показать ответы
3
Автор поста оценил этот комментарий

мы для наших целей не мучаем википедию, качаем дамп с одного из зеркал на HDFS, дальше Apache Spark'ом разгребаем как надо данные и пихаем в ElasticSearch. занимает часа 3-4)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

норм вариант. А у вас какие цели? )

показать ответы
0
Автор поста оценил этот комментарий

здравствуйте, приходите к нам работать! соленые огурцы, ряженка, дождь 24/7 - как бонусный пакет.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

А вы знаете, как заинтересовать ;)

0
Автор поста оценил этот комментарий

Интересно, а если взять за точку поиска Сталина, например, правила сработают? И тут же отвечу, в 7 шагах - 146%, через того же Гитлера.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Думаю, что будет похожая ситуация. Даже скорее всего больше будет 2-3 уровня, потому что у Сталина больше обратных линков

0
Автор поста оценил этот комментарий
Вот да, хороший вопрос. Я так понимаю, переходить можно только по ссылкам категорий, которые внизу статей? Или по ссылкам из самих статей тоже?
раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Только по ссылкам из текста статьи, по служебным нельзя. А начинать с любой, хоть со случайной

показать ответы
0
Автор поста оценил этот комментарий

Наверное я не до конца понимаю :)


А перебор самих статей был обычным перебором, типа по id или вроде того?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Да, по id. Просто вытащить базовую информацию по id существенно быстрее (хотя и то заняло 5 дней), а потом уже можно фильтровать и думать, что делать дальше

показать ответы
0
Автор поста оценил этот комментарий

С третьим уровнем начались проблемы: по скромным подсчетам для перебора статей третьего уровня мне бы потребовалось около 40 дней, а ждать так долго совершенно не хотелось.
Разве не нужно искать только статьи с ссылками на статьи 2го уровня? Тогда время поиска не должно увеличиться.

К тому же мне хотелось в том числе найти статьи, с которых нет ссылок на Гитлера, так что нужен был какой-то финт ушами.
И, соответственно, перебирать только статьи, которые не были выбраны на 1 и 2 переборе. Тогда время перебора будет только меньше.

Может быть я что-то неправильно понял?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Когда ищешь второй уровень, нужно сделать ~2300 запросов к апи, чтобы найти ссылки второго уровня. А когда третьего - нужно уже 500.000 запросов к апи, которые довольно медленные, из-за этого долго. Плюс если искать все обратными ссылками, то никогда не найдёшь статьи, на которых нет обратных ссылок с уже существующих

показать ответы
0
Автор поста оценил этот комментарий

что то вы перепутали в 3 статьях без гтлера

1.
"Центр художественного перевода и литературных связей Азербайджана,"

литературных -> это культура и искусство -> рисование тоже искуство -> гитлер был художником!

2.
"Всемирный день кастрации животных. "
издевальтельство на животными -> жестокость -> холокост -> гитлЯр

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну вы это википедии скажите, может быть они добавят ссылки ;)

0
Автор поста оценил этот комментарий
У меня от "горизонта" до Гитлера 4 перехода получилось.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

можно за 3: вселенная -> философия -> гитлер

(там не один вариант)

показать ответы
0
Автор поста оценил этот комментарий
С англиской странице про " Всемирный день кастрации животных" можно дойти до гитлера.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

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

7
Автор поста оценил этот комментарий

авторше наконец надоело мыть посуду?

Игра с женой.

Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

4 года я бы ждать не осилила :)

1
Автор поста оценил этот комментарий

《Александр Усик — Майрис Бриедис》 -> 《Берлин》 -> 《Гитлер》. Это 2 шага?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

3

0
Автор поста оценил этот комментарий
В таком случае, будет отлично, если поделитесь базой данных
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
0
Автор поста оценил этот комментарий
А как у Вас это работает? Написали приложение на форме или wpf?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Приложение (command line) у меня исключительно для сбора базы, а дальше я просто запросы к базе писала, в том числе и для поиска путей. Но в принципе можно написать простенькое и для отображения путей

показать ответы
0
Автор поста оценил этот комментарий
Хочется опровергнуть. Скиньте плз штук 10-20 статей где необходимо больше 3х переходов, на досуге порешаю как перейти за 3)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вот например
Давайте только в тексте самой статьи, а не по служебным ссылкам, ну и по русской вики.


На самом деле, я тут сама себя, походу, опровергла..  у меня как-то неправильно редиректы учитываются, буду копать дальше

Иллюстрация к комментарию
0
Автор поста оценил этот комментарий

Офигеть! Исследование, которое мы заслужили )) Есть одно "Но":


Центр художественного перевода и литературных связей Азербайджана \ удаление страниц \ Викисловарь \ Русская Википедия \ Немецкая Википедия \ Германия \ Гитлер.

Шесть шагов.  :)

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я проверяю только ссылки в тексте статьи, служебные не считаю, мне кажется, что так интереснее ) но технически вы конечно правы

0
Автор поста оценил этот комментарий

А можно хоть как-то, хоть где-то поделиться кодом? Говнокод-не говнокод, плевать, очень хочу поэкспериментировать и посмотреть связность других статей со всей Вики. Ну ооочень интересно, позязя :с

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Окей, выложу, кину ссылку )

показать ответы
Автор поста оценил этот комментарий
Мужика тебе надо
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Что ж это за мужик такой, что сможет отбить желание маяться дурью? :)

показать ответы
0
Автор поста оценил этот комментарий
Вы провели большую работу, а я это выяснил проще - на Гитлера можно перейти кликнув по дате, которая есть на 99 процентах страница статей, затем на 1942 год, а далее уже и Гитлер. 3 перехода. Готов спорить 1078352 статьи именно таким образом ваш искуственный интеллект и обработал.
И нникаких апи и програмирования не надо, достаточно быть внимательным))
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

1. Этим и отличается предположение от исследования :)

2. В основном ссылки на даты не находятся в самом тексте статьи

3. Так что вовсе нет, в основном статьи связаны не через даты

показать ответы
0
Автор поста оценил этот комментарий

Немного читерско, но все же:


Раздражающий Контактный дерматит-не написан-заготовка статьи-значимость-нейтральная точка зрения -гитлер


Наверное, можно и короче, но мне лень

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я только текст статьи смотрю

0
Автор поста оценил этот комментарий

У меня не получилось со слизи попасть даже на хлорид натрия((

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Там есть ссылка на соль, которая хлорид натрия

0
Автор поста оценил этот комментарий

Статья прям уровня хабра. Серьезно.


К стати, а не быстрее было бы поднять локальную копию вики, чем бомбить запросами все статьи?  Вроде бы там есть такая возможность.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

Автор поста оценил этот комментарий
В этом исследовании упущена одна деталь. Ты можешь не угадать, какая из статей идет по правильному пути к Гитлеру.

Я бы рекомендовала проверить общее количество ссылок на странице и вероятность выбрать верную. Таким образом, рассчитать вероятность выигрыша в эту игру "на рандоме". Далее доказать ещё одну гипотезу: если ты знаешь наизусть 2309 статей для прямого перехода, насколько возрастают твои шансы.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Мне кажется, что неверно считать переход рандомным, играющий же не наугад кликает по ссылке, а руководствуется какой-то логикой

0
Автор поста оценил этот комментарий

Автор, скачай дамп Вики, не мучай сервера:

https://dumps.wikimedia.org/

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

DELETED
Автор поста оценил этот комментарий

1) https://ru.wikipedia.org/wiki/%D0%92%D1%81%D0%B5%D0%BC%D0%B8...
2) https://en.wikipedia.org/wiki/World_Spay_Day
3) https://en.wikipedia.org/wiki/Halifax,_Nova_Scotia

4) https://en.wikipedia.org/wiki/HMCS_Sackville_(K181)

5) https://en.wikipedia.org/wiki/German_submarine_U-43_(1939)

6) https://en.wikipedia.org/wiki/World_War_II

Хоспаде, вот чем я страдаю?

P.S. Вообще, можно было (?) выкачать API как граф и просто проверить глубину от узла со страницей Гитлера, нет?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вопрос времени, долго слишко получалось

показать ответы
1
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

о, вот теперь поняла, спасибо

0
Toxic
Автор поста оценил этот комментарий

Это факт. Как и то, что, к сожалению, не все не живущие в России, забывают делать соответствующую ремарку в своих творениях, публикуя их, на российском (по-умолчанию) ресурсе.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Почему я должна делать эту ремарку, если пост не имеет никакого отношения к месту проживания?

показать ответы
1
Toxic
Автор поста оценил этот комментарий

"Рождественские каникулы"? Пост от декабря? Это какой-то перевод что-ли? Тогда где ссылка на источник?..

раскрыть ветку (1)
Автор поста оценил этот комментарий

Не все живут в России

показать ответы
0
Автор поста оценил этот комментарий

Прошу прощения за оффтоп: А как давно зимние каникулы стали называться рождественскими?

раскрыть ветку (1)
Автор поста оценил этот комментарий

В Дании довольно давно )

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества