Разработка алгоритма для выделения связок типа «герой-действие» из текста литературного произведения
Спиридонова А.П., НИУ Высшая школа экономики, МИЭМ
Аннотация
Данная работа посвящена разработке алгоритма синтаксического анализа и дальнейшей обработки текста литературных произведений для установления логической связи между именем литературного героя и действием в предложении и выделением информации о них.
1 Введение
Данная работа посвящена исследованию методов анализа текста и разработке алгоритма дальнейшего извлечения требуемой информации. Извлечение информации (information extraction) - представляет собой процесс информационного поиска и анализа, в результате которого из неструктурированного текста можно выделить необходимую информацию в структурированном виде. В большинстве случаев, извлечение информации представляет собой выделение сущностей, отношений, поиск слов и/или предложений по заданной маске. Подобная процедура является одним из основополагающих этапов предварительной обработки текста, вне зависимости от его тематики и стилистики.
Извлечение информации, равно как и анализ текста, необходимы практически во всех областях науки. Любые алгоритмы и программы, которые позволят облегчить работу или, в идеале, вообще избежать вмешательства человека, сейчас крайне востребованы. В частности, алгоритм, являющийся решением поставленной задачи, при определенных незначительных видоизменениях может быть применен более чем в трех различных отраслях.
Целью данной работы является нахождение связей между героями литературного произведения и отслеживание их действий на протяжении всего произведения. В частности, необходимо извлечь из текста конструкции типа «герой-действие». Для этого необходимо выполнить несколько задач: найти и выделить героев книги, найти и классифицировать действия героев, и, наконец, извлечь всю необходимую информацию из размеченного текста. Выполнение поставленных задач позволит создать универсальный алгоритм обработки художественного текста, который может быть полезен при лингвистических и филологических исследованиях.
2 Обзор предметной области
Данная работа включает в себя несколько этапов, на каждом из которых задействованы различные методы и инструменты. Для более полной картины, рассмотрим научные изыскания для каждого из них в отдельности.
2.1 Извлечение именованных сущностей
Одной из первых работ в области поиска именованных сущностей считается научная статья Лизы Рау (1991). Она предложила ввести набор правил и использовать эвристические подходы для эффективного выделения названия компаний в тексте. За более чем двадцать лет было предложено огромное количество решений, как частных задач, так и общей задачи оптимизации поиска именованных сущностей. Задача была представлена на конференциях, посвященных данной тематике: Conference of Natural Language Learning (CoNLL), Message Understanding Conference (MUC), International Conference on Language Resources and Evaluation (LERC). Кроме этого, существует несколько обзорных статей по данной теме. В частности, Девид Надю и Сатоши Секин провели подробный обзор методов, которые принято использовать при выделении и классификации сущностей, за период с 1991 по 2006 года.
При поиске именованных сущностей наиболее популярны методы машинного обучения. Такие системы сначала обучаются на заранее размеченных текстах, составляют свою собственную базу данных. После окончания обучения система может работать с произвольными неразмеченными документами. Тем не менее, полезность тренировочных наборов с годами уменьшается: вряд ли система сможет распознать название компании, которая была образована в 2016 году, если обучение проходило на наборах от 2000 года. Помимо этого, с течением времени предлагались и разрабатывались новые принципы поиска именованных сущностей, начиная от вариаций методов обучения, заканчивая моделями поиска и обработки.
Еще одним важным фактором является оценка работы систем поиска именованных сущностей. Существует несколько способов оценить, насколько верно были обработаны именованные сущности. Так, например, на серии конференций MUC размеченные тексты оценивались с двух позиций: правильно ли определена граница и правильно ли определен класс сущности.
2.2 Анализ текста
Существует большое количество вариаций анализов, необходимых для различных задач. В нашем же случае, упор будет делаться на анализ отношений между именованными сущностями и более общий, синтаксический, анализ всего текста.
Анализ отношений между сущностями необходим не только для правильной разметки текста, но и для дальнейшей, более глубокой работы с ними. Аннотаторы просматривали текст на наличие текстовых фрагментов, соответствующих двум различным именованным сущностям, фиксировали тип сущностей и создавали модель отношений, возможных для данного типа. Для классификатора теперь появились новые задачи: просмотреть текст на наличие или отсутствие отношений между парой сущностей и, в случае, если они связаны, определить тип существующих отношений. Были выделены категории отношений: специфические для предметной области и общие.
Персональные мать, женат на PERS —► PERS
Организационные директор, оф. представитель PERS ORG Предметные владеть, производить (PERS|ORG) -• OBJ
Рис. 1 Пример отношений ИС
Возможность связи между сущностями определялась по набору признаков. К лексическим контекстуальным признакам относились расстояние между аргументами и количество иных именованных сущностей между ними, слова, непосредственно предшествующие аргументам и следующие сразу после них. Помимо лексических признаков не менее важную роль играют синтаксические контекстуальные признаки. Классификатор при анализе текста проверяет наличие определенных синтаксических конструкций, расстояние и путь между аргументами в синтаксическом дереве.
Синтаксическое дерево считается наиболее популярной конструкцией синтаксического анализа. Так, в 2004 году, А. Кулотта и Дж. Соренсен предложили модель дерева, связывающего каждую пару сущностей. Спустя два года, группа исследователей во главе с Де Марнеф предложили усовершенствованную модель синтаксических деревьев. Так, теперь обрабатывались не пары сущностей, а тройки, причем для всего предложения выбиралось главное - корневое - слово, к которому привязывались остальные. Таким образом, исследователи получили ориентированный граф отношений в одном предложении. В 2014 году подобное представление информации о синтаксических связях было принято «Золотым стандартом».
3 Методы решения
Выполнение всей работы можно разбить на три условных этапа: предварительная обработка текста, построение синтаксических связей и извлечение информации. Рассмотрим подробнее каждый из этапов.
Предварительная обработка включает в себя не только поиск именованных сущностей, но и удаление лишней информации из текста. Термин «именованная сущность», или "Named Entity" обозначает объект, имеющий название, имя или некий идентификатор. В нашем случае, мы будем искать в тексте упоминания героев произведения, т.е. нас будут интересовать слова и словосочетания, относящиеся к классу PERSON. Для этого воспользуемся программой, предоставленной Стенфордским университетом, "Stanford NER" (NER - Named Entity Recognition). На вход программа получает текст произведения в стандартном текстовом формате, после чего размечает его на три стандартных класса: PERSON, ORGANIZATION, LOCATION. Как было сказано выше, на данном этапе нас интересуют исключительно имена персонажей, соответственно, все внимание будет обращено на класс PERSON. Поскольку необходимо выявить связь между героем и его действием, удалим все лишние предложения. Лишними предложениями будем считать все, где не содержатся упоминания персонажей, т.е. все описания, рассуждения и диалоги. Однако, чем богаче язык, тем больше синонимов применяет автор для замены имени, соответственно, при таком подходе мы теряем некоторую информацию. Тем не менее, на данном этапе этим было решено пренебречь.
Алгоритм «вычистки» текста довольно прост: проходя по каждому предложению текста, программа удаляет те, в которых не встретилось слов, отмеченных тегом <PERSON>. При
повторном проходе текста, удаляем все диалоги, поскольку в них не содержатся связи типа герой-действие, а лишь возможны их упоминания. Текст готов к дальнейшей работе.
Необходимо отметить, что уже на этом этапе могут появиться ошибки: автоматическая разметка текста иногда неверно интерпретирует ту или иную сущность, присваивая ей другой класс. Таким образом, можем получить лишние предложения с ошибочными сущностями. К сожалению, исправить это возможно только ручной вычиткой предложений.
Вторым этапом идет синтаксический анализ текста. Необходимо не только построить деревья взаимоотношений слов внутри каждого предложения, но и понять, какую роль - активную или пассивную - играет тот или иной глагол действия. Для решения этой задачи используется программа Stanford Core Dependencies, предоставленная также Стенфордским университетом. На вход, как и в предыдущем этапе, она получает текст, предварительно обработанный нами. А вот информация, получаемая на выходе, может быть представлена в нескольких форматах. Stanford Core Dependencies может выдать построенные деревья в виде сводной таблицы разобранных предложений. Вторым вариантом является разбор каждой пары узлов дерева по отдельности. Нас будут интересовать таблицы, поскольку подобное представление информации удобнее для дальнейшей работы. Таблица одного предложения представляет собой анализ каждого слова. Разбираемому слову назначаются поля определенного содержания: номер слова в предложении, само слово, его грамматическая роль в предложении, синтаксическая роль и номер слова-родителя в предложении.
На данном этапе следует пояснить, каким образом строится дерево предложения. Выбирается главное (или корневое) слово, от которого начинается построение синтаксических связей. Для каждого зависимого слова указывается порядковый номер слова-родителя в предложении. В подавляющем большинстве случаев, корневым словом является глагол-сказуемое или же часть составного сказуемого. Данный факт сильно облегчает дальнейшую работу.
В заключительном этапе необходимо не только извлечь из текста искомую информацию, но и предварительно преобразовать полученные таблицы в удобный для работы формат. Учитывая, что каждому слову назначается несколько полей, можно преобразовать каждую строчку таблицы, содержащую информацию о слове, в объект с полями «Номер в предложении», «Слово», «Грамматическая роль», «Номер слова-родителя» и «Синтаксическая роль». Соответственно, тогда каждое предложение можно будет представить в виде динамического массива объектов, каждую главу произведения - в виде массива предложений. Данная структура позволит с легкостью создать алгоритм извлечения связок «герой-действие».
После преобразования таблиц в удобный для нас формат, необходимо установить несколько правил, по которым будет выделяться искомая информация. После анализа полученных данных был разработан следующий алгоритм извлечения и набор правил:
1. Находим корневое слово, если оно является и глаголом - запоминаем его номер;
2. Проходя по каждому слову предложения проверяем следующие условия:
a. Родителем является корневое слово или же само слово является корнем предложения;
b. Слово является объектом, а не субъектом предложения, т.е. играет активную роль в действии;
c. Слово относится к грамматическому классу персон или является глаголом;
3. Если все условия соблюдены, то извлекаем слово.
Таким образом, из каждого предложения будут извлечены имя персонажа и все действия, которые к нему относятся, что и является искомым результатом.
Однако же на последних двух этапах встречаются серьезные ошибки двух типов: неправильный синтаксический разбор сложных предложений, и лишняя извлеченная информация. Если во втором случае проблема решается вводом дополнительных уточняющих условий, то исправить ошибочный разбор сложносочиненных предложений крайне затруднительно.
4 Исходные данные и полученные результаты
Для разработки данного алгоритма были выбраны англоязычные произведения поскольку используемые сторонние программы не содержат в себе русскоязычных парсеров. В частности, за основу была взята первая книга серии «Гарри Поттер» автора Дж.К.Роулинг. Выбор основывался не только на довольно простом языке изложения, но и на том факте, что книга является частью серии, что дает простор для исследований в будущем.
При выделении именованных сущностей была обнаружена еще одна проблема: опечатки при сканировании текста. Если в имени была допущена опечатка, оно будет считаться отдельным
объектом-сущностью. Помимо этого, разбиение полных имен на составляющие так же является причиной увеличения набора сущностей. В дальнейшем вторую проблему возможно будет решить объединением наборов. После поиска и выделения сущностей, получаем текст, размеченный следующим образом:
He put the receiver back down and stroked his mustache, thinking... no, he was being stupid. <PERSON>Potter</PERSON> wasn't such an unusual name. He was sure there were lots of people called <PERSON>Potter</PERSON> who had a son called <PERSON>Harry</PERSON>. Come to think of it, he wasn't even sure his nephew was called <PERSON>Harry</PERSON>. He'd never even seen the boy. It might have been <PERSON>Harvey</PERSON>.
После удаления незначимых предложений и тегов принадлежности классам, можно прогнать полученный текст через программу синтаксического анализа. Предоставленный выше отрывок будет выглядеть так:
1 Come VB 11 Л1 -
1 to TP, _ 3 mark
3 think VB 1 _
4 of IN 5 case_
5 it PRP _ 3 1Ш>4 _ _
б , t _ 11 йшй - _
7 he PRP _ 11 _ _
3 was _ VBD _ 11 cop
9 ict _ _ RB 11 neg _ _
10 even _ RB ii ззшзй.-
11 sure_ JJ 0 root _
12 his prps i3 аш&ет
13 nephew _ nn 15 [ШЫййй
14 was _ _ VBD _ 15 змжз^ _ _
15 called VBN и esam _
16 Harry _ nnp 15 _
17 - - - 11 е1й _ _
1 It prp _ 5 _ _
2 might _ MD 5 aux
3 have VB 5 aux
4 been VBN 5 cop _ _
5 t&tm _ nnp 0 c9i&_ _
6 _ _ _ 5 шзй _ _
Potter
was _
Гй _ such_ an _ unusual name
NNP
VBD _
RB
JJ
DT
JJ
NN
7
cop
neS _ _
dst _ _ 7
0 root_
ИШЙ _
He
was _ sure_ there were lots _ of
8 people
9 called
10 Potter
11 who_
12 had _
13 a
14 son
15 called
16 Harry
17 .
PRP _ 3 VBD _ 3 JJ _ 0
EX
VBD_ NNS_ 5 IN _ 3 NNS_ VBN _ NNP_ WP _ 12 VBD _ 10 DT _ 14 NN _ 12 VBN_ N NP_ 3
шнй _
cop _ _
root _ _ 5
3 sssm шнй _
case_ _
6 шшй s as! _
•шШ _
dst _ _ SsfeL _ as! _ 15 5ШШЯ BJUffit _
Рис. 2 Синтаксическая таблица предложений
Соответственно, каждая строчка таблицы представляет собой описание одного слова предложения. Как было сказано выше, преобразуем ее в слово-объект для дальнейшей работы. Реализовав алгоритм выделения информации, увидим, что для приведенного отрывка текста никакой информации извлечено не будет, поскольку предложения не проходят необходимые условия. Для демонстрации результатов, приведем другой отрывок текста:
Harry was now trying hard not to panic. Hagrid must have forgotten to tell him something you had to do, like tapping the third brick on the left to get into Diagon Alley. Harry swung round.
После работы алгоритма, будет выведено следующее (цифрой обозначается номер предложения в разборе):
0 Harry 1 Hagrid 2 Harry 0 was 1 have 2 swung
□ trying 1 forgotten
Рис. 3 Полученные связки "герой-действие"
Учитывая ошибки, описанные выше, точность выделения искомых конструкций ниже, чем хотелось бы: всего 78% при ожидаемых 80%. Увеличить точность можно уточнив условия выборки информации.
Заключение
Поставленная задача выделения конструкций типа «герой-действие» была выполнена, однако же полученные результаты нуждаются в улучшении. Таким образом, в дальнейших планах стоит исправление алгоритма для увеличения точности выборки. Помимо этого, следует решить проблему потери информации, содержащейся в удаленных диалогах и предложениях с помощью поиска кореферентных ссылок в тексте. Для более удобного восприятия полученной информации возможно также провести онтологический анализ выделенной информации. Дальнейшая разработка алгоритма может привести к созданию автоматического аннотатора англоязычных произведений, графическому представлению содержания книги в виде кластеров действий персонажей с привязкой ко времени.
Список литературы
Catherine Blake. The role of sentence structure in recognizing textual entailment. In Proceedings of the ACL-PASCAL Workshop on Textual Entailment and Paraphrasing, pages 101-106, Prague, June 2007.
Katrin Fundel, Robert Kuffner, and Ralf Zimmer. RelEx - relation extraction using dependency parse trees. Bioinformatics, 23, 2007.
Bocharov V. V., Alexeeva S. V., Granovsky D. V., Protopopova E. V, Stepanova M. E., Surikov A. V. Crowdsourcing morphological annotation. In Computational Linguistics and Intellectual Technologies: Proceedings of the International Conference "Dialog 2013", pages 121-126, 2013.
Tina Kluwer, Hans Uszkoreit, and Feiyu Xu. Using syntactic and semantic based relations for dialogue act recognition. In Proceedings of the 23rd International Conference on Computational Linguistics, COLING '10, pages 570-578, 2010.
Eckel B. Thinking in Java, 4th Edition, 2006
Daniel Jurafsky and James H. Martin. 2008. Speech and Language Processing: An Introduction to Natural Language Processing, Speech Recognition, and Computational Linguistics. 2nd edition. Prentice-Hall.
http://nlp.stanford.edu/
https ://docs.oracle.com/