Я хочу рассказать о разработанном мной сервисе реферирования новостных текстов на английском, русском и немецком языках.
Системы автоматического реферирования (резюмирования) (САР) — тема довольно специфическая и будет интересна в основном тем, кто занимается автоматической обработкой языка. Хотя идеально исполненный саммарайзер мог бы стать полезным помощником в сферах, где необходимо преодолеть информационный перегруз и быстро принять решение о том, какая информация стоит дальнейшего рассмотрения.
С одной стороны, в процессе поиска аналогов я заметил интересную вещь — большинство найденных мною статей, сервисов, репозиториев и пр. датируются самое позднее 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. Термин получает дополнительный коэффициент, если:
Взвешивание предложений проводится по методике симметричного реферирования.
Детальное описание приводится в статье «Яцко В.А. Симметричное реферирование: теоретические основы и методика // Научно-техническая информация. Сер.2. — 2002. — № 5.»
При данном подходе вес предложения определяется как количество связей между данным предложением и предложениями, находящимися слева и справа от него. Связи – это ключевые слова, общие у данного предложения и его соседей. Сумма лево- и правосторонних связей составляет вес предложения. Есть ограничение – текст должен состоять минимум из трех предложений.
Кроме того, при расчете финального веса предложения учитывается его позиция в тексте (в новостных текстах первое предложние наиболее информативное), наличие имен собственных и цифровых последовательностей и длина предложения. Дополнительно применяется штрафной коэффициент, который понижает вес длинных предложений.
Заданное количество значимых предложений выбирается из отсортированного по убыванию весов списка, при этом извлеченные предложения на выходе расставляются в том пордке, в котором они шли в оригинале, чтобы хоть как-то соблюсти связность текста. Размер саммари по умолчанию равен 20% от объема оригинала.
Традиционный подход к оценке качества саммари – сравнение с человеческим рефератом. Пакет ROUGE является на сегодняшний день самым популярным инструментом для проведения такой оценки.
К сожалению, раздобыть эталоны не так-то просто, хотя, например, конференция DUC предоставляет результаты прошедших соревнований саммарайзеров, включая человеческие рефераты, если пройти ряд бюрократических процедур.
Я выбрал две метрики полностью автоматической оценки, обоснованные и описанные в п. 3 здесь (pdf), которые сравнивают саммари с оригиналом статьи. Это косинусный коэффициент (cosine similarity) и расстояние Дженсона-Шеннона (Jensen–Shannon divergence).
Расстояние Дженсона-Шеннона показывает, сколько информации будет потеряно, если заменить оригинал рефератом. Соответственно, чем ближе показатель к нулю, тем лучше качество.
Косинусный коэффициент, классический для IR, показывает насколько близки друг к другу вектора документов. Для составления векторов я использовал tf-idf слов. Соответственно, чем ближе показатель к 1, тем больше соответствует реферат оригиналу по плотности ключевых слов.
В качестве систем для сравнения были выбраны:
Для каждого языка незаинтересованными пользователями было отобрано 5 текстов из областей «научно-популярная статья» (popsci), «окружающая среда» (environ), «политика» (politics), «социальная сфера» (social), «информационные технологии» (IT). Оценивались 20% рефераты.
Таблица 1. Английский язык:
Таблица 2. Немецкий язык:
Таблица 3. Русский язык:
Тексты оригиналов статей и полученные саммари можно посмотреть здесь.
Здесь и здесь можно скачать сторонние пакеты для автоматической оценки качества саммари.
Дальше планируется улучшать понемногу алгоритм, например, учитывать синонимы при поиске ключевых слов статьи, либо использовать для этих целей что-то типа латентного размещения Дирихле (Latent Dirichlet Allocation); решить, какие части текста нуждаются в особом взвешивании (например, нумерованные списки); попробовать добавить ещё языки и т.д. и т.п.
На самом сайте добавить в статистику показатели качества, добавить визуальное сравнение результатов «родного» алгоритма и сторонних и т.д.
Спасибо за внимание!
Системы автоматического реферирования (резюмирования) (САР) — тема довольно специфическая и будет интересна в основном тем, кто занимается автоматической обработкой языка. Хотя идеально исполненный саммарайзер мог бы стать полезным помощником в сферах, где необходимо преодолеть информационный перегруз и быстро принять решение о том, какая информация стоит дальнейшего рассмотрения.
Как обстоит дело?
С одной стороны, в процессе поиска аналогов я заметил интересную вещь — большинство найденных мною статей, сервисов, репозиториев и пр. датируются самое позднее 2012 годом. На Хабре есть статья на тему автоматического реферирования, опубликованная в 2011 году. В этом же году новостное реферирование было последний раз включено в список треков конференции TAC.
С другой стороны, набирают популярность мобильные приложения, которые обрабатывают новостные потоки и представляют пользователю короткие рефераты на выбранные им темы. Яркий пример такой востребованности — относительно недавняя (2013 г.) покупка Google и Yahoo саммарайзеров-стартапов Wavii и Summly соответственно, а также наличие различных браузер-плагинов, реферирующих веб-страницы (Chrome, Mozilla).
Беглое же тестирование бесплатных он-лайн сервисов реферирования показывает, что большинство из них работает схоже, выдавая одинаково средние (плохие?) результаты, среди которых, пожалуй, в лучшую сторону выделяется Autosummarizer.
Список найденных саммарайзеров
Он-лайн действующие:
Sumplify
www.tools4noobs.com
Freesummarizer
Textcompactor
Summarizer-tool
SweSum
SMMRY
Autosummarizer
Summarizethis
Summarizer.info
Aylien.com
textsummarization.net
nlpsummarize
TextTeaser
Essential-mining
Explain To Me
Open Text Summarizer
Lexrank demo
Недействующие:
Greatsummary
Topicmarks
SystemQ
Pointsapp
Репозитории/библиотеки:
OTS
MEAD
CNGLSummarizer
CIS-530 Project
Sumy + список других доступных саммарайзеров
Open-Text-Summarizer adaptation
Classifier4j
Sumplify
www.tools4noobs.com
Freesummarizer
Textcompactor
Summarizer-tool
SweSum
SMMRY
Autosummarizer
Summarizethis
Summarizer.info
Aylien.com
textsummarization.net
nlpsummarize
TextTeaser
Essential-mining
Explain To Me
Open Text Summarizer
Lexrank demo
Недействующие:
Greatsummary
Topicmarks
SystemQ
Pointsapp
Репозитории/библиотеки:
OTS
MEAD
CNGLSummarizer
CIS-530 Project
Sumy + список других доступных саммарайзеров
Open-Text-Summarizer adaptation
Classifier4j
Зачем ещё одна САР?
Изначальная цель проекта — послужить платформой для изучения программирования в общем и программирования на 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. Термин получает дополнительный коэффициент, если:
- встретился в заголовке,
- встретился в первых и последних предложениях абзацев,
- встретился в восклицательных или вопросительных предложениях,
- является именем собственным.
Взвешивание предложений проводится по методике симметричного реферирования.
Детальное описание приводится в статье «Яцко В.А. Симметричное реферирование: теоретические основы и методика // Научно-техническая информация. Сер.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); решить, какие части текста нуждаются в особом взвешивании (например, нумерованные списки); попробовать добавить ещё языки и т.д. и т.п.
На самом сайте добавить в статистику показатели качества, добавить визуальное сравнение результатов «родного» алгоритма и сторонних и т.д.
Спасибо за внимание!
