Pull to refresh

Система автоматического реферирования для трех языков

Algorithms
Sandbox
Я хочу рассказать о разработанном мной сервисе реферирования новостных текстов на английском, русском и немецком языках.

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

Как обстоит дело?


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

С другой стороны, набирают популярность мобильные приложения, которые обрабатывают новостные потоки и представляют пользователю короткие рефераты на выбранные им темы. Яркий пример такой востребованности — относительно недавняя (2013 г.) покупка Google и Yahoo саммарайзеров-стартапов Wavii и Summly соответственно, а также наличие различных браузер-плагинов, реферирующих веб-страницы (Chrome, Mozilla).

Беглое же тестирование бесплатных он-лайн сервисов реферирования показывает, что большинство из них работает схоже, выдавая одинаково средние (плохие?) результаты, среди которых, пожалуй, в лучшую сторону выделяется Autosummarizer.

Список найденных саммарайзеров

Зачем ещё одна САР?


Изначальная цель проекта — послужить платформой для изучения программирования в общем и программирования на python в частности. А поскольку тема компьютерной лингвистики мне близка по роду деятельности, то я выбрал реферирование в качестве объекта разработки, к тому же по нему уже имелись некоторые идеи и материалы.

Если походить по сервисам из приведённого списка, то можно увидеть, что работают они в большинстве своём с английскими текстами (если их вообще удаётся заставить функционировать). Выбрать другой язык можно в MEAD, OTS, Essential-mining, Aylien и Swesum. При этом первый не имеет веб-интерфейса, третий после 10 пробных текстов требует регистрации, а четвертый, давая возможность выставить настройки в демо, почему-то не хочет ничего реферировать.

По мере того, как у меня выходило что-то путное с обработкой английских текстов, захотелось сделать сервис, который работал бы ещё с русскими и немецкими новостными статьями и работал бы не хуже перечисленных, а также предоставить возможность сравнить разработанный алгоритм с популярными сегодня методами TextRank, LexRank, LSA и другими. К тому же, это неплохая возможность попрактиковаться с html, css и wsgi.

Где посмотреть?


Сайт проекта: t-CONSPECTUS

Как работает?


t-CONSPECTUS — это саммарайзер экстрактного типа, т.е. он формирует реферат из предложений оригинальной статьи, которые в процессе анализа получили наибольший вес, и, следовательно, лучше всего передают смысл содержимого.

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

Во время предварительной обработки текст разбивается на абзацы и предложения, находится заголовок (понадобится для коррекции весов терминов), проводится токенизация и стемминг. Для русского и немецкого языков проводится лемматизация. Pymorhpy2 лемматизирует русские тексты, для обработки немецких пришлось написать свою функцию лемматизации на основе лексикона парсера CDG, поскольку ни NLTK, ни Pattern, ни TextBlob German, ни FreeLing не предоставляли нужного функционала, а выбранный хостинг не поддерживает Java, что исключило возможность использовать Stanford NLP.

На этапе взвешивания терминов ключевые слова определяются с помощью TF-IDF. Термин получает дополнительный коэффициент, если:

  1. встретился в заголовке,
  2. встретился в первых и последних предложениях абзацев,
  3. встретился в восклицательных или вопросительных предложениях,
  4. является именем собственным.

Взвешивание предложений проводится по методике симметричного реферирования.

Детальное описание приводится в статье «Яцко В.А. Симметричное реферирование: теоретические основы и методика // Научно-техническая информация. Сер.2. — 2002. — № 5.»

При данном подходе вес предложения определяется как количество связей между данным предложением и предложениями, находящимися слева и справа от него. Связи – это ключевые слова, общие у данного предложения и его соседей. Сумма лево- и правосторонних связей составляет вес предложения. Есть ограничение – текст должен состоять минимум из трех предложений.

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

Заданное количество значимых предложений выбирается из отсортированного по убыванию весов списка, при этом извлеченные предложения на выходе расставляются в том пордке, в котором они шли в оригинале, чтобы хоть как-то соблюсти связность текста. Размер саммари по умолчанию равен 20% от объема оригинала.

Какое качество саммари?


Традиционный подход к оценке качества саммари – сравнение с человеческим рефератом. Пакет ROUGE является на сегодняшний день самым популярным инструментом для проведения такой оценки.

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

Я выбрал две метрики полностью автоматической оценки, обоснованные и описанные в п. 3 здесь (pdf), которые сравнивают саммари с оригиналом статьи. Это косинусный коэффициент (cosine similarity) и расстояние Дженсона-Шеннона (Jensen–Shannon divergence).

Расстояние Дженсона-Шеннона показывает, сколько информации будет потеряно, если заменить оригинал рефератом. Соответственно, чем ближе показатель к нулю, тем лучше качество.

Косинусный коэффициент, классический для IR, показывает насколько близки друг к другу вектора документов. Для составления векторов я использовал tf-idf слов. Соответственно, чем ближе показатель к 1, тем больше соответствует реферат оригиналу по плотности ключевых слов.

В качестве систем для сравнения были выбраны:

  • Open Text Summarizer, который работает с выбранными мною тремя языками и по словам самих разработчиков “Several academic publications have benchmarked it and praised it”;
  • TextRank, популярный сегодня алгоритм в реализации Sumy;
  • Random – справделиво сравнить алгоритм со случайно выбранными предложениями статьи.

Для каждого языка незаинтересованными пользователями было отобрано 5 текстов из областей «научно-популярная статья» (popsci), «окружающая среда» (environ), «политика» (politics), «социальная сфера» (social), «информационные технологии» (IT). Оценивались 20% рефераты.

Таблица 1. Английский язык:
Cosine Similarity (-->1) Jensen–Shannon divergence (-->0)
t-CONSP OTS Textrank Random t-CONSP OTS Textrank Random
popsci 0.7981 0.7727 0.8227 0.5147 0.5253 0.4254 0.3607 0.4983
environ 0.9342 0.9331 0.9402 0.7683 0.3742 0.3741 0.294 0.4767
politics 0.9574 0.9274 0.9394 0.5805 0.4325 0.4171 0.4125 0.5329
social 0.7346 0.6381 0.5575 0.1962 0.3754 0.4286 0.5516 0.8643
IT 0.8772 0.8761 0.9218 0.6957 0.3539 0.3425 0.3383 0.5285

Таблица 2. Немецкий язык:
Cosine Similarity (-->1) Jensen–Shannon divergence (-->0)
t-CONSP OTS Textrank Random t-CONSP OTS Textrank Random
popsci 0.6707 0.6581 0.6699 0.4949 0.5009 0.461 0.4535 0.5061
envir 0.7148 0.6749 0.7512 0.2258 0.4218 0.4817 0.4028 0.6401
politics 0.7392 0.6279 0.6915 0.4971 0.4435 0.4602 0.4103 0.499
social 0.638 0.5015 0.5696 0.6046 0.4687 0.4881 0.456 0.444
IT 0.4858 0.5265 0.6631 0.4391 0.5146 0.537 0.4269 0.485

Таблица 3. Русский язык:
Cosine Similarity (-->1) Jensen–Shannon divergence (-->0)
t-CONSP OTS Textrank Random t-CONSP OTS Textrank Random
popsci 0.6005 0.5223 0.5487 0.4789 0.4681 0.513 0.5144 0.5967
environ 0.8745 0.8100 0.8175 0.7911 0.382 0.4301 0.4015 0.459
politics 0.5917 0.5056 0.5428 0.4964 0.4164 0.4563 0.4661 0.477
social 0.6729 0.6239 0.5337 0.6025 0.3946 0.4555 0.4821 0.4765
IT 0.84 0.7982 0.8038 0.7185 0.5087 0.4461 0.4136 0.4926

Тексты оригиналов статей и полученные саммари можно посмотреть здесь.

Здесь и здесь можно скачать сторонние пакеты для автоматической оценки качества саммари.

А что дальше?


Дальше планируется улучшать понемногу алгоритм, например, учитывать синонимы при поиске ключевых слов статьи, либо использовать для этих целей что-то типа латентного размещения Дирихле (Latent Dirichlet Allocation); решить, какие части текста нуждаются в особом взвешивании (например, нумерованные списки); попробовать добавить ещё языки и т.д. и т.п.

На самом сайте добавить в статистику показатели качества, добавить визуальное сравнение результатов «родного» алгоритма и сторонних и т.д.

Спасибо за внимание!
Tags:nlpsummarizationtext processingреферированиеаннотированиеаот
Hubs: Algorithms
Total votes 12: ↑12 and ↓0 +12
Views28K

Popular right now

Machine Learning Engineer - NLP
from 1,500 to 2,500 €InsideDNARemote job
Senior / Middle NLP engineer
from 200,000 to 300,000 ₽Sportmaster LabМоскваRemote job
AI/ML Software Engineer (ML Ops)
from 200,000 to 350,000 ₽meyvnRemote job
Senior Python разработчик
from 160,000 ₽ArtezioМосква
Middle ML Engineer
to 3,500 $ProvectusКазаньRemote job