Превращение Википедии в точную викторину по культурным знаниям

Создайте «Test Your Culture», взяв самую большую в мире энциклопедию… и объединив ее с наукой о данных

📊 Чтобы пройти тест, посетите Проверьте свою культуру.

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

Недавно я хотел посмотреть, можно ли измерить чьи-то культурные знания. В конце концов, у нас уже есть тесты IQ, которые (возможно) измеряют интеллект, наряду со стандартными тестами, такими как SAT, которые измеряют академические знания в определенных областях. Но как насчет общих культурных знаний - таких вещей, как фильмы, книги и музыка? Политики, знаменитости и исторические личности? И меня не интересовали викторины - я хотел знать, можно ли создать что-то, что измеряет ваши действительные культурные знания с научной точки зрения.

Насколько мне известно, никто никогда не пытался провести точную и широкомасштабную проверку «всех» культурных знаний. Но если бы вы могли создать такой тест, вы бы ответили на всевозможные интересные вопросы: насколько культурные знания различаются между людьми? С какой скоростью он растет и как это меняется с возрастом? А какие еще шаблоны вы могли бы найти? Плюс просто было бы весело взять. Было бы возможно?

К счастью, у меня был некоторый опыт в подобных вещах. Восемь лет назад я хотел узнать, как размер словарного запаса английского языка различается среди людей, и создал Test Your Vocab. Это пятиминутный тест, который дает пользователям случайно выбранный список из 160 слов, которые они отмечают независимо от того, знают они или нет, а взамен сообщают о размере их словарного запаса. Он математически точен, и после того, как его сделали пару миллионов раз, мне посчастливилось иметь достаточно данных, чтобы превратить их в собрание результатов исследований. (Например, обнаружив, что средний взрослый тестируемый заучивает почти 1 новое слово в день до среднего возраста).

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

Измерение словарного запаса было относительно простым делом, поскольку уже есть авторитетный список слов для выборки: словарь. Но как вы могли определить такое аморфное понятие как культура? От чего я мог измерить? Я понял, что ответ смотрит мне прямо в лицо, в виде веб-сайта, которым я пользуюсь почти каждый день: Википедия. В отличие от печатных энциклопедий, он содержит записи не только по известным темам и людям, но также и по фильмам, книгам, музыкальным альбомам и многому другому… всего более 5 000 000 записей (по сравнению с 40 000 в печатной версии 2013 года Encyclopædia Britannica ). Настоящий рог изобилия!

Могу ли я превратить Википедию в точный с научной точки зрения тест на знание культуры? И сделать это тоже познавательным? Ответ был положительным ... но это оказалось бы более сложной задачей, чем создание Test Your Vocab. Трудности заключаются не только в том, чтобы выяснить, как импортировать и обрабатывать все данные, но и в определении правильных математических методов для них, а также в том, чтобы сделать их интуитивно понятными, понятными и интересными в использовании.

Получение культурных ценностей из Википедии

Скачайте и импортируйте Википедию

Первым шагом было загрузить Википедию, что так же просто, как перейти на dumps.wikipedia.org и загрузить enwiki-latest-pages-article.xml.bz2. Он не маленький - более 15 ГБ в сжатом виде и более 60 ГБ без сжатия. Но им легко пользоваться: один XML-файл с текущим текстом всех статей Википедии. Который, когда бы я ни останавливался, чтобы подумать об этом, никогда не мог не поразить меня: вот я и нес самую большую и самую полную в мире коллекцию общечеловеческих знаний, более трех миллиардов слова… на моем ноутбуке, со мной в кофейню. Технологии прошли долгий путь с тех пор, как я вырос, когда учился программировать на компьютере с 64 КБ памяти.

Импортировать его в базу данных тоже было достаточно просто. Я не стал беспокоиться о библиотеках синтаксического анализа XML, так как беспокоился о том, как они будут обрабатывать десятки гигабайт. Я даже не стал беспокоиться о том, чтобы сначала распаковать файл. Вместо этого я написал сценарий, чтобы открыть сжатый файл напрямую, пропустить его через bunzip2, чтобы распаковать на лету, использовал простую обработку строк для извлечения уникального идентификатора, заголовка и полного «Викитекста» каждой статьи, а затем записывал каждую статью в базу данных как строку. На самом деле мне даже не пришлось сначала скачивать файл отдельно: я мог передать его прямо с сервера Википедии. (Магия ручьев!)

Категории статей

Я не хотел импортировать всю Википедию - мне нужны были только статьи, посвященные определенной культуре. Мне не нужны такие темы, как «Физика», мне не нужны такие вещи, как «Список X…», и, конечно же, мне не нужны страницы значений неоднозначности, страницы обсуждений, страницы пользователей и так далее. Вместо этого у меня был конкретный список типов статей, которые я хотел: люди, музыкальные исполнители (потому что они могут быть группами людей) и творческие произведения (например, книги, фильмы, музыка и т. на).

Моей первой мыслью было использовать категории, перечисленные в конце каждой статьи Википедии. В конце концов, они охватывали все типы предметов, которые я искал, и, казалось, следовали иерархии. Например, «Альберт Эйнштейн» принадлежит более чем к 80 категориям, но это все категории людей:

Один из них - «физики ХХ века». Это относится к категории «Физики по столетиям», которая относится к «Ученым по столетиям» и так далее через «Люди по роду занятий и веку», «Люди по столетиям», «Люди по времени» и, наконец… «Люди. ” Бинго! Похоже, это работает и для творческих работ - например, Моби Дик принадлежал к «Американским романам 1851 года», которые, после ряда прыжков, в конечном итоге перешли в «Книги»:

Все, что мне нужно было сделать, это определить все подкатегории под определенными категориями верхнего уровня, такими как «Люди» и «Книги», и у меня есть культурные ценности, которые я хотел. Я с энтузиазмом добавил в свой сценарий код для записи в свою базу данных категорий, к которым принадлежала каждая статья (которые включали категории, к которым принадлежала каждая «статья категории», так что у меня было полное дерево). Затем, чтобы проверить результаты, я написал запрос, чтобы запустить иерархию в обратном порядке и найти все статьи, относящиеся к подкатегориям «Люди» на определенное количество уровней в глубину. Я нажимаю «выполнить» и ...

…это была катастрофа. Появлялись всевозможные статьи! Например, в нем была указана компания Apple, которая определенно не была человеком. Покопавшись, выяснилось, что Apple принадлежала к категории Стив Джобс, которая в конечном итоге принадлежала… людям, конечно. Оказалось, что категории в Википедии вовсе не строго иерархичны, но используются для стольких связанных вещей, что делают их бесполезными для определения того, что представляет собой статья. Спущенный, я подумал, есть ли другой способ?

Инфобоксы

Я вспомнил, что в правом верхнем углу многих статей в Википедии есть информационное поле, обычно с фотографией… как оказалось, информационное окно на языке Википедии. И, глядя на Wikitext каждой статьи, кажется, что каждое информационное окно также принадлежит к четко определенной категории. У Стива Джобса был информационный ящик человека, у Apple - информационный ящик компании, а у Моби-Дика был информационный ящик книга. Многообещающе… сколько инфобоксов было там? Более 1500, - обнаружил я. Это могло сработать?

Я вручную составил список из пары сотен инфобоксов, относящихся к людям («человек», «биография НФЛ», «христианский лидер» и т. Д.), И нашел пару десятков инфобоксов для творческих работ, которые я хотел («фильм» , «Книга», «альбом» и др.). Я написал еще одну простую обработку строк, чтобы найти информационное окно (если оно есть) в Wikitext каждой статьи и извлечь его имя, сопоставить его с моим ручным списком желаемых категорий, а затем сохранить в моей базе данных.

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

  • 1500000 человек, как настоящих, так и исторических (включая группы, такие как музыкальные исполнители)
  • 200 000 альбомов и песен, 120 000 фильмов, 40 000 телешоу и 20 000 видеоигр.
  • 40 000 книг и рассказов, 9 000 комиксов, аниме и манги, а также 5 000 пьес, мюзиклов и опер
  • 6000 произведений искусства (например, картины и скульптуры) и 1500 композиций (например, симфонии)

Итак, у меня была база данных о культурных ценностях, но это было только начало.

Определение популярности предмета

Теперь, когда у меня была база данных, содержащая почти два миллиона культурных ценностей, мне понадобился способ определить их относительный уровень популярности. В конце концов, я не мог просто случайным образом выбрать элементы викторины из всех двух миллионов, так как это привело бы к викторине, где обычно никто не знает ни одного из элементов. Один из ключей к успеху Test Your Vocab заключался в том, чтобы сделать викторину адаптивной - показывать более простые слова людям с меньшим словарным запасом и более сложные слова людям с большим словарным запасом. Как я могу определить уровень сложности статьи в Википедии?

Импортировать просмотры страниц из Википедии

К счастью, помимо текста статей, Википедия делает общедоступным и другой фрагмент данных: количество просмотров статьи. Википедия предоставляет необработанные данные о просмотрах страниц в отдельных загружаемых файлах для каждого часа трафика истории Википедии (2007–2016, а затем 2015 и последующие годы). Но поскольку размер каждого (сжатого) файла составляет около 50–100 МБ, полный анализ даже за целый год потребует загрузки примерно 600 ГБ и почти 9000 файлов. Ой! К счастью, дальнейшие исследования показали, что начиная с 2011 года Википедия преобразовывала их в ежемесячные файлы - уф. Поэтому я написал второй сценарий для загрузки файлов просмотров страниц за несколько месяцев и импорта строк в новую таблицу базы данных.

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

(Есть небольшая деталь: перенаправление сейчас не обязательно совпадает с перенаправлением в прошлом, и статьи могут быть переименованы, так что исторический трафик может оказаться отправленным не в то время. article, или быть полностью утерянным, например, когда статья превращается в страницу с разрешением неоднозначности. Но это относительно редкое явление, и мне просто придется смириться с этим сейчас.)

Повышение качества просмотров страниц

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

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

Но по-прежнему оставалось несколько необычных предметов с неожиданно высокими оценками. Изучив данные, я увидел, что у некоторых статей неожиданно резко возрастет трафик в течение месяца или двух, а затем он снова стабилизируется (иногда явно из-за новостного события, а иногда без очевидного объяснения). Итак, чтобы удалить выбросы, для каждой статьи я игнорировал 5% месяцев с наибольшим трафиком.

В сочетании с этими стратегиями список казался интуитивно верным, и я был на своем пути. В топ-5 пунктов вошли:

  1. Дональд Трамп
  2. Игра престолов
  3. Елизавета II
  4. Барак Обама
  5. Криштиану Роналду

Но уже из этого списка я начал сомневаться, какую культуру я бы измерял. Американец? Британский? Или даже международный, когда речь идет о футболе (футболе)?

Проверьте, чья культура?

Я основывал свою меру культурной популярности на просмотрах англоязычных страниц в Википедии. Когда я посмотрел трафик по странам, большинство было американцами. Но по-прежнему был значительный трафик из Великобритании и Индии, что объясняет присутствие немного большего количества британских королевских особ и звезд Болливуда, чем американцы привыкли, а также футболистов и бойцов смешанных единоборств.

Культура не является чем-то универсальным: есть американская культура и британская культура, французская культура и китайская культура, и даже совершенно другая культура для семилетнего ребенка (детские авторы, песни и телешоу) по сравнению со взрослым. В идеале вы должны создавать отдельные тесты для всех из них. Но, к сожалению, Википедия не предоставляет статистику просмотров страниц по странам, только по языкам. (И, конечно, не по возрастным группам.) Итак, в настоящее время я понял, что у меня нет другого выбора, кроме как сделать викторину «взрослой англоговорящей культурой», как определено пропорциями посетителей Википедии из каждой страны. (Но если Википедия когда-нибудь разделит просмотры страниц по странам, первое, что я хотел бы сделать, это создать отдельные викторины для США, Великобритании, Индии и так далее.)

Измерение знаний

Теперь, когда у меня есть список, как я могу рассчитать на его основе чьи-то знания всего за 5 минут викторины? Я не просто хотел, чтобы это было весело - я хотел, чтобы это была точная с научной точки зрения мера чьих-либо знаний, что-то, на основе чего я и другие могли бы провести статистически достоверные исследования.

Соревнование

У меня уже был опыт выполнения чего-то подобного с помощью Test Your Vocab. Словарный запас людей следовал общей схеме: они знали все слова до определенного уровня сложности, затем был переходный период, когда знания уменьшались, а затем они снижались до уровня практически нулевого знания. (А затем словарь заканчивается.) Я создал викторину Test Your Vocab, состоящую из двух этапов: начального этапа, на котором проверялось 40 слов от очень простых до чрезвычайно сложных, чтобы приблизительно найти « зона перехода », и второй этап адаптации, показывающий 120 слов, взятых из этой зоны перехода. Сосредоточив внимание главным образом на уникальной зоне перехода каждого человека и предполагая, что они знают все слова до нее и ни одного слова после нее, я мог бы сложить все слова перед зоной вместе с пропорцию слов, которые они знали в зоне, игнорируйте все, что идет после нее, и, наконец, произведите довольно точную словарную меру. Фактическая математика была немного сложнее, так как я выбирал сложность слов логарифмически, а не линейно, но в конце дня он все еще просто складывал числа, где каждый флажок заменял ряд известных слов:

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

Во-первых, даже из первых 100 пунктов я уже не знал целой четверти. Поскольку культура настолько обширна, нет какой-либо начальной зоны "знания всего", на которую я мог бы положиться, чтобы объяснить основную часть чьих-либо знаний. (Кто-то может быть осведомлен о подростковой музыке, но совершенно не осведомлен о политиках, или наоборот.)

Во-вторых, не было не только зоны «все знать», но и зоны «ничего не знать». После первых 10 000 элементов я все еще знал примерно 10% элементов. После 100 000 пунктов я знал около 1%. И даже после миллиона элементов я мог выбрать что-то вроде 1 из 1000. Итак, в отличие от лексики, культурные знания распределялись примерно так:

И это привело к третьей проблеме: поскольку знания людей невелики, но простираются далеко, если я произвольно выберу 100 элементов даже из 50 000 лучших, кто-то может знать только 5 из них! Тест не был бы забавным или особенно точным. Придется придумать что-нибудь умнее.

Моделирование данных

Решение должно было бы основываться на том факте, что культурные знания каждого человека должны следовать определенной «кривой», разрушаясь по определенной формуле по мере того, как предметы становятся более сложными. Если бы я мог найти форму этой кривой, то я мог бы вычислить общие знания человека. Я мог определить форму, задав ряд вопросов, от простых до сложных, а затем экстраполировать остальные. Итак, сначала мне нужно было выяснить, как выглядит кривая.

Я провел большую выборку из первых 100 000 элементов в моем списке вместе с друзьями, отмечая элементы, которые мы знали, чтобы сгенерировать данные, на основе которых я мог бы моделировать. Затем для каждого из нас я попытался сопоставить уровни знаний (усредненные по диапазонам) с просмотрами страниц, ожидая, что знания могут быть пропорциональны популярности элемента. К сожалению, я не смог найти ни одной формулы, которая бы подходила повсеместно для легких, средних и сложных задач. Я пробовал корректировки, чтобы смоделировать идею о том, что кому-то может потребоваться определенное количество «воздействий» на предмет, прежде чем он узнает об этом, но это тоже не помогло.

Наконец я подумал, не слишком ли я усложняю. Раньше я замечал, что мои знания, казалось, падали на 90% каждый раз, когда рейтинг элемента повышался на порядок, независимо от фактических просмотров страниц. Я также вспомнил закон Ципфа, который моделировал пропорцию слов в текстах просто в соответствии с их рангом частоты. Поэтому я попытался игнорировать просмотры страниц и сопоставить уровни знаний только с рейтингом элемента и нашел точную формулу, основанную на простом логарифме - оказалось, что знания каждого человека можно представить всего двумя параметрами. Во-первых, это была широта - какую долю они знают даже среди самых простых вещей? (Культурный мастер на все руки будет иметь большую широту, а специалист будет иметь меньшую широту.) И во-вторых, знания глубина - по мере того, как предметы становятся более сложными, насколько быстро их знания отпадают? С помощью этих двух параметров я мог бы описать форму любой кривой знаний - широкую, но неглубокую, узкую, но глубокую, или любую комбинацию. И поскольку они точно предсказали вероятность знания любого предмета культуры, пока я мог оценить два параметра, я мог просто суммировать вероятности моих почти 2 000 000 предметов, чтобы получить чьи-то общие оценочные знания… верно ?

Выбор отсечки

Это было бы не так просто из-за того, как работают длинные хвосты. Например, предположим, что Amazon продает 1 000 000 книг. Можно предположить, что на 50 000 лучших будет приходиться 99% продаж, поскольку остальные продаются нечасто. Но поскольку остальных так много, оставшиеся 950 000 книг могут по-прежнему составлять полные 50% продаж. (Эти точные цифры выдуманы, но это одно из многих преимуществ Amazon перед обычными магазинами.)

То же самое происходило и с моими собственными знаниями - я мог знать 3000 предметов из рангов 1–10 000. Но потом я знал еще 3 000 предметов из рангов 10 001–100 000 и еще 3 000 предметов из рангов 100 001-1 000 000… и тогда я знал много другие вещи, которых вообще не было даже в Википедии. Когда я подсчитал свои знания о первом миллионе элементов на основе параметров ширины и глубины, глубина полностью доминировала, и не только это, но конечный результат был чрезвычайно чувствителен к малейшим изменениям параметра глубины… далеко тоже чувствительнее всего, что можно было бы измерить в пятиминутной викторине.

Так что в конце концов я не смог бы измерить «общие» культурные знания - мне пришлось бы выбирать порог, поэтому я экспериментировал. При измерении только первой тысячи наименований выяснилось, что широта гораздо важнее, чем глубина. С другой стороны, из 100 000 пунктов глубина оказалась гораздо важнее широты. Но, если я оценил из 10 000 лучших пунктов, они оказались примерно одинаково важными. Таким образом, ограничиваясь до 10 000 основных предметов культуры, викторина будет вознаграждать людей широтой или (или обоими!), Будет включать предметы от простого до сложного и даст значимо точное число. в конце.

Идея была разумной. Как я могу определить чью-то широту и глубину?

Оценка параметров

Многие люди знакомы с линейной регрессией, когда вы помещаете в Excel набор двумерных данных (например, цены с течением времени) и просите его подогнать под них линию:

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

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

Чтобы выполнить биномиальную регрессию, мне понадобится метод, который называется оценка максимального правдоподобия или MLE. (Оказывается, подход наименьших квадратов, обычно используемый в линейной регрессии, математически эквивалентен MLE в этом конкретном случае.) MLE работает так: предположим, у меня есть 100 заданий, отобранных из разных уровней сложности, и человек отмечает каждый один известный или неизвестный. Для любой заданной ширины и глубины каждый элемент имеет определенную вероятность быть известным или нет. Мы сравниваем эти вероятности с фактическими отмеченными значениями известных / неизвестных и можем вычислить вероятность того, что человек имеет это значение. Мы пробуем множество пар ширины и глубины, и пара с наибольшей вероятностью в конечном итоге - это пара, которая, как мы предполагаем, описывает фактические знания человека.

Конечно, для этого нужно попробовать много пар. Один из способов определить наиболее вероятную пару - это перебрать ее - вычислить вероятность, скажем, 1000 различных значений ширины и 1000 различных глубин для всего 1000000 комбинаций. Но это займет слишком много времени и потребует слишком много ресурсов процессора ... Оказывается, лучший и быстрый способ - использовать восхождение на холм. Для любых ответов пользователя мы начинаем со средней пары значений ширины и глубины (точная отправная точка не имеет значения). Затем мы сравниваем его с четырьмя новыми парами, добавляя или вычитая заданную величину ширины или глубины для каждой из них. Если какая-либо из этих пар параметров делает данные более вероятными, чем наша исходная пара, мы перемещаемся туда. В противном случае мы остаемся на том же месте, но вдвое сокращаем наши расстояния. А потом повторяем:

Всего после 20 или 30 раз мы можем вычислить чью-то широту и глубину со всей необходимой нам точностью. И, наконец, собрав все вместе, мы превращаем выборочные входные данные в общую оценку знаний:

Максимальная точность

Теперь я знал, как рассчитать чью-то широту и глубину, а, следовательно, и знания, по их ответам в викторине… но как я мог максимизировать точность? Равномерная выборка из 10 000 лучших элементов может быть очень точной для некоторых людей, но для человека с меньшими знаниями было бы гораздо точнее сосредоточиться только на более простых элементах, которые они, скорее всего, знают, в то время как для кого-то с обширными знаниями это было бы намного сложнее. больше смысла уделять больше внимания более сложным предметам. Но я не узнал бы их знаний, пока не измерил их!

Поэтому я применил технику под названием активное обучение. (Название которого может вводить в заблуждение в образовательном контексте, поскольку обучается компьютер, а не пользователь!) Активное обучение означает разбиение тестирования на несколько этапов, где дополнительные этапы используют оценки из предыдущих этапов, чтобы определить, какие из них items предоставят больше всего информации на следующих этапах.

Я разбил викторину на четыре этапа. Первый - самый короткий (25 пунктов), охватывает задания от очень простого до очень сложного, логарифмически распределенный по рангу. Затем я выполняю MLE, чтобы определить наиболее вероятную ширину и глубину. Несмотря на то, что это будет довольно неточно, этого достаточно для создания второго шага (30 элементов), от простого до сложного для этого конкретного человека. Я повторяю процесс для третьего шага (снова 30 элементов), чтобы действительно получить правильный диапазон, и, наконец, показываю четвертый шаг (60 элементов), которые почти наверняка находятся в нужном диапазоне, и предоставляю возможность для оценки параметров из наиболее математически значимых элементов.

После всего этого я использую MLE для всех 145 заданий, чтобы вычислить общие знания человека из 10 000 лучших, и это работает! Он обеспечивает точные результаты независимо от того, знают ли они 50, 500 или 5000 элементов, и независимо от того, являются ли их знания обширными или глубокими, или и тем, и другим, или ни одним из них. Всего из 145 пунктов викторины, и все потому, что мы знаем, какую форму должна иметь кривая. Сила математики ...

Последние штрихи

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

Что значит «знать» что-то?

Ответить, знаете ли вы, может оказаться на удивление сложно. Часто я сталкивался с именем знаменитости и понимал, что имел расплывчатое представление… например, я знал, что они актеры, но не мог вспомнить, в чем. Или я смотрел фильм и знал, что он входит в серию сиквелов, но не в каком именно. Следует ли это учитывать? Сколько вам нужно знать, чтобы что-то «знать»? Считается ли один факт? Три факта? Что вообще такое «факт»?

После долгих размышлений я смог придумать только одно работоспособное решение. Я решил, что для целей викторины вы «знаете» элемент, если можете однозначно определить его - любым способом, который отличает его от всех других элементов. Так что, если бы я знал, что Райан Рейнольдс был актером, но ничего не знал о нем, этого было бы недостаточно, потому что это не делало его уникальным - актеров много. Но если бы я мог сказать, что он был главным актером в Дэдпуле, то это делало его уникальным. Я боролся с тем, стоит ли считать кого-то в лицо, и люди, с которыми я разговаривал, имели противоречивые мнения, но, поскольку чье-то лицо делает их однозначно узнаваемыми, я чувствовал, что это тоже нужно учитывать.

Дополнительная информация об элементе (и NSFW)

При прохождении викторины возникла еще одна проблема - простой просмотр названий предметов часто приводил людей к их путанице. Заголовки Википедии гарантированно уникальны, и для различения элементов с одинаковыми именами используются скобки. Но в скобках часто не используются самые распространенные. Поэтому, когда вы видите «Энн Хэтэуэй» (269 место), у вас нет возможности узнать, актриса это или жена Шекспира. (Оказывается, это актриса - жену Шекспира зовут Энн Хэтэуэй (жена Шекспира), ранг № 9118). И даже за пределами идентичных совпадений люди легко путают похожие названия вещей, поэтому наличие дополнительной идентифицирующей информации о каждом элементе не просто полезно, но необходимо. И вы хотите предоставить дополнительную информацию, когда это необходимо, но не перегружать. После долгих экспериментов я применил разносторонний подход, который в итоге выглядел так:

Различные части включали:

  1. Иконки и категории для творческих работ. Это был самый простой вариант: если в информационном окне написано, что это книга, поместите слово «книга» под названием и покажите значок книги рядом с ним. (Таким образом, мы знаем, что это не экранизация фильма или видеоигра.)
  2. Профессия и икона для людей. Под одним Стивом Маккуином (американским) мы хотим актера, а под другим (британским) - кинорежиссером. К сожалению, Википедия не предоставляет надежного способа извлечения коротких и интуитивно правильных описаний людей из 1-2 слов (которые могут стать предметом отдельной статьи). Лучшее решение, которое я нашел, - это создать белый список из сотен общих профессий и предположить, что применимо первое, найденное в первом предложении статьи. Потребовалось немало настроек и немного ручной настройки, чтобы все получилось, но в конечном итоге оказалось на удивление надежным.
  3. Страна и год для творческих работ. Фильмов и книг с одинаковыми (или похожими названиями) так много, что здесь также потребовалось дополнительное устранение неоднозначности. К счастью, страну и год можно относительно легко извлечь из полей информационного окна, поэтому пользователь может различать Твин Пикс (США, 1990–1991) и Твин Пикс (США, 2017), или между Oldboy (Южная Корея, 2003) и Oldboy (США, 2013).
  4. Вставка. Но иногда всего этого все еще недостаточно («Она та актриса, о которой я думаю?»), поэтому я хотел, чтобы первые пару предложений статьи всплыли рядом с товаром, когда кому-то нужно дополнительное подтверждение. Это потребовало написания кода, чтобы убрать такое форматирование Wikitext, как полужирный шрифт, курсив, ссылки, цитаты и многое другое, чтобы в конечном итоге получить только чистый текст. Тогда это все еще не было идеальным для пользователей, потому что рекламное объявление часто начиналось с длинного имени, заголовка, информации о произношении и так далее… Но если бы я просто взял текст, начинающийся после «есть / был / есть / были», за которым следует «A / an / the», это сработало отлично. Так просто!
  5. Изображения. Наконец, иногда проще всего узнать кого-то в лицо, и очень часто в информационном окне есть основное изображение. Итак, я взял и имя файла каждого изображения, но оказалось, что этого недостаточно, чтобы загрузить его. Вместо этого вам нужно сделать отдельный вызов MediaWiki API для каждого имени файла, чтобы получить URL-адрес конкретного сервера, на котором размещено изображение, а затем загрузить его. Но я кэширую уменьшенную версию изображения на моем сервере и показываю ее рядом с рекламным объявлением.

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

Была только одна последняя проблема: иногда всплывали предметы, которые определенно были NSFW, или просто заставляли вас чувствовать себя неприятно при чтении описания. Чтобы сделать викторину более подходящей для семейного просмотра, я отфильтровал все, что связано с развлечениями для взрослых (довольно много порнозвезд в топ-10 000), а также современных людей, известных в основном насильственными преступлениями (будь то преступники или жертвы). Есть просто ... некоторые вещи, о которых вы бы предпочли не читать во время обеда. Но я также не хотел обеливать историю, поэтому историческое и политически мотивированное насилие (например, терроризм) осталось.

Процентили

В конце концов, это нормально, если набрать 2000, 3000 или 5000 из 10 000 лучших ... но это число не имеет большого значения, если его нельзя сравнивать с другими. Поэтому я также хотел включить процентиль, например говоря, что вы знали более 20%, 50% или 75% населения:

Единственная проблема заключалась в том, что люди, которые проходят викторины по Интернету, значительно более осведомлены, чем население в целом. Например, когда я попросил испытуемых Test Your Vocab при желании предоставить свои устные результаты SAT и сравнил их с опубликованными распределениями результатов SAT, оказалось, что мой средний американский тестируемый находится примерно в 98-й процентиль результатов SAT - так что очень перекос.

Я хотел привести свои процентили к общему американскому населению, поэтому я добавил дополнительные вопросы для опроса о возрасте, поле и образовательном уровне, используя категории, соответствующие данным переписи населения США. Затем, чтобы вычислить процентили, я взвесил каждую комбинацию трех категорий в соответствии с фактическими данными о населении, что нормализует процентили. Например, не имеет значения, если среди 25–29-летних у меня будет в 10 раз больше участников со степенью бакалавра, чем со степенью средней школы. Данные переписи показывают, что оба сегмента примерно одинакового размера, поэтому путем нормализации я пропорционально занижал вес первого и перевешивал второй. Конечный результат не идеален - в нем не учитываются другие факторы, помимо трех, и результаты по-прежнему поступают только от людей, которые решили пройти тест на знание ради развлечения, у которого, вероятно, есть свои особенности. Но это все равно должно быть значительным улучшением по сравнению с процентилями без какой-либо нормализации.

Конечный результат

Я создал веб-сайт для проведения викторины и также сделал его адаптивным - мобильный трафик Test Your Vocab начал регулярно превышать трафик настольных компьютеров в декабре 2016 года, так что я твердо придерживался мобильных настроек. первый мир сейчас. Я собрал фотоколлаж, чтобы придать домашней странице некоторую индивидуальность, разместил его в облаке и в прошлом месяце (сентябрь 2018 г.) запустил Test Your Culture:

Его уже сделали тысячи людей, но для получения на его основе точных и подробных результатов исследования потребуются миллионы ответов - точно так же, как Test Your Vocab.

И аналогично серии сообщений в блоге, которые я написал для Test Your Vocab, я хочу ответить на такие вопросы, как:

  • Как культурные знания увеличиваются с возрастом? Люди все еще изучают «новую культуру» в 50 лет так же, как в 20 лет? Насколько сильно варьируется возрастная группа?
  • Каковы наиболее сильные закономерности в культурных знаниях, т.е. какие типы предметов наиболее взаимосвязаны? В какой степени они следуют за поколениями, группируются вокруг интересующих тем или связаны с образованием, географией или чем-то еще? (Удовольствие от анализа главных компонент!)
  • Какие дополнительные факторы наиболее сильно связаны с большим или меньшим знанием культуры? (Например, задав дополнительные вопросы в опросе о самооценке потребления телевидения, новостей, музыки и книг.)

И так же, как Test Your Vocab, я сделаю (анонимный) набор данных доступным для исследователей, которые хотят проводить собственный анализ.

Что дальше?

Было здорово узнать, как собрать воедино Test Your Culture, но в Википедии есть еще кое-что, что я еще не тестировал, например, места (страны, города, туристические места и т. Д.), Которые могут сделайте отличные будущие викторины! Если вы хотите получать уведомления о новых тестах и ​​результатах исследований, подписывайтесь на @testyourculture в Twitter.

А если вы еще не… 📊 возьмите Test Your Culture!

[Обсудить эту статью в Hacker News]