Возможно, вам это понравится

Прожито

Это текстовый корпус эго-документов, созданный как площадка для сбора и публикации текстов личных дневников. Общий объем корпуса — 16 тысяч документов из государственных и домашних архивов за период XVIII–XXI веков.

Цель проекта

Центр «Прожито» предложил студентам программы ПАНДАН задачу — разработать прототип механизма рекомендации похожих записей дневников для пользователей архива «Прожито».


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


Мы подготовили интерактивный прототип, в котором документы подбираются на основе расстояний между векторными представлениями текстов и подготовили рекомендации для реализации системы поиска на сайте «Прожито».

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

Изучение структуры корпуса «Прожито», сбор статистики по корпусу, предобработка текстов записей
2
Работа с текстами дневников
Сбор метаданных, векторизация, суммаризация, тематическое моделирование
3
Разметка

Разметка текстов дневников участниками проекта
4
Запуск прототипа

Запуск прототипа системы поиска похожих дневниковых записей

1

Как устроены данные в архиве «Прожито»

Данные, с которыми мы работали
127 431
1910–2010
496
дневниковых записей
период
авторов дневников


Очистка текстов записей
Тексты дневников написаны на русском языке
в современной и дореволюционной орфографии.
Они выгружены в raw-виде и содержат html/xml-теги.
В тексте есть редакторские пометки в [ ].
В [ ] и { } также заворачиваются восстановленные лакуны.
В некоторых случаях [ ] содержат авторский текст (напр., "[Запись на странице сделана почерком не Лии, а ее двоюродной сестры Люси : «Когда буду за сотни километров отсюда, а ты допишешь свой дневник до этой страницы сделай этой открытие. Люська 7/IX.1932 в 11 ч. дня» — Ред. ]").

«Вставные» документы (напр., вклеенные) иногда оформляются оборотом в <>, например:
[В тетрадь подшито письмо Липкину от матери — Прожито.] < Добрый вам день, дорогие, Матвей Евсеевич, ...

Проблемами в исходных данных, с которыми мы столкнулись

  • 1
    Ошибки, которые не позволяли связать дневниковые записи с биографиями авторов по id.
  • 2
    Ошибочная или отсутствующая информации об авторах (годы рождения или смерти авторов дневников).
  • 3
    Наличие, помимо самих дневников также автобиографий, записей наблюдения за новорожденными и др.
  • 4
    Короткие записи, состоящие из одного предложения.
  • 5
    Упоминание в одной дневниковой записи нескольких дней (иногда больше месяца и даже года).

2
Что мы сделали

Извлечение метаданных

Извлечение геолокаций не всегда происходило точно из-за разнообразия форматов. Например, из биографии: «Астраханский художник, археолог, поэт, автор песен под гитару и научных статей по нумизматике Золотой Орды» извлекается только геолокация: [{'государство': 'ЗОЛОТАЯ ОРДА'}].

Векторизация

Мы попробовали сразу несколько способов векторизации дневниковых записей

  • TD-IDF-векторизация лемматизированного текста с последующим PCA-сокращением размерности
    01
  • векторизация общедоступными предобученными моделями разного размера и размерности,
    имеющими высокий рейтинг
    в публичных бенчмарках,
    в т.ч. для русского языка
    02

Суммаризация
Чтобы повысить качество векторизации, мы пробовали суммаризировать длинные тексты с помощью GPT-трансформеров и настраивать токенизаторы моделей, а чтобы дополнительно обогатить набор данных, решили дополнительно кластеризовать тексты записей в несколько итераций, выделив основные тематические теги.
BERTopic

Для кластеризации (группировки) текстов дневниковых записей была использована модель BERTopic. Полученные при кластеризации тематические теги упростят поиск похожих записей.

Метод кластеризации K-means позволил четко определить количество кластеров и избежать появления большого кластера с «шумом».


В результате проведенной кластеризации были выделены следующие тематические теги



3

Разметка данных

Мы решили исследовать, какие тексты дневников выглядят похожими для выборки «обычных пользователей», и выбрать метрики сходства на основе этих данных. Для этого нам нужна была система разметки данных, которую мы развернули на базе open-source платформы Argilla.


Каждый разметчик оценивал схожесть около 1300 пар записей по шкале от 1 (наименее похожи) до 4 (наиболее похожи)


Интерфейс нашей системы для разметки текстов дневниковых записей выглядел так

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

Результаты разметки

Мы получили среднюю согласованность среди оценщиков.
α Криппендорфа: 0.574

Проведенная разметка данных позволила нам выбрать метрики векторизации для дальнейшего построения прототипа системы рекомендации похожих текстов дневниковых записей. Метрики векторизации были оценены с помощью метрики качества ранжирования Normalized discounted cumulative gain (nDCG).

4
Прототип рекомендательной системы
На основе проведенной векторизации и кластеризации текстов дневниковых записей был разработан прототип рекомендательной системы.

В прототипе используется косинусное расстоение между векторами, полученными с помощью PCA над rubert-tiny и теги, выделенные при помощи BERTopic.

Ознакомиться с прототипом можно здесь.
Исходный код прототипа доступен на GitHub.
P.S.
Предложения по изменению поисковой системы сайта "Прожито"
Извлеченные в рамках работы над проектом метаданные и сформированные тематические кластеры могут быть использованы в поисковой системе сайта "Прожито" как дополнительные фильтры для поиска.
Команда проекта
  • Тушканова Ольга
    Куратор проекта
    Кандидат технических наук, доцент факультета социологии ЕУСПб, старший научный сотрудник СПб ФИЦ РАН
  • Сенюхин Алексей
    Куратор проекта
    Редактор корпуса текстовых данных Центра изучения эго-документов «Прожито»
  • Андреев Николай
    Студент программы ПАНДАН
  • Кузнецова Анна
    Студент программы ПАНДАН
  • Севостьянов Александр
    Студент программы ПАНДАН
  • Серебрякова Александра
    Студент программы ПАНДАН
  • Шмакова Анна
    Студент программы ПАНДАН
Made on
Tilda