Проект Гутенберг — это проект с открытым исходным кодом, участники которого оцифровывают книги. На сегодняшний день уже оцифровано более 53 000 книг. В более раннем анализе я показал некоторые общие сведения о каталоге.

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

1.) Какие книги особенно сложны и почему это важно?

В 2016 году польские исследователи из Института ядерной физики обнаружили сложные фрактальные узоры в классической литературе. Фракталы — это сложные узоры, которые самоподобны в разных масштабах. Они создаются путем многократного повторения простого процесса в постоянном цикле обратной связи. Хорошими примерами являются биржевые графики, береговые линии или, как оказалось, книги.

Так почему же так важно, что книги можно описать с помощью математики? Что ж, это означает, что мы можем рассчитать баллы для каждой отдельной книги и, учитывая книгу, которая является фаворитом, использовать эти баллы сложности, чтобы предложить альтернативную книгу с таким же баллом сложности. .

В своем анализе я не зашел так далеко, как ученые, чтобы рассчитать мультифрактальные модели для книг в каталоге. Вместо этого я решил использовать более простой наклон Ципфа, который просто ранжирует все слова в тексте по количеству вхождений и вычисляет логарифмический наклон этого ранжирования. Например, в тексте: Мой отец — отец моего брата счет (и ранжирование) следующий: мой: 2 (1), отец: 2 (2), есть: 1 (3), брат: 1 (4). Чтобы проиллюстрировать это, вот наклон Ципфа из Приключений Алисы в стране чудес Льюиса Кэрролла.

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

Так является ли наклон -1,22 Приключения Алисы в стране чудес относительно более сложным или менее сложным показателем? Давайте сравним с двумя книгами, которые большинство классических читателей, вероятно, сочли бы более сложными: Фауст, часть 1 Иоганна Вольфганга фон Гёте (для этой книги я использовал оригинальный немецкий) и Улисс.

Как видим, наша интуиция была верна, наклон Ципфа у этой классики на все времена больше, чем у сказки Льюиса Кэрролла. Только на основании оценки сложности можно предположить, что ярому поклоннику «Фауста» следует скорее читать о встречах с Леопольдом Блумом, чем о приключениях Алисы.

2.) Какие тематические кластеры существуют и почему это важно?

Сначала я использовал методы уменьшения матрицы, как описано в Kosinski et al. (2016) и оставили только те книги, по которым было не менее 6 тем, и только те, которые связаны как минимум с 6 книгами (для уменьшения общего размера). В итоге у меня осталась 801 книга и 346 предметов с общим количеством связей 6044.

Я сгруппировал оставшиеся темы в 8 значимых кластеров на основе относительного расстояния между 346 темами. Тема связана через книги с одинаковыми темами. Если в одной книге есть темы «Каникулы — Художественная литература для детей», «Кошки — Художественная литература для детей» и «Рождество — Художественная литература для детей», то эти темы (узлы) соединяются через эту книгу (ребро). Чем больше книг имеют определенную комбинацию сюжетов, тем сильнее цвет соответствующего ребра между узлами.

Выше представлено подмножество набора данных, в центре которого находится детская художественная литература. Поскольку книг по детской литературе в каталоге довольно много (14 210 книг из всего каталога имеют по крайней мере одну тему, содержащую подстрока «ювенильный»), неудивительно, что алгоритм кластеризации находит в этом разделе несколько кластеров. Один кластер (бирюзовый), кажется, сосредоточен вокруг сельской местности ("Жизнь на ферме", "Жизнь в деревне", "Собаки", "Кемпинг", "Горы") и семьи («Семья», «Мальчики», «Родитель и ребенок», «Тети», «Кузены», «Близнецы», «Домашние животные», «Кошки»). Еще один кластер (желтый) посвящен, в частности, рассказам о моряках («Моряки», «Острова», «Мореходная жизнь», «Кораблекрушения», «Спасения», «Мужество», «Солдаты»). , «Пираты»).

Однако очевидно, что кластеризация не идеальна. Несмотря на то, что они явно являются частью мореплавания, предметы «Капитаны кораблей», «Контрабандисты» и «Выживание после кораблекрушения» являются частью бирюзового кластера. Есть и другие примеры явно неправильно распределенных предметов. Потребуется углубленный анализ, чтобы понять, следует ли мне использовать меньше кластеров (8 кластеров для 346 предметов может быть просто слишком много), запустить другой предварительный отбор (например, разрешить менее 6 предметов между книгами, что увеличит размер набора данных). ) или проверьте фактами, соответствует ли содержание книг темам, которые они получили.

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

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

И сейчас?

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