Здесь без прикрас: откуда данные, что делают скрипты и по каким формулам считаются метрики. Весь код открыт на GitHub.
Источник — публичный дамп базы вопросов ЧГК с gotquestions.online (наследник db.chgk.info). Один JSON на турнир/пакет, внутри — туры и вопросы:
pack
├─ tours[]
│ └─ questions[]
│ ├─ text // текст вопроса
│ ├─ comment // авторский комментарий
│ ├─ answer / source / zachet ...
│ └─ authors[] { id, name, gender } // id == профиль gotquestions.online/person/<id>
Ключевой факт: id автора в дампе совпадает с id его профиля на сайте, поэтому
каждое имя на страницах кликабельно.
Два прохода по всем пакетам: сперва считаем объём корпуса на автора и отбираем тех, у кого ≥ 10 000 слов (357 авторов). Затем собираем их слова в хронологии и считаем главную метрику — число уникальных лемм в первых 25 000 словах (окно как у Иноземцева). У кого корпус меньше 25k — «бледный» ряд (148 надёжных из 357).
Тяжёлая часть, один проход + кэш. Считает фирменные слова (weighted log-odds), родственных авторов
(tf-idf + косинус), граф соавторства, слово/имя/место года и штампы. Промежуточные счётчики кэшируются
в _raw.pkl, так что перебор фильтров занимает секунды, а не минуты (пересчёт: --fresh).
Вшивает JSON прямо в HTML: каждая страница самодостаточна (данные внутри файла, ничего не грузится с бэкенда). Общие тема, навигация и переключатель светлая/тёмная.
Не «самые частые» (у всех выйдет «который») и не «только у него» (это опечатки). Сравниваем частоту слова у автора и во всём остальном корпусе, со сглаживающим приором Дирихле (Monroe, Colaresi & Quinn, 2008). Итог — z-оценка «насколько надёжно слово отличает автора»:
δ = log( (yi+αw) / (ni−yi+…) ) − log( то же для «всех остальных» ) ; z = δ / √(вариация)
Слова делим на темы (имена, фамилии, города, организации — по морфо-тегам pymorphy Surn/Name/Geox/Orgn) и стиль (нарицательная лексика). Подробнее — на странице Как считаем.
similarity.py.phrases.py) —
характерные для автора словосочетания, а не общие штампы ЧГК.Данные и профили авторов: база вопросов ЧГК gotquestions.online. Метод «фирменных слов» — weighted log-odds (см. Как считаем). Дизайн — тема Pac-Man.