Суммаризация нескольких документов
Изучение проблемы суммаризации последовательных событий на основе твитов. Метод создания списка ключевых новостных фактов с датами их возникновения, описывающих выбранное событие. Алгоритм построения списка, сбор данных с помощью ключевых слов и фраз.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 14.07.2020 |
Размер файла | 314,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Федеральное государственное автономное образовательное учреждение высшего образования
«Национальный исследовательский университет
«Высшая школа экономики»
Факультет компьютерных наук
Основная образовательная программа
Прикладная математика и информатика
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
на тему
“Суммаризация нескольких документов”
Выполнил студент группы БПМИ164, 4 курса,
Гунченко Любовь Эдуардовна
Руководитель ВКР: Соколов Евгений Андреевич
Москва 2020
Оглавление
- 1. Аннотация на русском языке
- 2. Аннотация на английском языке
- 3. Список ключевых слов
- 4. Введение
- 5. Обзор предметной области
- 6. Методология
- 6.1 Глава 1. Сбор данных
- 6.2 Глава 2. Обработка текста
- 6.2.1 Удаление повторяющихся твитов
- 6.2.2 Удаление хэштегов
- 6.2.3 Удаление упоминаний аккаунтов
- 6.2.4 Удаление ссылок
- 6.2.5 Фильтрация иностранных публикаций
- 6.2.6 Чистка символов
- 6.2.7 Датасет
- 6.2.8 Вторичная обработка текста
- 6.3 Глава 3. Кластеризация и суммаризация
- 6.3.1 Кластеризация твитов TF-IDF
- 6.3.2 Суммаризация твитов с использованием TF-IDF
- 6.3.3 Разделение на предложения
- 6.3.4 Кластеризация и суммаризация предложений TF-IDF
- 6.3.5 Вероятностная суммаризация
- 6.3.6 Эмбеддинги модели BERT и косинусная близость
- Заключение
- Список источников
- Терминологический словарь
1. Аннотация на русском языке
Каждый день в социальных сетях появляется много информации -- новостные факты, мнения пользователей о мировых событиях, комментарии миллионов людей и организаций. В настоящее время возрастает потребность в сервисе, который суммирует информацию без лишнего шума и представляет ее в читаемом виде.
В своей работе я изучаю проблему суммаризации последовательных событий, таких, как австралийские пожары в начале 2020 года, на основе твитов. В работе представлен метод создания списка ключевых новостных фактов с датами их возникновения, описывающего выбранное событие. Алгоритм построения состоял из четырех этапов: сбор данных из Твиттера с помощью ключевых слов и фраз, обработка текста, кластеризация твитов или предложений по временным промежуткам и по смыслу, извлечение суммаризации.
В работе было опробовано несколько разных методов, некоторые из которых показали высокое качество построения суммаризации -- читаемый текст, полноценное изложение фактов, структурированная запись.
В качестве дальнейших путей развития мною было предложено несколько направлений -- улучшение автоматизации процесса для разработки программного продукта и рассмотрение других параметров для анализа, например, список ключевых слов, разбиение на кластеры.
2. Аннотация на английском языке
A lot of information appears in social networks every day: news, user opinions about world events, comments from millions of people and organizations. Currently, there is an increasing need for a service that summarizes information without unnecessary noise and presents it in a readable form.
In my work, I study the problem of summarizing consecutive events, such as the Australian fires in early 2020, based on tweets. This paper presents a method for creating a list of key news facts, which describe the selected event, with the dates of their occurrence. The construction algorithm consisted of four stages: collecting data from Twitter using keywords and phrases, text processing, clustering tweets or sentences by time intervals and meaning and extracting summarization.
Several different methods were tested, some of which showed a high quality of resulting summary -- readable text, a full statement of facts and a structured list.
As further ways of development, I suggested several directions -- improving the automation of the process for developing a software product, considering other parameters for analysis, for example, a list of keywords or splitting into clusters.
3. Список ключевых слов
Твиттер, суммаризация, Австралия, пожары, социальные сети.
4. Введение
Твиттер - одна из самых популярных социальных сетей в мире[1]. Каждый день в Твиттере миллионы людей публикуют посты[2]. Различные организации, медийные личности, политики часто ведут аккаунты в Твиттере, где публикуют самые свежие новости, делают заявления, комментируют ситуацию в мире и отдельные события. Все посты в микроблоге, в основном, публикуются от первого лица, а поэтому являются самым передовым источником информации, так как идут в обход журналистов и новостных сайтов.
Твиттер доступен всем слоям населения -- люди высказывают свое мнение, пишут о своих эмоциях, публикуют различные факты каждый день. Из-за этого Твиттер и стал одной из самых популярных соцсетей. Сам формат твитов -- сообщение (не длиннее 280 символов) передает только самое важное, не распыляясь на фразы, которые можно опустить. Из-за этого Твиттер является очень динамичным источником информации.
Природные катастрофы, спортивные состязания, политические заявления и локальные новости -- все обсуждается в Твиттере. Однако именно доступность Твиттера -- возможность любого человека со смартфоном сделать публикацию -- усложняет мониторинг конкретного события для обычного пользователя. Многие твиты повторяют друг друга или не содержат полезной информации. Поэтому для создания полной картины какого-либо события, например, таймлайна (список событий с указанием даты, когда произошло событие, упорядоченный по дате) природной катастрофы, нужна автоматическая сборка и обработка информации из постов и дальнейшее представление ее в наглядном виде.
В этой работе я анализирую твиты на тему “Австралийские пожары в 2020 году”. О природной катастрофе писало множество новостных газет и каналов, на сайтах и форумах было много обсуждений. Несмотря на то, что в Твиттере, помимо важной информации, было множество эмоциональных публикаций, обращений к общественности, просьб о поддержке и помощи, в нем также были опубликованы все важные факты и ключевые события Австралийских пожаров. Поэтому для анализа этого события и составления его суммаризации в виде таймлайна был выбран именно Твиттер.
Данная работа состоит из нескольких этапов:
1. Сбор информации из Твиттера с помощью ключевых слов.
2. Анализ собранных данных и извлечение из них новых ключевых слов, биграмм (1), фраз, пользователей итд.
3. Расширение базы с помощью новых данных.
4. Обработка твитов: удаление шума, спама, иностранных твитов, итд.
5. Обработка текстов твитов: удаление пунктуации, стоп-слов, изменение регистра, итд.
6. Разделение твитов на кластера по времени, а позже классификация каждого кластера по смыслу.
7. Суммаризация каждого кластера.
Из-за различий в методах суммаризации некоторые шаги могут быть пропущены или пройдены в другом порядке. Как итог, будет предоставлена суммаризация нескольких документов (твитов) об Австралийский пожарах в виде таймлайна событий.
5. Обзор предметной области
Суммаризация нескольких документов - популярная тема для разработчиков, поэтому о ней написано множество работ и исследований. В частности, есть работы и на тему суммаризации постов из Твиттера. Например, в работе [3] описывается подход к суммаризации, основанный на выделении под-событий (sub-events). Его суть состоит в следующем: находятся все участники события (их аккаунты в Твиттере). Для каждого участника выделяются под события и объединяются в один таймлайн, после чего из этого таймлайна под-событий выделяются репрезентативные твиты в качестве суммаризации. Для выполнения этих шагов авторы используют теги, кластеризуют данные, сравнивают сущности (фамилии, названия - имена собственные, добавленные в словарь тегов) на похожесть. Для выделения под-событий они исследуют временные пики, а получают репрезентативные предложения помощью ранжирования на основе TF-IDF (2). Но данный подход не применим в нашей работе, что подробно рассказывается в главе “Сбор данных”. В подходе [4] также используется подход TF-IDF, но суммаризация в этом подходе абстрактивная - предложения генерируются на основе пред обученной модели с помощью грамматических правил. Данный подход не целесообразно применять для работы с данными из Твиттера, поскольку в нем нет необходимости, а качество станет заметно хуже. Поэтому он нам не подходит. Работа [5] схожа с работой [3]: формулируется словарь семантических тегов -- ключевых слов. После этого по ним собираются твиты. В ключевые слова входят названия компаний, бизнес термины. Собранные твиты кластеризуются в подсобытия, производится ранжирование. Для каждого кластера по полученному ранжированию выбираются топ-4 слова, которые вместе могут быть в составе предложения, и полученное предложение используется как суммаризация.
Существуют и другие подходы, где не используется кластеризация. Например, авторы работы [6] рассказывают о следующем экстрактивном алгоритме, суммаризация в котором строится методом извлечения словосочетаний или целых предложений из базы данных: для каждого временного окна события строится граф, где каждой вершине сопоставляется биграмма слов (биграммы берутся из предложения, для первого и последнего слова добавляется “пустое слово”). Ребра строились между вершинами, если из слов составлялась триграмма. Задача суммаризации состояла в нахождении в таком графе пути с максимальным весом. Вес равен частоте, с которой данная триграмма встречалась в тексте. Данный граф потреблял много памяти, и времени работы, поэтому его обработали - за проход по графу убрали те ребра, что не встречались в предыдущем временном окне. В своей работе авторы подробно описывают процесс обновления графа, который расширяется за счет новых данных. В нашей работе такой подход не даст хороших результатов - событие, которое мы рассматриваем, завершилось к текущему моменту, а лишняя информация только ухудшит качество суммаризации. В [7] применялась идея “сжатия” твитов заменой редких слов на частые фразы, которые бы не теряли весь оригинальный смысл твитов. Также более старые данные подвергались большему сжатию, чем новые. В работе [8] описывается подход SumBasic, в котором сначала считается вероятностное распределение слов во входных данных, затем считается вес предложения - среднее по словам. В качестве суммаризации выбирается предложение с наибольшим весом.
Чтобы оценить качество экстрактивной суммаризации, нужны либо размеченные данные, либо оценка экспертами (человеком). Во втором случае это долгий и трудозатратный процесс, но самый действенный. Авторы статьи [9] применили несколько алгоритмов суммаризации и сравнили их качество. В первых трех алгоритмах оценка релевантности предложений каждого кластера текста производилась вручную независимыми экспертами. Затем из них разными способами доставалась суммаризация. Первый алгоритм заключается в выделении нескольких наиболее релевантных предложений, релевантность которых оценивалась по всем кластерам сразу. Второй - для каждого предложения считалась сумма его релевантностей во всех кластерах и выбирались предложение с наибольшей такой суммой. Третий - выбрать предложение наиболее релевантное для первого кластера, затем для второго итд. Также авторы описывают и подходы без ручной разметки релевантности: алгоритм MEAD -- строит кластера, затем ищет наиболее близкий к центру вектор TF-IDF предложения по мере косинусной близости, учитывает длину предложения и позицию в документе, алгоритм Lead-Based -- присваивает наибольший вес первому предложению в статье, следующий по величине вес -- второму, и так далее, Random алгоритм-- делает суммаризации из всевозможных комбинаций предложений. Все алгоритмы применялись на новостях из газеты. В результате, Lead-Based показал наилучший результат (оценка производилась на тестовой выборке размеченных вручную данных). Такой подход также не применим для наших данных, поскольку отсутствует возможность оценки релевантности вручную.
6. Методология
Данная работа состоит из нескольких этапов. Каждый этап будет описан в отдельной главе.
6.1 Глава 1. Сбор данных
Для сбора данных использовалась библиотека twitterscraper [11]. С помощью ключевых слов запускался парсер, который собирал и добавлял в базу данных все твиты, которые были найдены по ключевому слову. Первый список ключевых слов задавался вручную. Вот полный список этих слов: “australia”, “bushfire”, “australiaonfire”, “australiafires”, “fires”, “firefightaustralia”. Слова были подобраны самостоятельно, либо взяты из выдачи по запросу “Australian fires” в поисковой системе “Яндекс”. Список составлялся вручную. Дальнейшая работа происходит в автоматическом режиме.
По данным словам парсер собрал 101553 твита (включая повторения, потому что некоторые твиты могли находиться как по одному ключевому слову, там и по другому, все твиты добавлялись в базу данных без фильтрации). Следующий этап - расширение базы данных.
Многие пользователи Твиттера добавляют в тексты своих твитов тематические хэштеги (3). С помощью них можно посмотреть все твиты, в публикации которых был поставлен конкретный хэштег. Был проведен эксплоративный анализ и выделены самые популярные хэштеги уже собранной коллекции:
Таблица 6.1.1. Самые частые хэштеги в собранной коллекции твитов
AustraliaOnFire |
50087 |
|
AustraliaFires |
49817 |
|
Australia |
8974 |
|
AustraliaBurning |
7822 |
|
auspol |
5785 |
|
PrayForAustralia |
5180 |
|
AustraliaBurns |
4410 |
|
AustralianBushfire |
4352 |
|
AustraliaBushfires |
4145 |
|
ClimateEmergency |
3572 |
|
AustralianBushfiresDisaster |
2378 |
|
AustralianBushfireDisaster |
2365 |
Все хэштеги, не использованные ранее, были записаны в новый список ключевых слов, после чего по ним запускался парсер, и коллекция твитов обновлялась. После такого запуска количество твитов расширилось до 188644.
Также был проведен анализ пользователей, делающих публикации на данную тему. Первоначальной идеей было найти пользователей с наибольшим количеством популярных постов. Предполагалось, что среди них есть новостные источники, регулярно обновляющие информацию, публикации которых краткие и лаконичные. Таких пользователей предполагалось анализировать основательно, собрав все их публикации за некоторый промежуток времени (без ключевых слов) и добавив полученные твиты в коллекцию данных. Однако, полученные результаты опровергли изначальную гипотезу о новостных источниках. Список лидеров по количеству постов из собранной коллекции:
Таблица 6.1.2. Имена пользователей с наибольшим количеством публикаций на тему “Австралийские пожары”
ducky130819 |
370 |
|
suzlette333 |
258 |
|
shockadelicaust |
219 |
|
jftaveira1993 |
217 |
|
Laup561 |
157 |
Однако, среднее количество лайков (4) на публикациях вышеуказанных пользователей не превышало ~3. Из этого показателя видно, что данные аккаунты не являются популярными новостными газетами и не стоят того, чтобы провести их основательный анализ. Следующий список - лидеры по количеству лайков среди аккаунтов, опубликовавших твиты из текущей коллекции:
Таблица 6.1.3. Имена пользователей с наибольшим количеством лайков на публикациях на тему “Австралийские пожары”
GretaThunberg |
50491 |
|
Khalil_Hatoum |
39336 |
|
caragreen83 |
35407 |
|
PeytonRoyceWWE |
15113 |
|
MichaelM_ACT |
14610 |
Данные пользователи наоборот, очень популярны. И, хотя они не являются новостными источниками (только 'MichaelM_ACT' - журналист, остальные - просто популярные аккаунты), их публикации пользуются популярностью, и имеет смысл провести анализ их остальных публикаций. Однако после такого анализа оказалось, что у данных пользователей практически нет публикаций на данную тему, и подобный анализ не дает новых данных. Также были проанализированы пользователи, количество лайков которых на одном посте в среднем наибольшее количество -- предполагалось, что они наиболее популярны среди пользователей, делающих публикации на эту тему. Однако в процессе анализа получился тот же самый список (пользователей с наибольшим количеством лайков). Таким образом, анализ пользователей не приносит никакой полезной информации с точки зрения сбора твитов. Именно поэтому подход, описанный в [3], не подходит для данной работы.
После проведения такого анализа сбор данных был окончен. Последние собранные твиты в коллекции датировались 12 апреля 2020 года.
6.2 Глава 2. Обработка текста
Формат твитов сильно отличается от классического литературного текста и от текста, подходящего для векторного представления (чтобы быть обработанным программным кодом). Поэтому он неудобен ни для чтения, ни для прямой работы с ним с помощью статистических методов. Твиты в основном содержат хэштеги, упоминания различных аккаунтов, ссылки на сайты и изображения. В твитах широко используются эмодзи (5), множество идущих подряд знаков препинания (что в обычном литературном языке считается грамматической ошибкой), некоторые знаки препинания опускаются (для экономии количества символов), иногда с помощью знаков передаются эмоции - рисуется смайлик. Для людей, не привыкших к такому стилю, тексты твитов становятся совершенно нечитаемыми, и поэтому суммаризация из них не будет наглядной. С другой стороны, тексты не лемматизированны (6), не приведены к одному регистру, поэтому работа с ними с точки зрения применения анализа затруднительна и, скорее всего, для некоторых алгоритмов повлечет плохие результаты. Поэтому перед работой с текстом производится предобработка.
6.2.1 Удаление повторяющихся твитов
Как было указано ранее, некоторые твиты могли находиться по разным хэштегам, а значит, повторяются в нашей коллекции. Их следует удалить, чтобы не нарушать статистику. Но также существуют ретвиты (7) - их текст совпадает с текстом оригинального твита, однако имя пользователя другое. Поэтому первым этапом было удаление тех твитов, у которых совпадают текст и имя пользователя. После такой операции в коллекции осталось 172048 твитов.
6.2.2 Удаление хэштегов
Хэштеги были очень информативны и принесли дополнительные данные, с помощью них мы пополнили коллекцию. Информация о них сохраняется, так как твиты в базе данных хранятся в виде json (8), где для хэштегов есть отдельное поле. Поэтому в основном тексте они не нужны, и стоит их удалить. Хэштеги отличаются тем, что пишутся слитно и начинаются со значка “#”. Они были удалены из текста с помощью регулярных выражений.
6.2.3 Удаление упоминаний аккаунтов
В Твиттере есть еще одна функция - упоминание аккаунта. Чтобы в своем твите упомянуть кого-то, надо поставить знак “@” и написать слитно его никнейм (9) в Твиттере. Но текст данные упоминания делают менее читабельным. Упоминания также были удалены с помощью регулярных выражений.
6.2.4 Удаление ссылок
Так как мы анализируем только твиты, и информацию берем только из Твиттера, то ссылки в твитах не дают нам никакой информации и только захламляют текст. Они были также удалены с помощью регулярных выражений.
суммаризация список алгоритм
6.2.5 Фильтрация иностранных публикаций
С самого начала было решено исследовать тексты и строить суммаризацию только на одном языке - английском. Это упрощает процесс обработки и дает читаемую суммаризацию. Для определения языка использовалась библиотека langdetect [12]. Она автоматически сообщала язык текста, на котором написан набор предложений - твит. В нашей коллекции были оставлены только твиты на английском языке. Как и следовало ожидать, их было большинство. Кроме того, удалялись и твиты, которые после удаления ссылок, хэштегов и упоминаний становились пустыми. После этой фильтрации в коллекции осталось 124794 твита. Список лидеров среди языков твитов на тему Австралийских пожаров:
Таблица 6.2.1. Самые популярные языки публикаций на тему “Австралийские пожары”
en |
124794 |
Английский |
|
es |
5070 |
Испанский |
|
pt |
3832 |
Португальский |
|
fr |
3576 |
Французский |
|
de |
3032 |
Немецкий |
|
tr |
1797 |
Турецкий |
|
it |
1794 |
Итальянский |
|
ja |
1259 |
Японский |
|
nl |
994 |
Голландский |
|
pl |
736 |
Польский |
6.2.6 Чистка символов
В некоторых твитах прослеживается часто наличие таких символов, как “\xa0”, символ переноса строки. Они также были удалены с помощью регулярных выражений.
6.2.7 Датасет
На данном этапе тексты твитов достаточно очищены для того, чтобы быть понятными читателю, не знакомому с Твиттером. Если использовать предложения или целые твиты на данном этапе для суммаризации, то такая суммаризация будет читаемой и наглядной. Но для построения суммаризации и взаимодействия текста с моделями машинного обучения нужна дополнительная обработка. Чтобы сохранить читаемый текст и другую информацию о твите использовалась таблица DataFrame.
6.2.8 Вторичная обработка текста
Новый столбец таблицы, являющийся повторно обработанным текстом, составлялся следующим образом. Из библиотеки nltk загружалась пунктуация - все знаки препинания. Также из этой же библиотеки загружались стоп-слова (10). После все тексты обрабатывались - сначала проводилось разделение текста на токены (11), затем из них удалялась вся пунктуация, стоп-слова, а также все слова приводились к нижнему регистру. После чего каждое слово подвергалось лемматизации. Полученные текста непонятны к прочтению, однако гораздо более удобны для работы с моделями. Если какие-то символы пунктуации не были в словаре из nltk, они вычищались из текстов вручную. После такой обработки столбец с новыми текстами добавлялся в таблицу данных.
6.3 Глава 3. Кластеризация и суммаризация
Следующим этапом в моей работе была кластеризация событий. Подход заключался в следующем: так как цель данной работы - составления таймлайна событий, первым дело было решено поделить промежуток времени, в котором происходили события, на несколько временных отрезков. После чего кластеризовать каждый временной отрезок с целью обнаружения событий. Предполагается, что в каждом временном отрезке существует одно или несколько под-событий, и с помощью кластеризации твиты объединятся по смыслу в один кластер, который будет означать отдельное событие. После этого для каждого кластера надо будет построить суммаризацию.
Первоначально стратегия была иной. Планировалось кластеризовать сразу все твиты, а потом посмотреть, какие из них сгруппированы по времени публикации. В таком случае предполагалось, что твиты будут сгруппированы и по смыслу, и по времени, что будет означать отдельное событие. Однако, после различных подходов к кластеризации, в кластера объединялись твиты из разных промежутков времени. В каждом кластере наблюдался примерно подобный разброс по времени:
Рисунок 6.3.1. Частота количества публикаций в зависимости от даты публикаций на тему “Австралийские пожары”
Это распределение схоже с распределением всех твитов по времени публикации. Таким образом, от изначального метода пришлось отказаться, потому что показанные результаты не располагали к хорошему качеству в получении таймлайна событий.
Во втором подходе была применена стратегия с разделением промежутка времени на временные отрезки. Для этого предстояло проанализировать все даты и время публикаций нашей коллекции. Стоит заметить, что в коллекцию изначально собирались только твиты, датируемые 2019 и 2020 годом, потому что более ранние публикации не относятся к анализируемой ситуации. График частоты публикаций по дням с 2019-01-01 по 2020-04-12:
Рисунок 6.3.2. График частоты публикаций по дням с 2019-01-01 по 2020-04-12
Как видно из графика, самая высокая частота событий приходится на январь-февраль 2020 года. Увеличим этот фрагмент:
Рисунок 6.3.3. График частоты публикаций по дням с 2020-01-01 по 2020-03-01
Если быть еще точнее, то можно рассматривать только фрагмент с 01-01-2020 до 10-02-2020:
Рисунок 6.3.4. График частоты публикаций по дням с 2020-01-01 по 2020-02-10
Теперь, когда у нас появилось представление о промежутке времени, с которым мы будем работать, я разделила его на 10 равных по количеству твитов частей. Количество частей может варьироваться, их должно быть не очень много и не очень мало. С помощью функции вся коллекция твитов была поделена по промежуткам времени на равные части по количеству твитов. В каждом отрезке было 11012 твитов.
Фрагмент таблицы, в котором хранятся твиты:
Рисунок 6.3.5. Фрагмент таблицы - базы данных
Поле `preprop' - обработанный текст, остальные столбцы - различные параметры отдельного твита. Всего в таблице 24 столбца. Список тех из них, которые были использованы в процессе расширения, обработки и анализа данных:
Таблица 6.3.1. Список столбцов базы данных, которые были использованы в процессе расширения, обработки и анализа данных
hashtags |
список хэштегов |
|
likes |
количество лайков |
|
screen_name |
имя пользователя |
|
text |
первоначальный текст твита |
|
timestamp |
дата и время публикации |
|
preprop |
обработанный текст твита |
|
time_cluster |
временной сегмент, в который попал данный твит |
6.3.1 Кластеризация твитов TF-IDF
Мною были исследованы несколько способов получения суммаризации. В данном параграфе я опишу кластеризацию на основе TF-IDF. Первый этап - кластеризация твита в каждом сегменте. Здесь будет описан алгоритм для одного сегмента, который был применен к каждому из них. Каждый обработанный текст был переведен вектор с помощью TfidfVectorizer из библиотеки sklearn, после чего все вектора передавались кластеризатору k-means из библиотеки sklearn. После обучения модели для каждого вектора (твита) было сделано предсказание модели и был получен номер кластера из модели кластеризации. Модель была настроена на разделение всего на 3 кластера. Полученные данные добавлялись в таблицу.
После чего каждому предложению в таблице также сопоставлялось расстояние вектора этого предложения от центра полученного кластера. Подсчитанные расстояния заносились в таблицу.
Для каждого кластера было составлено ранжирование - по расстоянию векторов предложений от центра кластера. Чем ближе предложение к центру, тем выше его ранг.
Предполагалось, что каждый кластер обозначает определенное событие, а самые близкие к центру кластера предложения наилучшим образом описывают данное событие. Иными словами, предполагалось, что такие предложения являются хорошей суммаризацией, и их можно взять в составляемый таймлайн.
Рисунок 6.3.6. Фрагмент обновленной таблицы - базы данных
6.3.2 Суммаризация твитов с использованием TF-IDF
После рассмотрения полученных кластеров вручную, стал вырисовываться определенный паттерн: из 3х кластеров, обычно, два относились к шуму, а один заключал в себе важную информацию. Например, часто в кластер объединялись твиты, содержащие просьбы помощи и поддержки, призывы к пожертвованиям денег, призывы к молитвам.
Рисунок 6.3.7. Фрагмент шумового кластера базы данных - колонка оригинального текста
Также иногда возникали кластеры, в которых люди рассуждали об “Изменении климата” или утверждали, что пожары никак не связаны с ним. Однако, так как весь подобный шум попадал в два кластера, в третьем, как правило, их не было, были только факты и важная информация - как раз то, что нужно для лаконичного таймлайна. Среди ранжированных по расстоянию до центроидов твитов таких кластеров в качестве суммаризации были вручную выбраны одни из первых твитов. Чаще всего, выбирался самый первый твит, но иногда суть лучше передавалась именно в одном из последующих. Иногда кластер содержал в себе сразу две или больше масштабные новости, в таком случае выбирались все новости, появившиеся в кластере. В качестве даты события выбиралась та дата, которая была указана для выбранного твита. Стоит добавить, что рассматривались только те твиты, длина которых в обработанном состоянии была более трёх слов. В противном случае, предложение находилось очень близко к центру, однако либо не несло никакой смысловой нагрузки, либо было шумом. Полученный таймлайн достаточно понятно и кратко описывает все важные новости, произошедшие во время Австралийских пожаров и связанные с ними:
Таблица 6.3.2. Таймлайн событий Австралийских пожаров
2020-01-03 14:13:28 |
Over 500 million animals lives lost |
|
2020-01-04 01:20:24 |
Australian wildlife are in danger at this time due to the wildfires. |
|
2020-01-04 11:57:33 |
NSW fires: The world has made the link between Australian coal, fires and climate. |
|
2020-01-04 17:45:12 |
The Australian fires have burned 6 million hectares of land, 23 people have died and many more missing, half a billion animals are estimated to have died. OnFire My thoughts are with everyone involved. |
|
2020-01-05 10:33:32 |
* 24 people dead * 500M animals dead * 8,000 koalas dead * Over 5.5 million hectares burned * More than 1400 homes destroyed * More than 10 million people in toxic levels of bushfire smoke |
|
2020-01-05 19:56:06 |
Climate change. Half a billion animals have been killed by the bush fires. 15 million acres have burned. 30% of koalas have died. So sad to see Australia like that. Hope it'll stop. Be strong! |
|
2020-01-06 07:33:35 |
Over 50% of May be the result of arson? Australian fires: Why do people start fires during fires? |
|
2020-01-08 12:43:58 |
Climate Change? Nearly 200 People Arrested Across Australia For Deliberately Starting Bushfires. |
|
2020-01-09 00:50:00 |
Australia deploys sniper helicopters to shoot dead 10,000 camels. |
|
2020-01-09 03:57:52 |
Well over 1 billion animals killed by fires. People trapped on the water. The future of climate change is here but they still want to dig up more coal. |
|
2020-01-09 05:25:00 |
The 19-month-old daughter of a firefighter who was killed battling Australia bushfires was presented with his helmet and medal of honour during his funeral. |
|
2020-01-09 21:00:00 |
The devastating have left at least 25 people dead, 20 million acres burned, and a billion native animals killed. For many Australians, it's past time for their government to get serious about the climate crisis. |
|
2020-01-10 07:35:00 |
Three Australian bushfires combine to form a single blaze bigger than Manhattan. |
|
2020-01-13 13:14:25 |
Australia has been burning for nearly 6 months and is in a state of emergency. Every Australian state is on fire. The air quality is 11 times the hazardous level due to the amount of smoke from the fires and this also affects New Zealand. They are in danger. |
|
2020-01-23 17:31:21 |
I've just signed the open letter to stand in solidarity with survivors and force the Australian government to recognize & address the. Will you do the same? |
|
2020-01-28 07:41:27 |
Fires still raging out of control in Australia fires: worst bushfires threat since 2003, chief minister says. |
|
2020-02-04 22:54:36 |
In the wake of the worst bushfire crisis in Australia's history, NSW & Victoria are STILL issuing permits that allow wildlife like kangaroos, wombats, and possums to be shot and killed. This must end NOW. |
Суммаризация получилась очень успешная. Она кратко описывает все основные события, и помогает составить полноценную картину Австралийских пожаров. Единственный недостаток такого подхода в том, что на конечном этапе выбора суммаризации автоматическая часть сводится к минимуму и приходится анализировать некоторые тексты вручную. В следующем способе я попыталась устранить данный недостаток.
6.3.3 Разделение на предложения
Существует множество разных способов фильтрации спама. Например, в [10] используется Наивный Байесовский классификатор для удаления спама. Однако, его можно применить только на изначально размеченных данных, где вручную указано, какие тексты являются спамом, а какие- нет. После чего обучить модель. Но в данной работе нет возможности разметить данные (если бы была такая возможность, сама работа не представлялась бы осмысленной, так как появилась бы возможность вручную кластеризовать твиты). Поэтому в данном случае этот алгоритм не применим. Также для фильтрации предложений (либо твитов) может быть использована оценка тональности (12). Однако в нашей коллекции данных часто достаточно эмоциональные твиты являются информативными и подходящими для суммаризации. Поэтому их удаление может, напротив, испортить качество суммаризации.
По этой причине было решено удалить только те предложения, в которые входит следующий список слов: “please”, “help”, “pray”, “climate change”, “thank you”, “donate”, “OnFire”, “link”, “click here”, “Bushfires Burning”, “Emergency Fires”, “Burning Emergency”. Сама идея разделения твитов на предложений исходила из предположения, что удаление всех твитов с данными словами лишит нас важной информации, так люди зачастую добавляют эти слова в начале или в конце новости. Если же удалить только предложения с побуждением, а не весь твит, то коллекция станет более очищенной от шума, но вся важная информация будет в ней сохранена.
Для осуществления идеи, сначала каждый твит был поделен на предложения. Далее для каждого предложения строилась своя строчка в таблице данных. Например, если твит состоял из двух предложений, то вместо одной строки в таблице ему соответствовало две. При этом остальные данные в столбцах таблицы для этих предложений совпадали. После этого была проведена фильтрация - были удалены все строки таблицы, в предложении которых содержался вышеуказанный список слов.
6.3.4 Кластеризация и суммаризация предложений TF-IDF
После получения новых данных, была проделана работа, аналогичная кластеризации твитов. Коллекция была поделена на временные сегменты (в этот раз на 14, так как коллекция больше по размеру), после чего кластеризована алгоритмом k-means, а предложения были ранжированы. Несмотря на чистку, в текстах все равно осталось множество нерелевантных слов и шума. Полностью их вычистить их текста вручную затруднительно. Но алгоритмом по-прежнему создавались кластера, которые не содержали шума и несли в себе важную информацию. Предложения из них и были использованы как суммаризация.
Таблица 6.3.3. Суммаризация Австралийских пожаров
2020-01-03 14:13:28 |
Over 500 million animals lives lost. |
|
2020-01-05 01:15:09 |
Over half a million animals have died and over 20 people have lost their lives. |
|
2020-01-05 08:50:53 |
Fires have killed at least 25 people and more than 500 million animals. |
|
2020-01-05 20:22:40 |
- 24 people dead - 500 million animals died - 8000 Koalas died - 5,5 Million hectares burned - More than 1400 homes destroyed |
|
2020-01-07 03:00:18 |
35 MILLION ACRES, KILLED 25 PEOPLE & HALF A BILLION ANIMALS NWILDFIRES. |
|
2020-01-07 21:47:36 |
Bots and trolls spread false arson claims in Australian fires `disinformation campaign'. |
|
2020-01-08 16:48:57 |
3 BILLION animals have died in the Australian bushfires. |
|
2020-01-09 15:10:59 |
25 BILLION ANIMALS AND 25 PEOPLE CONFIRMED DEAD. |
|
2020-01-15 11:06:41 |
Smoke from Australia's fires reached South America. |
|
2020-01-16 15:46:48 |
INTERNATIONAL NEWS: Relief as rain falls over Australian bushfires. |
|
2020-02-04 00:26:44 |
In the wake of the worst bushfire crisis in Australia's history, NSW & Victoria are STILL issuing permits that allow wildlife like kangaroos, wombats, and possums to be shot and killed. |
Шума при таком подходе стало меньше, хотя он по-прежнему присутствует. Однако, проблему со сложностью автоматизации решить еще не удалось. Также этот способ показывает худшую суммаризацию, чем первый. Часто важные новости теряются, так как объединяются между собой в кластера, и в списке ранжирования оказываются слишком низко, чтобы заметить их вручную. Изменение количества кластеров не несет особых плюсов - становится больше кластеров с шумом, и все равно приходится просматривать их все для выявления подходящих предложений для суммаризации, а это не решает проблему автоматики. Поэтому был применен еще один подход, отличающийся от предыдущих.
6.3.5 Вероятностная суммаризация
Данный метод строит суммаризацию на основе самых частых твитов. Если учесть, что в нашей коллекции все так же присутствуют ретвиты, то этот подсчет будет информативным. В таком подходе не ясно, будут ли лидировать более заспамленные сообщения или важная информация. Было опробовано два способа: поиск самых частых твитов среди оригинальных текстов и поиск самых частых предложений среди обработанных (приведенных к одному регистру, лематизированных и без пунктуации и стоп слов).
Поиск среди самых частых твитов, даже без разделения на кластера и временные сегменты, не дал хороших результатов:
1. This is a, and we need the to ACT LIKE IT. ask the future president about their plan!
2. I've just signed the open letter to stand in solidarity with survivors and force the Australian government to recognize & address the. Will you do the same?
3. Urgent Action Plan Needed to from Extinction - Sign the Petition! via
4. In the wake of the worst bushfire crisis in Australia's history, NSW & Victoria are STILL issuing permits that allow wildlife like kangaroos, wombats, and possums to be shot and killed. This must end NOW. SPEAK OUT:
5. Pray for Australia
6. Hi and -- cities need to take charge on climate action! Will you lead the way by declaring a and implementing an emissions reform plan in your city?
7. The planet is in crisis. Tell congress to declare a now:
Из данной суммаризации видно, что самые частые твиты - флешмобы и призывы к обсуждению, которые появились в результате того, что, люди копировали и ретвитили одни и те же записи, призывая других к определенным действиям. Такие сообщения массово ретвитятся другими пользователями, но не несут никакой полезной информации о событии. Поэтому, несмотря на простоту данного подхода, его результаты не могут устраивать. Теперь рассмотрим другой способ подсчета самых частых текстов.
Перед поиском среди самых частых обработанных предложений мы разделили коллекцию на 10 временных сегментов, а каждый из них кластеризовали на отдельные кластера. Самые частые предложения считались в каждом кластере по отдельности, после чего топ-4 предложения просматривались вручную. Те, что являлись фактами и содержали важную информацию, добавлялись в таймлайн:
Таблица 6.3.4 Суммаризация Австралийских пожаров
2020-01-03 19:42:57 |
We have lost over 500 million native animals. |
|
2020-01-04 00:29:32 |
Two people have died in the fires. |
|
2020-01-04 01:07:39 |
Over 200 arsonists caught lighting fires in Australia. |
|
2020-01-10 13:09:45 |
Arson is not the reason for the catastrophic fires in Australia. |
|
2020-01-17 00:15:27 |
A Hindu center burns down in Australian. |
|
2020-01-29 19:44:50 |
Australia's Platypuses Are Invisible Victims of the Bushfires. |
|
2020-02-03 15:12:04 |
Government purposely not stopping the fire. |
|
2020-02-11 01:43:17 |
Nature at its best; rain after fire. |
Способ оказался простым, но не эффективным. В данном таймлайне опущено большинство событий, найденных нами ранее другими способами. В основном, по частоте лидируют предложения с призывами, флешмобами и другими видами шума. Поэтому данная суммаризация не является актуальной с точки зрения получения информации о событиях.
6.3.6 Эмбеддинги модели BERT и косинусная близость
Последний подход к суммаризации, рассмотренный в данной работе, основывается на архитектуре BERT (13). Подход похож своими этапами работы на получение суммаризации с помощью TF-IDF, только вместо вектором TF-IDF каждому предложению сопоставляются эмбеддинги (14), полученные с помощью модели BERT. После векторизации все эмбеддинги так же кластеризуются, а потом сравниваются с центром кластера с помощью косинусной близости (15). Затем предложения ранжируются по косинусной близости. Чем меньше близость - тем выше ранг предложения.
Полученные предложения с наивысшим рангом в каждом кластере рассматриваются в качестве суммаризации.
Таблица 6.3.5. Суммаризация Австралийских пожаров
2020-01-03 22:07:22 |
Just a reminder that about 60% of Australia is on fire, half a billion animals have died 15 people have died I currently live where the black circle is Not trying to annoy the TL but this major issue is only starting to get some coverage internationally. |
|
2020-01-04 01:10:43 |
200+ homes have been destroyed 500 MILLION animals burnt alive and the fires are STILL going after 3 months. |
|
2020-01-04 06:11:37 |
Promoting his government's superior action on an emergency crisis NOW I HAVE SEEN IT ALL. |
|
2020-01-05 13:40:35 |
These pictures from Australia are just heartbreaking Almost 15 million hectares burnt & 480 million animals have been killed by bushfires in Australia so far. |
|
2020-01-06 14:00:32 |
ongoing fires in Australia have killed 500 million animals,have burned 15 million acres and 30% of the koala population has perished during one of the worst natural disasters in Australia,absolutely heartbreaking times for Australia. |
|
2020-01-07 18:01:05 |
it is reported over 500 million animals have died in the fires killing 10,000 Indian camels is a step the Australians are taking so the countries drinking water doesn't run out. |
|
2020-01-07 21:57:05 |
Now we hear the truth about the Victimized by arsonists and nonsensical global warming tree clearing rules. Can the media stop lying about the cause, this kind of idiotic policy is going to get more people homeless and killed. |
|
2020-01-10 02:46:12 |
Thousands of volunteer crafters are making bat wraps,bird nests,joey pouches,etc for very few animal survivors of the fires that are ravaging Australia. |
|
2020-01-11 15:38:11 |
World Rallies To Demand Climate Action As Australia Burns ' | | The Ferocity & Tragedy Of Australia's Bushfires, Which Have Claimed 26 Lives, Razed More Than 2,000 Homes, Have Shocked The Nation. |
|
2020-01-24 11:58:01 |
An interesting piece on the impact of Australia's fires, which have already destroyed nearly 1,900 homes. |
|
2020-01-31 04:52:58 |
Yes, about 35% of Australian bushfires are started by arsonists but the extensive spread and intensity this season is escalated due to drought ravaged landscapes, erratic weather and a dire lack of preparedness. |
Как видно из составленного таймлайна, обученная модель выдает предложения, совсем не похожие на предыдущие суммаризации. Тексты более развернуты и менее похожи на сухие факты. Наибольшим рангом чаще всего обладают твиты с оценкой ситуации пользователями. Все выбранные предложения стояли на первом или втором месте в списке ранжирования, поэтому можно сказать, что модель обладает существенным плюсом: она полностью автоматизирована и не нуждается в рассмотрении предложений вручную. В некоторых случаях 1 и 2 предложения были шумом, однако можно точно сказать, что всегда суммаризация кластера наиболее точно передана в 1 или 2 предложении.
Таким образом, в этом подходе проблема автоматизации решена. С другой стороны, данная суммаризация - не лучший результат и сильно уступает первому подходу.
В будущем можно развивать оба подхода (так они превосходят остальные), делая в первом акцент на большую автоматизацию, а во втором - на точность предсказаний.
Заключение
Были протестированы несколько походов к суммаризации, качество которых мы можем оценить по готовым таймлайнам. После проведенной ручкой обработки, все получились читаемыми и информативными. Первый подход получил наиболее полную суммаризацию, однако для него есть и пути развития. Улучшить автоматизацию процесса, рассмотреть другие методы разбиения данных, протестировать на других ключевых словах, а, следовательно, на других событиях. Последний подход исправляет ошибки первого, однако для него тоже есть пути развития - улучшить суммаризацию, получить больше фактов из данных. В целом, данная работа показала, что при правильной обработке данных из Твиттера можно получить удобный таймлайн интересующего события, что может избавить пользователя от необходимости просматривать различные новостные источники в поисках всех фактов события.
Список источников
1. https://www.alexa.com/siteinfo/twitter.com
2. https://www.internetlivestats.com/twitter-statistics/
3. Shen C. et al. A participant-based approach for event summarization using twitter streams //Proceedings of the 2013 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies. - 2013. - С. 1152-1162.
4. McKeown K. et al. Towards multidocument summarization by reformulation: Progress and prospects. - 1999.
5. Louis A., Newman T. Summarization of business-related tweets: A concept-based approach //Proceedings of COLING 2012: Posters. - 2012. - С. 765-774.
6. Olariu A. Efficient online summarization of microblogging streams //Proceedings of the 14th Conference of the European Chapter of the Association for Computational Linguistics, volume 2: Short Papers. - 2014. - С. 236-240.
7. Yang X. et al. A framework for summarizing and analyzing twitter feeds //Proceedings of the 18th ACM SIGKDD international conference on Knowledge discovery and data mining. - 2012. - С. 370-378.
8. Vanderwende L. et al. Beyond SumBasic: Task-focused summarization with sentence simplification and lexical expansion //Information Processing & Management. - 2007. - Т. 43. - №. 6. - С. 1606-1618.
9. Daniel N., Radev D., Allison T. Sub-event based multi-document summarization //Proceedings of the HLT-NAACL 03 on Text summarization workshop-Volume 5. - Association for Computational Linguistics, 2003. - С. 9-16.
10. Schneider K. M. A comparison of event models for Naive Bayes anti-spam e-mail filtering //Proceedings of the tenth conference on European chapter of the Association for Computational Linguistics-Volume 1. - Association for Computational Linguistics, 2003. - С. 307-314.
11. https://github.com/taspinar/twitterscraper
12. https://pypi.org/project/langdetect/
Терминологический словарь
1. Биграмма - пара последовательных звуков, слогов, слов или букв.
2. TF-IDF (от англ. TF -- term frequency, IDF -- inverse document frequency) -- статистическая мера, используемая для оценки важности слова в контексте документа, являющегося частью коллекции документов или корпуса. Вес некоторого слова пропорционален частоте употребления этого слова в документе и обратно пропорционален частоте употребления слова во всех документах коллекции.
3. Хештемг (метка) (англ. hashtag от hash -- знак «решётка» + tag -- метка) -- ключевое слово или несколько слов сообщения, тег (пометка), используемый в микроблогах и социальных сетях, облегчающий поиск сообщений по теме или содержанию и начинающийся со знака решётки.
4. Лайк (от английского like) - это средство, помогающее пользователю интернета выразить свое одобрение к выложенному контенту в социальных сетях и на других интернет-ресурсах.
5. Эмомдзи (от яп. ? -- картинка и Щюн® -- знак, символ; произношение: [emo?i]) -- язык идеограмм и смайликов, используемый в электронных сообщениях и веб-страницах, а также сами пиктограммы.
6. Лемматизамция -- процесс приведения словоформы к лемме -- её нормальной (словарной) форме.
7. Ретвит - вторичная публикация сообщения, размещенного другим пользователем в Твиттере, со ссылкой на источник.
8. JSON (англ. JavaScript Object Notation, обычно произносится как /?d?e?s?n/ JAY-s?n [2]) -- текстовый формат обмена данными, основанный на JavaScript.
9. Никнемйм (ник; англ. nickname /?n?kne?m/ -- первоначально «кличка, прозвище», от древнеанглийского an eke name -- «другое имя», перешедшее в одинаково звучащее «a nick name»)[1], также сетевое имя[2] -- псевдоним, используемый пользователем в Интернете, обычно в местах общения (в блогах, форумах, чатах).
10. Стоп-слова (шумовые) - слова, которые совсем не учитываются поисковыми машинами. Не учитываются не только при выдаче сайтов при поисковом запросе, но и при индексации страницы сайта, блога.
11. Томкен (англ. token) -- объект, создающийся из лексемы в процессе лексического анализа («токенизации», от англ. tokenizing).
12. Анамлиз тонамльности темкста (сентимент-анализ, англ. Sentiment analysis, англ. Opinion mining[1]) -- класс методов контент-анализа в компьютерной лингвистике, предназначенный для автоматизированного выявления в текстах эмоционально окрашенной лексики и эмоциональной оценки авторов (мнений) по отношению к объектам, речь о которых идёт в тексте.
13. BERT - нейронная сеть от Google, показавшая с большим отрывом state-of-the-art результаты на целом ряде задач. С помощью BERT можно создавать программы с ИИ для обработки естественного языка: отвечать на вопросы, заданные в произвольной форме, создавать чат-ботов, автоматические переводчики, анализировать текст и так далее.
14. Эмбеддинг - сопоставление произвольной сущности (например, узла в графе или кусочка картинки) некоторому вектору.
15. Косинусная близость - мера сходства между двумя векторами предгильбертового пространства, которая используется для измерения косинуса угла между ними.
Размещено на Allbest.ru
Подобные документы
Представление (построение, создание) списка данных в виде линейного однонаправленного списка. Формирование массива данных. Вывод данных на экран. Алгоритм удаления, перемещения данных. Сортировка методом вставки. Алгоритм загрузки данных из файла.
курсовая работа [2,1 M], добавлен 16.05.2015"Метод ключевых слов" как один из распространенных методов перехода к математической модели документа. Закономерности распределения частоты слов, отраженные в законе Ципфа. Экспериментальная оценка статистического анализа текста по модели TF*IDF.
реферат [591,7 K], добавлен 24.06.2009Теоретическое описание линейного списка с алгоритмами реализации основных операций. Понятия, механизмы объектно-ориентированного программирования. Возможности проектируемого контейнера пользователей, его реализация на основе линейного списка с заголовком.
курсовая работа [475,2 K], добавлен 26.02.2015Структура записей входного массива. Описание основных типов данных. Алгоритм программы: присвоение начальных значений переменных, чтение списка из файла, вывод данных на экран, выполнение обработки данных, сохранение списка в файл. Листинг программы.
курсовая работа [325,2 K], добавлен 28.12.2012Исследование программного средства для управления базой данных с информацией о фильмах. Составление алгоритма удаления и добавления элемента в указанное место двунаправленного списка. Характеристика поиска, вывода на экран и сортировки элементов списка.
курсовая работа [94,5 K], добавлен 23.09.2011Изучение и освоение инструментальных средств Excel для управления базами данных. Правила формирования списка на рабочем листе Excel. Простая и многоуровневая сортировка списка. Варианты фильтрации данных в таблице. Вычисляемый критерий и его создание.
лабораторная работа [297,2 K], добавлен 15.11.2010Расположение элементов списка в памяти. Информация о полях структуры TMember. Логическая структура двусвязного кольцевого списка. Логические схемы наиболее важных операций со списками. Алгоритмы обработки основных структур. Руководство пользователя.
курсовая работа [2,3 M], добавлен 27.08.2012Мотивы и особенности лексики произведений "О дивный новый мир" О. Хаксли и "1984" Дж. Оруэлла. Анализ, сравнение и обобщение ключевых слов и воссоздание художественного мира романов. Создание веб-приложения "Словарь ключевых слов британских антиутопий".
дипломная работа [2,6 M], добавлен 21.06.2016Написание программы, исходя из конкретных данных. Создание двунаправленного линейного списка. Main - главная программа, содержащая меню. Занесение данных в память списка. Результирующий файл. Значения всех числовых данных из диапазона целого типа данных.
курсовая работа [2,3 M], добавлен 22.12.2010Правила формирования списка на рабочем листе. Что понимается под структурой списка. Как осуществляется ввод данных. Простая сортировка списка. Интерфейс и функции приложения PowerPoint. Создание, редактирование и форматирование текстового документа.
лабораторная работа [25,1 K], добавлен 16.01.2015