2219

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

Далеко не один раз на пикабу мне встречались посты про занимательную игру, где в википедии нужно было добраться до статьи про Гитлера максимум за 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 процент статей, не связанных с Гитлером никак, вас там встретят Центр художественного перевода и литературных связей Азербайджана, Раздражающий контакный дерматит и Всемирный день кастрации животных. Ну и так, по мелочи.


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


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

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

Чтобы перейти на Гитлера, достаточно перейти на статью о ЛЮБОЙ СТРАНЕ (обычно это можно сделать за 1-2 перехода, например, в большинстве статей в шапке указан язык оригинального термина, с языка на страну, например, Англию), в статье о стране будет раздел история, где отдельно будет выделена Вторая мировая война. Со второй мировой войны переходим на Сталина, внизу будет шаблон "Иосиф Сталин", там в раздел "Сексуальная жизнь Сталина", в третьем абзаце о его романе с Гитлером. Готово, 4 перехода.

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

Это было.. неожиданно.

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

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

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

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

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

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


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


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

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

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

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

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

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

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


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

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

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


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


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

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

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

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества