Исследование и реализация методов многоязыкового автоматического резюмирования Pavlovic Boris, 527 Moscow, 2012 Содержание • • • • • Что? Где? Когда? Тестирование Подходы к резюмированию Результаты Ссылки Что? Где? Когда? Определение • Автоматическое резюмирование (automatic summarization) - это процесс получения сокращенной версии текста при помощи программы. • Полученный текст: – Во много раз меньше (например 100 слов) – Содержит основные положения исходного документа Что? Где? Когда? Причины возникновения Экспоненциальное увеличение количества документов Размытость информации Информационное перекрытые Ограниченные возможности человека Необходимость Эффективной обработки Что? Где? Когда? Используется в: • Поисковых системах – Сужение области поиска – Сниппеты (snippet) • Новости • Аннотации Что? Где? Когда? Сниппет пример 1 Что? Где? Когда? Сниппет пример 2 Что? Где? Когда? Что такое сниппет? • Это часть исходного текста, содержащая слова запроса пользователя • Определяет контекст в котором найдены слова Что? Где? Когда? Используется в: • Поисковых системах – Сужение области поиска – Сниппеты (snippet) • Новости • Аннотации Что? Где? Когда? Новости • Объединение нескольких новостей из разных источников в одну (новость) Что? Где? Когда? Используется в: • Поисковых системах – Сужение области поиска – Сниппеты (snippet) • Новости • Аннотации Что? Где? Когда? Генерация рефератов в Microsoft Word Что? Где? Когда? Классификация типов резюме по: • Содержанию: – Информативные – Индикативные – Критические • Количеству входных документов • Интересующей информаций: – Относительно запроса пользователя – Равномерно распределенная • Способу генерации: – Summary extraction – Summary generation Тестирование Сложности • Тестирование в ручную одной системы занимает >9k времени (~3k h) • Автоматическое тестирование осложняется: – Не существует общего алгоритма оценки – Разные люди создают разные резюме – Отсутствие размеченных документов Тестирование Общий подход • Набор пар документов (исходный текст, резюме) • Расстояния между сгенерированным текстом и вручную сделанным резюме Тестирование Материалы • DUC (Document Understanding Conferences) – http://duc.nist.gov/ – Для общих резюме (без запроса пользователя) подходят DUC 2001 и DUC 2004 – В архиве нету исходных текстов? – Да их нужно отдельно запрашивать. Для DUC 2001 нужно зайти на страницу http://wwwnlpir.nist.gov/projects/duc/data/2001_data.html Тестирование Содержание архива DUC 2001 • data/test – /docs/ - содержит в себе директории(кластеры) d\d\d\w в которых находятся XML файлы содержащие собственно исходные тексты – /orginal.summaries/ и /duplicated.summaries/ содержат папки содержащие резюме. Для каждого кластера есть 3 папки в каждой из которых есть 5 файлов • 50, 100, 200, 400 словное резюме сразу по все документам • perdocs – xml файл содержащий резюме для каждого из текстов в кластере • data/training – аналогично Тестирование Проблемы с DUC 2001 и python xml • Perdocs не имеет root элемента • Часто опечатки в perdocs файлах (неверно указанное имя файла к которому относится резюме) • XML файлы часто содержат символ & – /&(?![\w\W\d]+;)/ -> /&amp;/ • Во всех FBI документах значения некоторых тегов не в кавычках Тестирование Система тестирования • ROUGE (Recall-Oriented Understudy for Gisting Evaluation) – http://berouge.com/ – Perl скрипт оценивающий качество резюме, сравнивая его с вручную сделанными резюме – Есть несколько алгоритмов оценки Тестирование Как работает ROUGE • N-Grams – это подпоследовательность из nэлементов некоторой последовательности • Пример – N=3 «Совсем скоро придется учить госы.» • Совсем, скоро, придется • скоро, придется, учить • придется, учить, госы. Тестирование Как работает ROUGE • ROUGE-N – основывается на совпадении ngram из полученной резюме и вручную созданных – n длина n-gram – Countmatch(gramn) количество совместных n-gram в сгенерированном резюме и вручную созданных Тестирование Как работает ROUGE • Rouge-L: Longest Common Subsequence – Подпосл-сть Z = [z1,z2, … , zn] посл-сти X = [x1,x2, xm] [i1,..,in] : j=1,k => xij = zj • Rouge-L: Пример (то как видит Rouge-2) • С1 = “police killed the gunman.” - тестируемое • C2 = “police kill the gunman.” • C3 = “the gunman kill police.” – LSC(C1,C2) = ¾, LSC(C1,C3) = ½ – В целом лучше чем Rouge-2 который выдает в обоих случаях ½ – Но есть проблемы например • С4 = «the gunman police killed» В случае Rouge-L оценка будет ½ при этом Rouge-2 дает оценку 1 Тестирование Как работает ROUGE • Rouge-L: Longest Common Subsequence – Подпосл-сть Z = [z1,z2, … , zn] посл-сти X = [x1,x2, xm] [i1,..,in] : j=1,k => xij = zj • Rouge-L: Пример (то как видит Rouge-L) • С1 = “police killed the gunman.” - тестируемое • C2 = “police kill the gunman.” • C3 = “the gunman kill police.” – LSC(C1,C2) = ¾, LSC(C1,C3) = ½ – В целом лучше чем Rouge-2 который выдает в обоих случаях ½ – Но есть проблемы например • С4 = «the gunman police killed» В случае Rouge-L оценка будет ½ при этом Rouge-2 дает оценку 1 Тестирование Как работает ROUGE • Rouge-L: Longest Common Subsequence LSCU(ri,C) – ri – одно предложение модельного резюме, C все предложения из оцениваемого резюме. U – количество предложении, m – общее количество слов в модельном резюме • Пример • • • – r1 = “w1w2w3w4w5”, c1 = “w1w2w6w7w8” => общая“w1w2” c2 = “w1w2w3w5” => общая “w1w3w5” Общая подпоследовательность “w1w2w3w5” • => LSCU(ri,C) = 4/5 Тестирование Как работает ROUGE • Rouge-W: Weighted Longest Common Subsequence – Улучшение Rouge-L • Пример • X = [ABCDEFG] • Y1 = [ABCDHIK] • Y2 = [AHBKCID] – Rouge-L(X,Y1) == Rouge-L(X,Y2) – хотя интуитивно Y1 лучше • Идея улучшения: – Запоминать самую длинную непрерывную последовательность – Ввести функцию веса f(x) : f(x+y) > f(x) + f(y), например f(x) = x2 Тестирование Как работает ROUGE • Rouge-W: немного программирования – For (i = 0; i <=m; i++) c(i,j) = 0 // initialize c-table w(i,j) = 0 // initialize w-table – (2) For (i = 1; i <= m; i++) For (j = 1; j <= n; j++) – If xi = yj Then // the length of consecutive matches at // position i-1 and j-1 k = w(i-1,j-1) c(i,j) = c(i-1,j-1) + f(k+1) – f(k) // remember the length of consecutive // matches at position i, j w(i,j) = k+1 – Otherwise If c(i-1,j) > c(i,j-1) Then – c(i,j) = c(i-1,j) – w(i,j) = 0 // no match at i, j Else c(i,j) = c(i,j-1) – w(i,j) = 0 // no match at i, j – (3) WLCS(X,Y) = c(m,n) Тестирование Как работает ROUGE • Rouge-W: результаты • X = [ABCDEFG] • Y1 = [ABCDHIK] • Y2 = [AHBKCID] – Rouge-W(X,Y1) = 0.571 – Rouge-W(X,Y2) = 0.286 Тестирование Как работает ROUGE • Rouge-S: Skip-Bigram Co-Occurrence Statistics – Пример биграм с пропусками: • «police killed the gunman» - (“police killed”, “police the”, “police gunman”, “killed the”, “killed gunman”, “the gunman”) – SKIP2(X,Y) – количество совпадающих skip-bigram – C(m,n) = m!/ ((m-n)!n!) – Из того, что могут возникнуть skip-bigram вида “the the”, “of in” следует ограничивать максимальное расстояние между словами Тестирование Как работает ROUGE • Rouge-SU: Extension of Rouge-S • S1 = “police killed the gunman.” • S5 = “gunman the killed police.” – В данном случае Rouge-S(S1,S5) = 0, хотя нам бы хотелось учитывать, когда предложения состоят из похожих слов и то когда они совсем разнные, поэтому можно учитывать также uni-gram • добавить к числителю количество общих • добавить к знаменателю количество uni-gram Тестирование Rouge: Корреляция с ручным тестированием Тестирование Как запустить Rouge? • Вид конфигурационного файла: – – – – – – – – – – – – – – – – – – <ROUGE-EVAL version="1.0"> <EVAL ID="0"> <PEER-ROOT>../rouge/text_extractor/systems</PEER-ROOT> <MODEL-ROOT>../rouge/text_extractor/models</MODEL-ROOT> <INPUT-FORMAT TYPE="SEE"> </INPUT-FORMAT> <PEERS> <P ID="baseline first 50 and last 0">0_2.html</P> <P ID="baseline first 100 and last 0">0_7.html</P> </PEERS> <MODELS> <M ID="0">0_0.html</M> <M ID="1">0_1.html</M> <M ID="2">0_2.html</M> </MODELS> </EVAL> <EVAL ID="1"> …… </EVAL> …………. </ROUGE-EVAL> Тестирование Как запустить Rouge? • Формат резюме – – – – – – – – – – <html> <head> <title>0_0.html</title> </head> <body bgcolor="white"> <a name="0">[0]</a> <a href="#0" id=0>De Beers' Venetia mine began production in 1992, and was the first newdiamond mine to open in South Africa in 25 years.</a> <a name="1">[1]</a> <a href="#1" id=1>Production wascurtailed for a while after opening when the De Beers' selling cartelimposed quotas on producers because of a flood of gems from Angola,and uncertainty about Russian exports.</a> <a name="2">[2]</a> <a href="#2" id=2>Last year the mines outputdoubled.</a> <a name="3">[3]</a> <a href="#3" id=3>About 70 percent of Ventia's diamonds are of gem quality, andannual production is expected to reach 500 million dollars.</a> </body> Тестирование Как запустить Rouge? • Волшебная команда запускающая Rouge-SU* – ./ROUGE-1.5.5.pl -e data -f A -a -l 100 -x -s -m -2 -4 -u text_extractor/settings.xml • • • • • • -e data – мозги rouge -a тестировать все системы -l 100 учитывать только первые 100 слов -x не считать Rouge-L -m использование стемминга -2 -4 -u – использовать skip-bigrami при этом макс. Растояние между словами 4, а также добавить unigrami. Подходы к резюмированию Классификация подходов: • Способ выделения ключевых фраз, предложении • Сортировка данных • Упрощение предложении Подходы к резюмированию Классификация методов выделения предложении (ключевых слов): • С учителем • Без учителя Подходы к резюмированию Ранние методы (Luhn 1958, Edmundson 1969) • Текст разбивается на предложения. Каждое предложение оценивается исходя из того, удовлетворяет ли оно некоторым признакам. • Существует много разных признаков =) Подходы к резюмированию Ранние методы (Luhn 1958, Edmundson 1969) • Признак “сue words” – Пример: «В заключении», «Важно», «Результатом», «В данной работе»… – Если предложение содержит «cue words», то интуитивно понятно, что оно является важнее Подходы к резюмированию Ранние методы (Luhn 1958, Edmundson 1969) • Признак “положение предложения” – Начало текста более информативно – Очень сильный критерии – Часто используется в виде baseline Подходы к резюмированию Ранние методы (Luhn 1958, Edmundson 1969) • Признак “корреляция с названием” – Если предложение содержит части названия, то оно более важное Подходы к резюмированию Ранние методы (Luhn 1958, Edmundson 1969) • Признак «позитивные (негативные) ключевые слова» – примеры : лучше, хуже, более, менее.. Подходы к резюмированию Ранние методы (Luhn 1958, Edmundson 1969) • Признак “частота слов” – Разбиваем текст на слова, считаем частоту каждого слова. Логично предположить, что предложения содержащие больше часто употребляемых слов имеют больший вес – Важный подход но не применяется напрямую, в виду того, что в тексте, часто встречаются слова паразиты и стоп-слова. Подходы к резюмированию Ранние методы (Luhn 1958, Edmundson 1969) • Метод td-idf “частота слов” – Вес больше у тех слов, которые часто встречаются в текущем документе, но редко в обучающем копрусе – Weight(w)= tfi,j*idfi, • tfi,j- частот w в текущем документе • Idfi = log(N/Nwith_w) – логарифм отношения количества всех документов к документам содержащим наш термин Подходы к резюмированию Ранние методы (Luhn 1958, Edmundson 1969) • Метод основании на центрировании – Вычисление расстоянии между предложениями и выбор тех которые в среднем ближе – Для меры расстояния можно использовать метод “bag of words” (предложение представляется в виде вектора слова). Вычисляется косинус угла между векторами – a – Для каждого предложения посчитать среднее расстояние – Отсортировать и выбрать те у которых расстояние минимально Подходы к резюмированию Ранние методы (Luhn 1958, Edmundson 1969) • Метод симметричного резюмирования – Выделяем ключевые слова (заранее) – Для каждого предложения считаем количество ссылок на другие предложения • Ссылка – это одинаковое ключевое слово в обоих предложениях – Отбираем предложения у которых больше всего ссылок Подходы к резюмированию Методы машинного обучения • Задача классификация – дан набор объектов, разделенных на классы, называемый обучающая выборка. Также дан набор объектов для которых неизвестен класс, тестовая выборка. Требуется построить алгоритм который бы определял классы для тестовой выборки. • Кластеризации – разделить исходное множество объектов, на подмножества (кластер) содержащие схожие объекты, при этом чтобы объекты разных кластеров сильно отличались. При этом изначально неизвестно количество кластеров. Подходы к резюмированию Методы машинного обучения • Дерево принятий решения – Атрибут (параметр функции) – Тестовые примеры(f (0, 0, 1), f (0, 1, 1), f (1, 1, 0), f (1, 1, 1)) – Нужно продолжить функцию на другие значения атрибутов Подходы к резюмированию Методы машинного обучения • Дерево принятия решений – Это дерево у которого: • В узлах, не являющиеся листьями: атрибуты по которым различаются случаи • В листьях, значения целевой функции • На ребрах: значения атрибута, из которого исходит ребро Подходы к резюмированию Методы машинного обучения • Дерево принятия решений (вход. данные) Подходы к резюмированию Методы машинного обучения • Дерево принятия решений Подходы к резюмированию Методы машинного обучения • Наивный Байесовский классификатор – h - гипотеза • «принадлежит ли данное предложение к резюме?» – D - набор признаков • «предложение в самом начале?» Подходы к резюмированию Методы машинного обучения • Наивный Байесовский классификатор • «Наивность» – Предположим, что признаки из D независимы, тогда p(D|h) = p(d1|h) * p(d2 | h) … * p(h) / p(D) – Если предположить что все гипотезы равновероятны, то p(h) можно опустить – p(D) = const => не влияет на счет Подходы к резюмированию Методы машинного обучения • Наивный Байесовский классификатор • Итоговая формула: – Принадлежит ли предложение к резюме? argmaxhp(d1|h)*p(d2|h)*…*p(dn|h) Подходы к резюмированию Методы машинного обучения • Основная проблема – Отсутствие набор документов, специально размеченных, где указано какое предложение попадает в резюме а какое нет • Дороговизна и сложность создания • Необходимость для каждой области создания специальных обучающих корпусов Результаты Baseline first 100 ROUGE-SU* Average_R: 0.08905 first 100 ROUGE-SU* Average_P: 0.10689 first 100 ROUGE-SU* Average_F: 0.09421 first 30 ROUGE-SU* Average_R: 0.01924 first 30 ROUGE-SU* Average_P: 0.20742 first 30 ROUGE-SU* Average_F: 0.03491