Привет! Меня зовут Илья Гусев, я занимаюсь машинным обучением в команде Яндекс.
Новостей.
У каждой новости на сервисе есть своя страница, где собраны новости об одном и том же событии из разных источников.
Сегодня мы рассмотрим построение краткого аннотации, сюжетного дайджеста.
Этот отрывок, состоящий из фрагментов новостных документов, содержит основную информацию о событии.
Чем дайджест полезен для пользователя, очевидно — на экране сюжета мы отображаем самое важное о событии.
Многие инженеры сталкиваются с похожими проблемами: например, OpenAI недавно опубликовала статья об абстрагировании книг.
Поэтому я надеюсь, что описанный ниже подход будет вам полезен.
Как и все в Новостях, построение такого резюме должно быть полностью автоматическим.
До введения выжимки текстовая часть сюжета выглядела так:
Теперь это выглядит так:
Задача
Резюмирование (или аннотирование, или резюмирование) — это процесс получения краткой версии документа, раскрывающей его суть.Вы, вероятно, встречали обзоры книг, газет и новостных статей, написанных людьми.
Автоматическое абстрагирование происходит с помощью компьютерной программы.
Инженеры занимаются автоматическим абстрагированием с 50-х годов.
Одной из первых работ на эту тему является статья Ганс Петер Лун 1958 год. Задача абстрагирования нескольких документов также довольно старая.
Он был популяризирован еще в начале 2000-х годов посредством серии конференций.
ДУК (Конференция по взаимопониманию документов).
Его главное отличие от обычного абстрагирования состоит в том, что на вход алгоритму подается не один, а несколько документов.
В Яндекс.
Новости мы просматриваем рассказ, то есть сборник документов об одном и том же событии.
В конце мы хотим получить краткое изложение наиболее важных деталей из этих документов.
Важно, что «Новости» не пишут собственные тексты, даже автоматически: у нас нет собственной редакции, все материалы, которые мы используем, получены от изданий-партнеров.
То есть готовая выписка должна включать фрагменты текста из входных документов.
При этом отбрасываются все методы абстракции, которые могут писать новые тексты, включая ЯЛМ .
Сжатия бывают разных форматов: они могут отличаться размером и количеством фрагментов.
Поэкспериментировав, мы остановились на 4 предложениях.
Более крупные отрывки, а также фрагменты, размер которых превышает предложение, трудны для восприятия пользователями.
Алгоритм
Изначально мы пытались извлечь из одного документа, используя достаточно простые ТекстРанк И ЛексРанк с использованием Рейтинг страницы выше графика сходства предложений друг с другом, а также более сложных SummaRuNNer's , суть которого заключается в обучении рекуррентной модели бинарной классификации независимо от того, будет ли выжиматься каждое предложение или нет. В такой обстановке работать на сервисе не могло.Во-первых, такие алгоритмы не могут учитывать важность фрагментов, встречающихся в нескольких документах.
Во-вторых, они сильно смещают распределение трафика в сторону одного источника, что для нас неприемлемо.
Что касается методов многодокументного абстрагирования, то тяжелые сквозные модели мы даже не рассматривали, хотя бы потому, что не сможем объяснить публикациям и пользователям, как они работают. Новостные алгоритмы должны быть максимально прозрачными и интерпретируемыми.
Мы остановились на абстрагировании нескольких документов посредством кластеризации предложений.
Во-первых, этот алгоритм чрезвычайно прост для понимания, написания и поддержки.
Во-вторых, встраивание предложений для кластеризации может быть предварительно рассчитано один раз для каждого документа, что экономит массу процессорного времени.
Это не единственный подходящий метод абстрагирования нескольких документов; тот же LexRank вполне применим для нескольких документов.
Скажем сразу, идея многодокументного абстрагирования посредством кластеризации предложений не нова.
Об этом методе есть много статей: например, этот И этот .
Наш алгоритм отличается от них прежде всего способом расчета расстояний между предложениями.
В общих чертах алгоритм работает так:
- Разбиваем каждый документ на предложения .
Основным объектом нашего давления будут именно эти предложения.
- Для каждого предложения всех документов мы считаем вложение - числовое представление информации, содержащейся в предложении.
Вложения можно создавать разными способами, например, с помощью Фасттекст , ИСПОЛЬЗОВАТЬ , ЛаБСЕ .
Для этого совершенно не обязательно использовать нейросетевые модели; старый добрый подойдет. ТФ-ИДФ , только будет хуже идентифицировать похожие предложения.
Мы строим вложения через ДССМ , который перегоняет LaBSE. В нашей версии дистилляции DSSM был обучен предсказывать расстояния между парами предложений, рассчитанные LaBSE, но это не единственный способ.
Основная причина, почему мы это делаем, — высокая производительность Яндекс ДССМ: мы пока не можем позволить себе более тяжелые по процессорному времени модели из-за большого потока документов.
Когда мы добавим больше графических процессоров в эту часть сервиса, это уменьшит ограничения производительности и можно будет использовать преобразователи.
- Для каждой пары предложений из разных документов вычисляем, насколько они похожи друг на друга.
.
Для разных предложений из одного и того же документа мы предполагаем, что они заведомо разные.
- Мы запускаем алгоритм иерархической кластеризации на полученной двумерной матрице сходства.
со склейкой по середине (например, такой ) с каймой обрезки, выбранной по ручной разметке.
На выходе получаются кластеры, состоящие из похожих друг на друга предложений.
Таким образом, один кластер равен примерно одной «смысловой единице» нашего сюжета.
Пример кластера:
- В ходе эксперимента выяснилось, что животные, тела которых расположены параллельно земле, имеют более гибкие позвоночники.
- В рамках эксперимента было установлено, что животные, тело которых расположено параллельно поверхности земли, имеют гораздо более гибкий позвоночник.
- В процессе эволюции животные приобрели более гибкий позвоночник, оптимальный для длительного контакта стопы с землей.
- У животных с телом, параллельным земле, позвоночник стал очень гибким.
- «Животные, чьи тела параллельны земле, в ходе эволюции приобрели более гибкие позвоночники, поэтому четвероногие животные могут бегать быстрее, чем люди», — добавил Гюнтер.
- В ходе эксперимента выяснилось, что животные, тела которых расположены параллельно земле, имеют более гибкие позвоночники.
- Мы предполагаем, что наиболее важные элементы сюжета упоминались чаще, а значит, предложений в таких кластерах должно быть больше.
Оставляем четыре крупнейших кластера с наибольшим количеством документов.
- Отсортируйте оставшиеся четыре кластера по относительному медианному положению.
компоненты своих предложений в оригинальных документах.
Это необходимо для того, чтобы текст выглядел более связным.
- Фильтрация предложений с местоимениями в кластерах , к которым непонятно, к чему они относятся, используя классификатор текста и регулярные выражения.
Например, во фразе «Она назвала шесть пунктов, в которых были выражены опасения по поводу производства на этом предприятии» неясно, кого «она» имеет в виду и о каком предприятии она говорит.
- Мы выбираем предложение, которое будет представлять кластер в окончательном отрывке.
.
Алгоритм ранжирования предложений внутри кластеров использует несколько параметров, главный из которых — средняя схожесть предложения со всеми остальными предложениями в кластере.
Получается, что мы отдаем предпочтение тому предложению, вложение которого ближе всего к центру масс кластера.
Это не единственный возможный критерий выбора; например, для каждой точки можно взять медиану расстояний до других точек, чтобы уменьшить влияние ошибок кластеризации.
Метрики
В Яндексе есть разделение на офлайн- и онлайн-метрики.Онлайн-метрики рассчитываются в ходе A/B-экспериментов над самими сервисами и показывают, как пользователи взаимодействуют с новым функционалом.
Но офлайн-метрики не требуют такого взаимодействия.
По онлайн-метрикам дайджеста мы видим, что пользователи довольны новым функционалом: активность и время, проведенное на сервисе, растут. В качестве основных оффлайн-метрик мы используем две разметки в Толоке.
Толока — краудсорсинговый сервис, который позволяет поручать простые задачи тысячам людей.
Первая оценка оценивает, хорошее или плохое краткое изложение, а вторая выявляет проблемы с отдельными фрагментами.
Мы регулярно удаляем бинарную разметку из топ-историй основных рубрик.
Каждый сжатие отмечают 10 человек.
Если только 5 или 6 человек из 10 сказали, что сжатие прошло нормально, мы выносим вердикт «не уверен».
Если 4 и меньше, то «плохая выжимка», а если 7 и больше, то «хорошая».
На графике ниже доля плохих сквизов отмечена красным, а доля хороших — зеленым.
Важно отметить, что вердикт «плохое сжатие» не гарантирует наличие серьезных проблем, а только очевидные.
И они могут быть как незначительными, так и серьезными.
Такую разметку сложно масштабировать.
Чтобы обойти это, мы построили БЕРТ -классификатор, аппроксимирующий маркировку.
Для каждого изменения в алгоритме можно просто запустить классификатор и получить примерный эффект от этого изменения.
Это позволило нам пройтись по гиперпараметрам алгоритма и выбрать оптимальные с точки зрения данного классификатора с последующей проверкой по разметке.
По результатам ручной проверки плохих выписок мы выделили 4 основные категории ошибок (показаны на картинке), а также отдельно хотели выделить фрагменты о предыстории события.
Вторая разметка направлена на то, чтобы выяснить, какие ошибки встречаются чаще.
Метки должны быть размещены на отдельных фрагментах, но маркеры имеют доступ ко всему фрагменту.
Основная проблема на данный момент — дубликаты, то есть фрагменты, повторяющие друг друга.
Только на эту категорию приходится более 50% всех ошибок.
Они взяты в основном из-за несовершенства вложения и кластеризации.
Планы
Уже более 3-х месяцев на всех платформах и для всех историй работает автоматическое построение отрывков.Пользователи в целом довольны, о чем свидетельствует рост отдачи и активности на сервисе.
При этом мы не считаем 20-30% плохих сквизов приемлемой цифрой и активно работаем над ее снижением:
- Переходим на вложения-трансформеры, например, на тот же LaBSE
- Улучшаем обнаружение плохих фрагментов классификатором текста.
- Добавляем новую информацию: выделяем ссылки и сущности.
Мы продолжим исследования в этом направлении.
Надеемся, что от внедрения дайджестов выиграют все.
Еще несколько примеров построенных сжатий
Теги: #Машинное обучение #искусственный интеллект #Обработка естественного языка #Поисковые технологии #суммирование #абстрагирование #аннотирование #команда Яндекс.
новостей
-
Поло, Марко
19 Oct, 24 -
Как Apple Сливает Информацию
19 Oct, 24