Рефераты - Афоризмы - Словари
Русские, белорусские и английские сочинения
Русские и белорусские изложения

Автоматическая адаптации учебных текстов для изучающих русский язык, её решение на лексическом уровне

Работа из раздела: «Программирование, компьютеры и кибернетика»

Содержание

Введение

Глава 1. Проблема автоматического упрощения текста и существующие подходы к её решению

1.1 Задача автоматического упрощения текста

1.2 Способы и методы автоматического упрощения текста

1.3 Существующие приложения и инструменты для автоматического упрощения текста

Глава 2. Применение автоматического упрощения для учебных текстов

2.1 Особенности задачи автоматической адаптации текста для изучающих иностранный язык

2.2 Автоматическая адаптация учебных текстов для изучающих русский как иностранный: существующие подходы и приложения

Глава 3. Реализация метода автоматического упрощения учебных текстов для ТРКИ-1

3.1 Выбор средств разработки и структура программы

3.2 Создание словарей замен

3.3 Построение языковой модели

3.4 Апробация результатов и дальнейшие направления исследования

Заключение

Список использованной литературы

Приложения

Введение

Актуальность исследования

Проблему данного исследования можно рассматривать в разных аспектах. С одной стороны, тема автоматической адаптации текста в настоящее время становится всё более интересной для исследователей в области автоматической обработки естественного языка. Очевидна необходимость компьютерных инструментов для автоматического упрощения в таких сферах, как подготовка текстов для читателей, страдающих афазией, нарушениями слуха, а также читателей с ограниченными интеллектуальными возможностями. Эти инструменты могут быть использованы также, к примеру, в создании текстов, предназначенных для детей, взрослых с низким уровнем грамотности и изучающих иностранные языки. Кроме того, инструменты для автоматической адаптации могут быть использованы и как компоненты в приложениях для обработки естественного языка, имеющих другую направленность, при разработке которых исследователи сталкиваются с необходимостью обработки длинных предложений со сложными синтаксическими структурами.

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

С другой стороны, вопросы адаптации текста всегда оставались актуальными в сфере обучения иностранным языкам. Несмотря на то, что некоторые методики обучения второму языку подразумевают использование только неизменённых текстов, специально упрощённые тексты на изучаемом языке также находят широкое применение. Адаптированные материалы достаточно просты для восприятия даже на начальных этапах изучения языка и могут быть приспособлены для демонстрации употребления определённых языковых структур, что позволяет оптимизировать процесс обучения языку. Однако адаптация текста, производимая вручную, может занять существенное количество времени. Эта проблема особенно актуальна при написании учебных пособий, поскольку материалы, содержащиеся в них, должны не только соответствовать определённому уровню изучения языка, но и быть достаточно современными, следовательно, их подготовка должна занимать как можно меньше времени. Это обуславливает потребность в создании инструментов для автоматического упрощения учебных текстов.

Теоретическая основа исследования

Проведенное исследование опирается, прежде всего, на работы, описывающие автоматическое упрощение текста как исследовательскую проблему и содержащие сведения об истории её разработки (A. Siddharthan; L. Feng; M. Shardlow). Также были использованы исследования, подробно представляющие отдельные виды автоматического упрощения, такие, как гибридное автоматическое упрощение (M.A. Angrosh, A. Siddharthan), построение дерева зависимостей для упрощения сложных структур (M.J. Aranzabe et al.), и, как наиболее отвечающее направлению данной работы - автоматическое упрощение при помощи замены синонимов (R. Keskisдrkkд; J. De Belder et al.). Кроме того, были рассмотрены и работы, в которых автоматическое упрощение являлось лишь средством достижения исследовательской цели (B. Drndarevic, H. Saggon; S. Alusio et al.), а также исследования, посвящённые оценке систем автоматического упрощения, в частности, применению удобочитаемости как меры эффективности подобных программ (S. Alusio et al.; S. Crossley et al.).

В ходе разработки метода автоматического упрощения текстов необходимо было опираться на работы, посвящённые вопросам, тесно связанным с созданием систем автоматического упрощения, таким, как определение мер семантического и контекстного сходства (A. Panchenko et al.; I. Spasic et al.; J. Jiang et al.; J. Kandola et al.) или распознавание смысла слова (R. Navigli et al.). Для разработки языковой модели были использованы работы, посвящённые использованию н-граммов в лингвистике и построению языковых моделей на основе н-граммов (D. Kocharov; А.А. Ланко; В.Ю.Гудков, Е.Ф. Гудкова).

Для рассмотрения современного состояния проблемы автоматического упрощения были изучены работы, посвящённые созданию и функционированию современных приложений для автоматической адаптации текстов, имеющих самые разнообразные задачи: повышение доступности текстов научной и медицинской направленности для читателей-неспециалистов (G. Grigonyte et al.; I. Spasic et al.), упрощение текстов из Википедии (W. Coster et al.; K. Woodsend et al.), текстов для детей (J. De Belder et al.) или людей с дислексией (L. Rello et al.), а также, разумеется, для изучающих иностранный язык (S.E. Petersen, M. Ostendorf). Для изучения специфики автоматического упрощения текстов на русском языке были использованы исследования, посвящённые разработке приложений для адаптации русскоязычных текстов (Н.В. Карпов, В.Г. Сибирцева; Т.С. Елипашева, Ю.Н. Баранова); также были рассмотрены работы о создании подобных приложений для шведского (G. Grigonyte et al.), испанского (S. Bott et al.) и баскского языков (M. J. Aranzabe et al.).

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

Цель: исследовать проблему автоматической адаптации учебных текстов для изучающих русский язык и предложить вариант её решения на лексическом уровне.

Объект исследования: способы и методы автоматической адаптации учебных текстов на русском языке.

Предмет исследования: выявление оптимального метода упрощения русскоязычных учебных текстов на лексическом уровне.

Задачи:

1. Проанализировать особенности задачи автоматической адаптации в целом, а также автоматической адаптации учебных текстов;

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

а. Установить, какой функционал должен быть предложен в создаваемой программе для автоматического упрощения текстов для программ РКИ;

б. Выбрать оптимальные средства разработки программы;

в. Реализовать предложенный метод автоматической адаптации учебных текстов с использованием выбранных средств разработки.

3. Опробовать реализованный метод и выявить дальнейшие направления исследования.

Методы исследования: для реализации предложенного в исследовании метода автоматической адаптации текста был выбран язык программирования Python версии 3.4.4; в качестве среды разработки использовался PyCharm версии 5.0. Адаптация осуществлялась посредством частичной синонимической замены, зависящей от контекста. Для грамматической обработки списка синонимов, являющегося частью программы, была использована сторонняя библиотека для Python - pymorphy2, предоставляющая морфологические анализаторы для русского и украинского языков. Для контекстуального подбора синонимов при адаптации текста были использованы языковые модели на символьных н-граммах, извлечённых из учебных текстов для программ РКИ.

Материалы исследования: Синонимы для списка синонимов были автоматически извлечены из онлайн-словаря русских синонимов с сайта slova.zkir.ru, содержащего 163 тысячи слов и выражений из словаря информационной поддержки оценщика и аудитора АSIS (Appraiser Support Info System), а также около 1000 слов из словаря синонимов Н. Абрамова (Н.А. Переферковича), преимущественно глаголов. Основой для списка синонимов послужили перечни слов, являющихся лексическим минимумом для базового, элементарного и первого сертификационного уровней освоения русского языка, а также дополнительный перечень, разработанный в ходе создания программы «Лексикатор».

Для создания языковых моделей использовались тексты из учебников, предназначенных для освоения русского языка на первом сертификационном уровне: «Добро пожаловать в Нижний Новгород» (под общ. ред. Н.В. Макшанцевой), «Дорога в Россию» (3-я часть; В.Е. Антонова, М.М. Нахабина, А.А. Толстых), «Поехали!» в двух томах (С.И. Чернышов, А.В. Чернышова), «Полный вперёд!» (2-я часть; под ред. О.В. Ильиных, Е.А. Потураевой), «Между строк» (под ред. Е.А. Шериной), «Разговоры о жизни» (Н.А. Летова, И.А. Пугачёва, В.В. Яркина). Тексты для тестирования моделей были отобраны из собрания учебно-контролирующих текстов для ТРКИ-1 Н.Г. Большаковой и В.Н. Поваровой. Для апробации программы были использованы тексты, загруженные из сети Интернет.

Структура исследования

В первой главе настоящей работы охарактеризована задача автоматического упрощения текста, существующие способы и методы её решения, а также современные инструменты и приложения для упрощения текста. Вторая глава посвящена вопросу упрощения учебных текстов в целом, а также автоматическому упрощению русскоязычных текстов. В третьей главе представлена практическая часть исследования, в которой предпринимается попытка разработки инструмента для лексического упрощения учебных текстов на русском языке.

Глава 1. Проблема автоматического упрощения текста и существующие подходы к её решению

1.1 Задача автоматического упрощения текста

В узком смысле упрощение текста - это процесс понижения его лингвистической сложности при сохранении переданной в оригинале информации и смысла (Siddharthan, 2014:261). В широком смысле упрощение текста также подразумевает произведение и других операций, таких как смысловое упрощение, при котором упрощается также содержание текста, уточняющая модификация, где для подчёркивания ключевых мест текста используется подробные объяснения, или реферирование, при котором удаляется повторяющаяся и несущественная информация. В любом случае, главной целью упрощения всегда является передача информации в более доступной форме для читателей, чьи навыки чтения ограничены. В эту группу входят не только взрослые с низкой грамотностью, но и дети, инофоны (в том числе изучающие иностранный язык), а также слабослышащие люди, либо же страдающие афазией или дислексией.

Ручное упрощение текста давно применяется на практике для многих групп читателей, однако исследования в области автоматического упрощения начались относительно недавно. Тем не менее, уже сейчас существует немало методик, позволяющих производить автоматическую адаптацию.

Развитие этих методик во многом связано с тем, что инструменты для автоматического упрощения текста могут принести пользу не только людям, но и системам автоматической обработки естественного языка, имеющим другие задачи. Длинные и сложные фразы сложны не только для восприятия читателем, но и для машинной обработки (Feng, 2008: 2). Чтобы более эффективно обрабатывать подобные фразы, можно было бы упрощать их грамматически и структурно для получения более коротких и простых фраз с сохранением информации и смысла исходных.

Упрощение текста можно применять в таких задачах автоматической обработки естественного языка, как парсинг, машинный перевод, автоматическое реферирование и извлечение информации (Feng, 2008:2). При парсинге количество возможных вариантов разбора увеличивается по мере усложнения исходного предложения (Chandrasekar et al., 1997:183), поэтому для уменьшения вероятности ошибки представляется полезным предварительно упрощать поступающие на вход предложения. В машинном переводе длинные сложные предложения также потенциально увеличивают вероятность неправильного перевода, так как увеличивается неоднозначность. Упрощение сложных предложений также приводит к уменьшению количества данных в одной фразе, что облегчает задачу извлечения информации, а также автоматического реферирования.

Как уже говорилось, инструменты для автоматического упрощения могут приносить пользу читателям с различными нарушениями речи. Одним из таких нарушений является афазия - локальное отсутствие или нарушение уже сформировавшейся речи. Проблемы с восприятием и производством речи, вызываемые афазией, могут иметь лексический и синтаксический характер (Feng, 2008:3). Лексическое упрощение, а также уменьшение сложности письменных текстов может сделать их более доступными для лиц с афазией. На способность понимать устную и письменную речь могут повлиять и нарушения слуха (Inui et al., 2003:9), а также ограниченные интеллектуальные возможности индивида. Для таких групп читателей проблему представляет поиск текстов, отвечающих их интересам, но в то же время рассчитанных на их способности к чтению, которые во многих случаях могут не соответствовать таковым у людей их возраста, не имеющих подобных нарушений (Feng, 2008:4). Поэтому в данном случае представляется полезным многоуровневое (лексическое, синтаксическое и смысловое) упрощение текста.

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

Ресурсы, предоставляющие адаптированные тексты для перечисленных групп читателей, уже существуют и активно используются. Таким ресурсом является, к примеру, Simple English Wikipedia, которая предназначена для изучающих английский язык, детей, взрослых со слабыми навыками чтения, а также лиц с различными нарушениями восприятия (Feng,2008:5). Simple English Wikipedia содержит тексты из оригинальной Википедии, вручную упрощённые носителями английского языка. К сожалению, сейчас число статей ограничено и отстаёт от числа статей в обычной версии. Разработка инструментов для автоматического упрощения текста могла бы помочь в расширении Simple Wiki и создании множества других аналогичных ресурсов.

Таким образом, автоматическое упрощение текстов является задачей автоматической обработки естественного языка, заключающейся в замене сложных языковых структур на более простые при сохранении информации и смысла (либо же при дополнительном упрощении доносимой информации). Инструменты для автоматического упрощения могут быть использованы не только в качестве самостоятельных приложений для определённых групп читателей, но и как части других инструментов для обработки естественного языка.

1.2 Способы и методы автоматического упрощения текста

Упрощение текста является сложной задачей в области автоматической обработки естественного языка, в рамках которой может возникнуть необходимость решения многих лингвистических проблем, в зависимости от того, на каком уровне - лексическом, синтаксическом или уровне дискурса - она производится (Feng, 2008:5).

Задача лексического упрощения часто включает замену сложных слов на более простые синонимы. Однако при этом необходимо решить вопросы о том, как идентифицировать сложные слова и как подыскивать им простые замены. Распространённым подходом к решению первого вопроса является использования сведений о частоте слова (Feng, 2008:5).

Необходимо подчеркнуть, что подразумевается частота слова в языке в целом, а не частота его в каком-либо определённом тексте. Слово с меньшей частотой считается менее активно используемым, следовательно, более сложным. Другим подходом, который может быть использован в приложениях для автоматической адаптации текста, является объявление всех слов одинаково сложными и предоставление пользователю возможности решать, какие из них должны быть упрощены.

В инструментах, предназначенных для лексического упрощения англоязычных текстов, распространённым подходом к подбору простого слова для замены является использование онлайн-тезауруса WordNet. WordNet - это семантическая сеть для английского языка, базовыми словарными единицами в которой являются не отдельные слова, а синонимические ряды (синсеты), каждый из которых содержит список синонимов или синонимичных словосочетаний и указатели, описывающие отношения между ним и другими синсетами. Лексическое упрощение также может быть произведено путём перефразирования с использованием предварительного составленного словаря (Inui et al.,2003:5) или объяснения слов с использованием словарных определений. Важным моментом для лексического упрощения (и автоматического упрощения в целом) является применение технологий разрешения лексической многозначности (Shardlow,2014:10).

Данные технологии обычно вводятся на этапе ранжирования синонимов. В настоящей работе лексическое упрощение производится при помощи предварительно составленных словарей, где сложным словам приводятся в соответствие семантически близкие слова, входящие в лексический минимум на уровне ТРКИ-1. Для подбора синонимов, подходящих к данному контексту, используется языковая модель на символьных н-граммах (применяемые инструменты и методы подробно описаны в главе 3).

Синтаксическое упрощение является более сложной задачей, чем упрощение на уровне лексики, поскольку подаваемые на вход тексты нуждаются в предварительном лингвистическом анализе для создания деревьев разбора, которые требуются для синтаксических преобразований (Feng, 2008:5). Синтаксическое упрощение обычно производится в несколько шагов: сначала производится идентификация синтаксических конструкций, которые могут быть упрощены, затем к ним применяются правила упрощения, составленные вручную или автоматически. В зависимости от задачи синтаксического упрощения необходимо учитывать определённые лингвистические факторы.

К примеру, если ведётся разработка инструмента для разделения сложных и сложноподчинённых предложений на более простые, отделения придаточных предложений и словосочетаний, а также перевода пассивного залога в активный (что является основными аспектами синтаксического упрощения во многих исследованиях (Feng, 2008:6), возникает необходимость выделения и маркирования соответствующих лингвистических черт. Эти черты включают соединительные и подчинительные союзы, относительные местоимения, границы фраз и т.п. Для упрощения идентифицированных сложных предложений может потребоваться ещё больше данных. Например, для упрощения сложного предложения с придаточным слово или словосочетание, к которому относится придаточное, должно быть аннотировано с указанием грамматических характеристик (например, числа), а также характеристик, указывающих на отношения внутри предложения (субъект действия, объект и т.п.). Чтобы трансформировать пассивную конструкцию, необходимо идентифицировать производителя действия, а также аннотировать глагол с указанием вида, залога и времени.

Многие технологии автоматической обработки естественного языка позволяют производить необходимые для синтаксического упрощения действия. К примеру, часто для распознавания сложных структур, которые можно было бы упросить, используются такие технологии, как автоматическая морфологическая разметка, парсинг, проверка на соответствие шаблону и анализ пунктуации. При помощи парсинга анализируются зависимости между группами слов в предложениях. Поскольку парсеры, нацеленные на полный и детальный анализ, более подвержены ошибкам, если на вход принимается сложное предложение, для автоматического упрощения чаще используются парсеры, идентифицирующие отдельные структуры в предложении - например, именные и глагольные словосочетания, - но не анализирующие их глубоко (так называемые shallow parsers) (Feng, 2008:7).

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

Чаще всего упрощение текста производится только на уровне лексики и синтаксиса. Упрощение на более высоких уровнях подразделяется на дискурсное и семантическое. На уровне дискурса главной задачей является сохранение согласованности и связности текста (Feng, 2008:8). Синтаксическое упрощение зачастую выполняется для каждого предложения отдельно, не затрагивая связи между ними, что неизбежно приводит к недостатку связности в упрощённом тексте. Например, при трансформации страдательного залога в действительный меняется порядок слов, что может повредить связи между местоимениями в тексте. Точно так же, когда придаточное предложение отделяется, и относительное местоимение заменяется существительным или другим местоимением для образования нового предложения, могут пострадать анафорические связи; к тому же, сложно будет определить порядок следования упрощённых предложений в новом тексте. Для разрешения этих проблем применяются алгоритмы ранжирования сущностей по актуальности, а также разрешения местоимений.

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

Что касается оценки систем автоматического упрощения текста, единого мнения насчёт верного способа оценить качество упрощения текста пока не существует (Siddharthan, 2014:279). Типичными критериями оценки являются естественность произведённого текста и его полезность для целевой аудитории. Обычно оценка производится с использованием автоматических метрик либо с помощью экспертов. Также применяются такие метрики, как удобочитаемость (метрика для оценки лёгкости восприятия текста при помощи таких характеристик, как длина слов или фраз, количество многосложных слов, уровень абстрактности лексики и т.п.) или BLEU (bilingual evaluation understudy, алгоритм, оценивающий качество машинного перевода по сходству с переводом, выполненным вручную). Однако ни одна из данных метрик не является полностью подходящей для оценки упрощённых текстов.

Например, удобочитаемость является лишь косвенным показателем понятности и грамматической правильности предложения, и данную метрику следует отграничивать от понятности (comprehensibility), особенно в контексте вспомогательных инструментов (Siddharthan, 2014:289). Тем не менее, необходимо отметить, что в настоящее время активно разрабатываются методы вычисления удобочитаемости текста, рассчитанные специально на оценку систем автоматического упрощения (Aluisio et al, 2009:387).

Как уже было сказано, для оценивания упрощённых текстов исследователи часто прибегают к помощи экспертов. При этом может учитываться как просто экспертная оценка естественности текста, так и более сложные метрики, например, подсчёт дистанции редактирования между упрощённым текстом и версией упрощённого текста, исправленной экспертом. Тем не менее, экспертная оценка не всегда предоставляет нужную информацию о полезности упрощённых текстов (Siddharthan,2014:289).

Другие способы оценивания включают физиологические и нейрофизиологические методы, такие, как окулография (определение координат взора) (Siddharthan, 2014:289), однако данные методы применяются редко. Типичное оценивание включает опрос экспертов, являющихся носителями языка, для которого разработана система упрощения, на предмет определения правильности и полезности замен.

1.3 Существующие приложения и инструменты для автоматического упрощения текста

Автоматическое упрощение текста как сфера исследований в области автоматической обработки естественного языка начало активно развиваться в середине 90-х годов прошлого века (Keskisдrkkд, 2012:7). В это время начали появляться, к примеру, работы, посвящённые автоматической проверке грамматики и стиля для текстов на упрощённом английском языке (Simplified English) (Chandrasekar et al., 1997:190). Одно из первых исследований, посвящённых непосредственно автоматическому упрощению текста, принадлежало R. Chandrasekar и B. Srinivas. Их работы содержали описание техник, которые могли бы быть использованы для упрощения синтаксиса текста. Главной целью при этом было ускорение и уменьшение ошибок других систем для автоматической обработки естественного языка (в особенности парсинга и машинного перевода (Chandrasekar et al., 1997:183)). Исследователи подчеркнули, что необходимость упрощения зависит от жанра текста. Например, для юридических текстов, содержащих множество различных нюансов, упрощение может не подойти, так как будут утеряны важные смыслы.

Согласно R. Chandrasekar и B. Srinivas, синтаксическое упрощение должно производиться в несколько этапов: анализ предложения и последующая трансформация. Анализ подразумевает создание структурной репрезентации предложения, в которой в процессе трансформации будут идентифицированы и изменены структуры, подлежащие упрощению. Для изменения предложений применяются трансформационные правила, составленные автоматически при помощи сравнения параллельного корпуса оригинальных и упрощённых предложений. Правила составляются на основе представления предложений в виде супертегов (техника, описанная авторами в ранних работах и применяемая для определения связей слова с другими словами в предложении), содержащих информацию о роли слова в предложении и его синтаксических связях (Chandrasekar et al., 1997:190).

В приведённом исследовании было поднято множество вопросов об упрощении текста на уровне дискурса, ответы на которые не были даны (Feng, 2008:11). Эти вопросы были подробно раскрыты в работах A. Siddharthan, которые также были нацелены на дальнейшее исследование синтаксического упрощения.

Одним из аспектов данного исследования было выполнение синтаксического упрощения без применения парсеров, результатом чего стала разработка технологий машинного обучения для идентификации грамматической основы предложений, а также дополнительных инструментов для частеречного маркирования и неглубокого анализа предложения (shallow parsing/chunking). Другим, и более важным, по мнению автора, аспектом исследования был детальный анализ изменений, происходящих в процессе синтаксического упрощения в области дискурса и согласованности (Siddharthan, 2014:279).

Исследование было сфокусировано на упрощении относительных придаточных предложений, приложений, конструкций с соединительной и подчинительной связью. Автору удалось показать, что перечисленные конструкции могут быть упрощены без потери согласованности в новостных текстах с использованием техник неглубокого анализа текста; также была доказана эффективность применения вычислительных моделей структуры дискурса для минимизации нарушений в структуре дискурса, вызванных синтаксическим упрощением. В результате данных исследований была также выявлена потребность в регенерирующем компоненте в системах для автоматического синтаксического упрощения (проблемы регенерации включают выбор ключевых слов, порядок предложений, употребление местоимений и т.п. (Siddharthan, 2006:148)) для сохранения согласованности. Также в упомянутом исследовании были формализованы отношения между синтаксическим уровнем и уровнем дискурса в процессе синтаксического упрощения.

Современные исследования автоматического упрощения текста имеют множество направленностей. Многие работы, связанные с упрощением англоязычных текстов, основываются на уже упоминавшемся ресурсе Simple English Wikipedia, используя сопоставление оригинальных и упрощённых статей для создания параллельных корпусов. Кроме того, на этой основе создаются и инструменты для автоматического упрощения статей. Здесь можно привести в пример исследование W.Coster и др., в ходе которого был составлен параллельный корпус с использованием предложений из SimpleWiki и их неупрощённых оригиналов. Данный корпус был протестирован при помощи системы машинного перевода Moses, которая была натренирована на упрощённых и обычных фразах. Переводы были оценены при помощи уже упоминавшейся метрики BLEU, показавшей, что использование датасета из упрощённых предложений даёт лучшее качество перевода по сравнению с датасетом из неупрощённых предложений (Coster et al., 2011:668).

Другим примером является работа K. Woodsend и др., в которой описывается конструирование сквозной (end-to-end) системы для упрощения статей из Википедии. Центральным принципом работы стало понимание автоматического упрощения как задачи, объединяющей задачи выбора контента и рерайтинга. Модель, используемая в данном исследовании, выделяет необходимый контент на основе наблюдений, сформированных путём анализа оригинальных статей из Википедии и их упрощённых вариантов из SimpleWiki. Статьи переписываются при помощи грамматик, позволяющих распознавать и реализовывать множество возможных лексических и синтаксических упрощений, включая разбиение фраз (Woodsend et al., 2011:932), а затем тексты оптимизируются с учётом информативности и упрощенности.

Как уже говорилось, многие современные системы и приложения для автоматического упрощения текста направлены на определённую аудиторию читателей. Так, в работах J. De Belder и др. исследуется разработка системы автоматического упрощения текста для детей. Данная система выполняет синтаксическое упрощение в виде разбивки сложных предложений, а также лексическое упрощение путём замены слов на более лёгкие синонимы. Для синтаксического упрощения авторами был создан и применён классификатор, определяющий сложность предложения, и основанная на правилах система для упрощения предложений. Чтобы контролировать упрощение на уровне всего текста (так как авторами была поставлена задача выполнять упрощение для определённого уровня, не делая тексты слишком простыми для читателей), были применены методы целочисленного программирования. Лексическое упрощение производилось с использованием онлайн-тезауруса WordNet, а также применения базовых методов для разрешения лексической многозначности. Тем не менее, система синтаксического упрощения, применённая в данной работе, не захватывала всех предложений, которые нужно было упростить, чтобы сделать текст подходящим для детей. Хотя применение всей системы для упрощения показало уменьшение индекса Флеша-Кинкейда (т.е. уменьшение сложности текстов по сравнению с оригиналом), упрощение всё же не достигало желаемого уровня (De Belder et al., 2010:25). Работа над данной системой продолжается и в настоящее время.

Другой популярной сферой является упрощение медицинских и научных текстов. Примером таких работ является создание приложения DeScipher, описанное в работе J. Hullman и др. DeScipher - это приложение для редактирования текста, направленное на повышение доступности научных текстов для не занимающихся наукой читателей путём замены сложных терминов и научного жаргона на более понятные читателям слова и фразы. В данной системе замены для каждого сложного слова предлагаются на выбор пользователю, создающему или редактирующему текст на научную тематику. В качестве тренировочного корпуса текстов при подготовке приложения использовалась коллекция аннотаций к научным статьям, а также пояснений к научным текстам для журналистов. DeScipher демонстрирует потенциал информационных инструментов для помощи в научной журналистике (journalist-in-the-loop tools) (Yea Seul Kim et al., 2015:5).

Перечисленные исследования и приложения предназначались для работы с текстами на английском языке, однако существует также немало работ об автоматическом упрощении текстов на других языках: например, на баскском, болгарском, датском, голландском, французском, корейском, итальянском, японском, испанском, португальском и шведском (Siddharthan, 2014:29), а также финском и русском. Об исследованиях, посвящённых автоматическому упрощению текстов на русском языке, подробнее будет рассказано в следующей главе настоящего исследования.

Одной из систем автоматического упрощения, работающих со шведским языком, является разработанный G. Grigonytй и др. инструмент для повышения удобочитаемости электронных медицинских карт. В электронные карты на протяжении всей жизни пациента заносится информация о состоянии его здоровья, однако эти документы заполняются медицинскими работниками, которые, к тому же, часто ограничены во времени. Поэтому записи в электронных картах имеют такие лингвистические особенности, как телеграфный стиль, часто с пропущенными или перепутанными словами, большое количество аббревиатур, вариации в написании слов, включая орфографические ошибки, а также обильное использование специальной терминологии. Для повышения доступности медицинской информации для пациентов исследователями был создан инструмент для лексического упрощения текстов из электронных медицинских карт, включавшего распознавание незнакомых слов и разрешение их значения как сложных слов, аббревиатур или опечаток, показавший во всех случаях от 83% до 91% правильного распознавания (Grigonytй et al., 2014:80).

В области автоматического упрощения текстов на испанском языке наиболее примечательны исследования H. Saggion и др., в результате которых был создан Simplext - инструмент для упрощения испанских текстов разной тематики. Для создания Simplext был предварительно создан параллельный корпус оригинальных и упрощённых текстов, которые упрощались самими исследователями по заранее установленным правилам. Каждому предложению в корпусе соответствовал упрощённый аналог. Затем была разработана система для синтаксического и лексического упрощения, включающая как правила, созданные вручную, так и автоматически сгенерированные при помощи собранных данных (Saggion et al., 2011:341).

В работе M.J. Aranzabe и др. описано создание системы автоматического упрощения для баскского языка. Данная система осуществляет упрощение только на синтаксическом уровне с учётом особенностей баскского языка. Так как этот язык является агглютинативным, авторы фокусируются на морфологических чертах при создании правил для упрощения. Работа посвящена, в частности, таким проблемам, как упрощение приложений, относительных придаточных предложений и придаточных предложений времени. Предложенный в работе инструментарий может быть использован как часть другой системы для автоматической обработки естественного языка, так и самостоятельно с целью упрощения текстов на баскском языке, хотя первоначально он создавался для таких задач, как машинный перевод (Aranzabe et al., 2012:6).

Одно из самых известных исследований, касающихся автоматического упрощения текстов на японском языке, было произведено K. Inui и др. и имело специфическую целевую аудиторию, а именно - неслышащих от рождения людей, в частности учеников специализированных школ. В данной работе была представлена технология автоматического упрощения на структурном и лексическом уровнях, тестированная при помощи метрик удобочитаемости и опроса учителей из специализированных школ. Для перефразирования в данной системе применяется около тысячи вручную составленных правил, а для оценки соответствия замен контексту - модель «мешка слов» (bag-of-words) (Inui et al., 2003:16).

Как можно видеть, в настоящее время уже разработано либо находится в активной разработке немало систем автоматического упрощения для разных целевых аудиторий и разных языков. Тем не менее, среди уже охваченных языков практически не представлены славянские, что частично обуславливает актуальность и практическую ценность данной работы.

Глава 2. Применение автоматического упрощения для учебных текстов

2.1 Особенности задачи автоматической адаптации текста для изучающих иностранный язык

Устные и письменные материалы являются важным элементом изучения второго языка, поскольку с их помощью обучающиеся получают языковые данные, необходимые для пополнения лексикона, усваивания грамматических и синтаксических особенностей языка и понимания того, как язык передаёт связи между различными идеями. Часто материалы, предоставляемые изучающим иностранный язык, упрощаются для облегчения понимания (Crossley et al., 2014:92).

Упрощение текста - это важный, но спорный момент в обучении иностранному языку (Petersen et al., 2007:69). Считается, что адаптированные тексты могут способствовать лучшему пониманию материала, особенно в случаях, когда у читающего мало фоновых знаний о предмете текста. Тем не менее, для обучающихся с высоким уровнем владения языком адаптированные тексты менее полезны, чем для начинающих (Crossley et al., 2014:109). Некоторые эксперты предпочитают использование только аутентичных текстов, однако адаптированные тексты также широко применяются в обучении. Несмотря на то, что использование неадаптированных текстов может повысить мотивацию и интерес к изучению иностранного языка, они могут оказаться слишком сложными для чтения, в особенности на начальных этапах освоения языка (там же). Излишняя сложность учебного пособия же может не только препятствовать усвоению учебного материала, но и вызывать определённое неприятие студента (Сибирцева и др., 2014:20). Кроме того, существуют гипотезы, согласно которым изучающие второй язык воспринимают его, когда материал для чтения понятен, но при этом его сложность слегка превышает их нынешний уровень владения языком (Siddharthan, 2014:268). Всё это означает необходимость адаптации текста хотя бы с использованием перевода незнакомых слов.

Обычно адаптация текста занимает даже у специалиста существенное количество времени (Сибирцева и др., 2014:23), что, очевидно, замедляет разработку учебных пособий. Системы автоматической адаптации, разрабатываемые для работы с учебными текстами, во многом призваны сократить время, затрачиваемое на подготовку текста для изучающих язык, при этом обеспечив сохранение смысла текста, а также языковых структур, которые на данном уровне обучения должны быть уже известны будущим читателям.

Для создания систем автоматического упрощения исследователи часто обращаются к изучению стратегий, применяемых специалистами при упрощении текста. Эти стратегии включают:

· Опущение целых фраз или предложений;

· Разделение длинных предложений на более короткие;

· Изменение лексики;

· Сокращение длинных описательных предложений и др.

Ввиду специфической природы задачи упрощения учебного текста (необходимости одновременно сохранить его образовательную пользу и адаптировать для соответствующего уровня) исследователям приходится тщательно выбирать, на каких из перечисленных методов должна быть основана система упрощения. Например, некоторые методы адаптации подразумевают не упрощение лексики и синтаксических структур, а распространение и объяснение фраз (Siddharthan, 2014:269), хотя такой подход может приводить к уменьшению удобочитаемости (Crossley et al., 2014:93). Также продуктивным является применение автоматического реферирования как начального этапа упрощения текста, однако данная техника, применённая самостоятельно, не всегда является эффективной, так как зачастую алгоритм автоматического реферирования выбирает сложные предложения, в результате чего текст становится короче, но не проще для восприятия (Petersen et al., 2007:69). Однако самыми популярными из перечисленных выше методов остаются упрощение лексических и синтаксических структур (Crossley et al.,2014:94), а также опущение фраз или предложений.

Разработке системы автоматического упрощения учебных текстов часто предшествует создание параллельного корпуса упрощённых и аутентичных текстов или предложений. В некоторых случаях корпус включает несколько вариантов упрощения для каждой аутентичной составляющей. Большинство систем используют текстовые корпуса, так как этот подход обеспечивает знание о том, какие именно предложения были выпущены в ходе упрощения (Petersen et al., 2007:70).

При этом используются или уже существующие параллельные корпуса аутентичных и упрощённых текстов (Petersen et al., 2007:69), или создаются новые, в которых тексты упрощаются согласно цели исследования (например, при создании корпуса в исследовании Н.В. Карпова и В.Г. Сибирцевой аутентичные тексты были сопоставлены с версиями, адаптированными для порогового уровня владения РКИ). Чаще всего для подобных корпусов отбираются новостные тексты, поскольку, во-первых, их направленность способствует формированию навыка восприятия новой и актуальной информации на другом языке, во-вторых, подобные материалы полезны не только в образовательных, но и в познавательных целях, а в-третьих, благодаря частому рерайтингу новостей становится проще извлекать синонимы для последующего лексического упрощения (Сибирцева и др., 2014:22).

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

Для лексической адаптации в основном применяется метод синонимической замены. Синонимы могут подбираться разными способами, наиболее широко используется подбор замен при помощи сгенерированной на статистических данных матрицы словарного сходства (Burstein et al., 2007:3), либо же подбор слов на основе составленных лексических минимумов для определённого уровня владения языком (последний способ используется и в данной работе). В зависимости от специфики создаваемой системы автоматического упрощения могут применяться и другие методы: например, если система ориентирована на упрощение текстов для носителей определённого иностранного языка, при подборе синонимов может отдаваться предпочтение когнатам. Такой подход использовался J. Burstein при разработке инструмента, нацеленного на адаптацию учебных текстов на английском языке для учащихся, чьим первым языком был испанский. В данной работе под когнатами понимались слова, имеющие одно и то же написание и значение в двух разных языках (Burstein et al., 2007:3), а для подбора когнатов использовался ETS (English-Spanish Cognate Lexicon).

Как уже было упомянуто выше, для осуществления автоматической адаптации на синтаксическом уровне чаще всего, в том числе и при адаптации учебных текстов, применяется информация, извлекаемая из параллельных корпусов аутентичных и упрощённых вручную текстов. Чтобы разработать правила упрощения, которые потом будут реализованы в функционале программы, исследователи фокусируются на следующих вопросах (Petersen et al., 2007:1):

· Какие различия в применении частей речи и фраз присутствуют в аутентичных и упрощённых текстах?

· Каковы характеристики предложений, подвергающихся разделению при упрощении текста?

· Каковы характеристики предложений, удалённых из текста при упрощении?

Однако в программах для автоматического упрощения учебных текстов используются не только правила, составленные на основе информации из параллельных корпусов. Например, правила для выделения слишком сложных предложений могут быть разработаны на основе сравнения грамматических минимумов для определённых уровней освоения языка (Сибирцева и др., 2014:29). При этом выделенные сложные предложения также классифицируются с точки зрения грамматических и формальных показателей, а на основе этих классификаций уже создаются непосредственно правила для отсечения сложных конструкций. Обычно подобные системы включают обширные коллекции правил как для пропуска структур, входящих в синтаксический минимум для определённого уровня, так и запрещающих правил для сложных структур, подлежащих удалению или коррекции. При этом алгоритм, положенный в основу системы автоматической адаптации, может быть как нацеленным на отсечение сложных конструкций, не входящих в минимум и убираемых созданными правилами, так и основанным на грамматическом подобии (при наличии образцовых, достаточно простых грамматических структур по их образу и подобию автоматически отбираются схожие), либо же интегрировать оба перечисленных пути упрощения (Сибирцева и др., 2014:31).

Таким образом, как можно видеть, в автоматическом упрощении учебных текстов применяются как стратегии, общие для всех задач, связанных с автоматическим упрощением, так и особые стратегии, основанные на применении материалов и инструментов, используемых сугубо в обучении иностранному языку. Например, как и в данной работе, лексическое упрощение учебного текста может быть основано не столько на замене редких слов более употребительными синонимами, сколько на замене их словами, входящими в лексический минимум для определённого уровня освоения иностранного языка.

2.2 Автоматическая адаптация учебных текстов для изучающих русский как иностранный: существующие подходы и приложения

Для русского языка задача автоматического упрощения текста пока что мало исследована в сравнении с другими задачами из области автоматической обработки естественного языка. Тем не менее, существуют уже реализованные подходы к автоматической адаптации учебных текстов для изучающих РКИ.

Один из таких подходов был разработан в ходе составления электронного учебника по русскому как иностранному. В процессе работы над пособием авторы использовали тексты из Национального корпуса русского языка с целью подбора наиболее актуальных материалов для наполнения учебника. Оказалось, что эти материалы достаточно сложны для понимания на низких и средних уровнях освоения русского языка, однако упрощение их вручную заняло бы существенное количество времени, из-за чего материалы утратили бы свою актуальность. Таким образом, возникла необходимость разработать программное обеспечение для автоматической адаптации учебных текстов (Karpov et al., 2014:3).

В начале работы над данным проектом был реализован инструмент для отбора текстов, изначально имеющих высокую удобочитаемость. Для этого модели, традиционно используемые для оценки удобочитаемости текстов на английском языке (наивный байесовский классификатор, k ближайших соседей, ансамбль решающих деревьев, машина опорных векторов, метод дерева классификации), были адаптированы для русского и применены на предварительно собранных данных. Было выяснено, что наилучшие результаты (98-99%) даёт применение машины опорных векторов. Для определения удобочитаемости отдельных предложений дал наилучшие результаты (0.94) ансамбль решающих деревьев.

Затем для дальнейшей разработки программы был применён упоминавшийся выше метод соотнесения аутентичных текстов с текстами, упрощёнными специалистами по преподаванию русского как иностранного. Все применённые методы адаптации были систематизированы, после чего были предложены списки правил, описывающих способы морфологической адаптации предложений (Сибирцева и др.,2014:28). Правила составлялись для каждой части речи. Адаптация существительных, к примеру, включала такие пункты:

1) Существительное/глагол (которые можно заменить на предикатив) и существительное, образованное путём номинализации глагола, заменяются на предикатив+глагол: требует долгого тестирования и отладки => нужно много тестировать и отлаживать

2) Аббревиатуры и сокращения заменяются полными формами слов или обобщёнными синонимами:

ОАО «Ростелеком» => компания Ростелеком

3) Существительное, образованное путём субстантивации причастия, подлежит замене на конструкцию «тот, кто» + глагол: желающим бросить курить => тем, кто хочет бросить курить

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

1) Выделяются цепочки существительных в родительном падеже: о необходимости принятии мер административного характера

2) Маркируются конструкции, состоящие из глагола в изъявительном наклонении и инфинитива, если между ними нет знаков препинания. Их часто можно заменить одним глаголом: позволяет просчитать, может привлечь

3) Выделяются причастные обороты, которые впоследствии можно заменить придаточными предложениями, более лёгкими для восприятия: содержащих информацию => которые содержат информацию

4) Разнообразные составные союзы могут быть успешно заменены на более употребительные простые, список их конечен: не только - но и; как - так и; до тех пор, пока; несмотря на то, что

Также был составлен и список запрещающих правил, по которым можно было бы идентифицировать сложные структуры, подлежащие упрощению или удалению. Данные правила были реализованы при создании веб-приложения для подготовки текста к адаптации; их примеры можно найти ниже.

Далее был разработан метод подбора замен для адаптации текстов на лексическом уровне. Предполагалось, что слово w может иметь список кандидатов на замену, каждый из которых имеет вес

R = {r0, r1, r2… rSw},

где r0 - это вес самого заменяемого слова,

Sw - общее количество замен (Karpov et al., 2014:12)

Вес каждой потенциальной замены при этом определяется следующим образом:

1. Включённость слова в лексический минимум для первого сертификационного уровня - ri1;

2. Частота употребления слова (определяется на основе данных из НКРЯ) - ri2;

3. Представлено ли слово в словаре синонимов (определялось на основе словарей ASIS и Русского морфологического словаря АОТ) - ri3;

4. Является ли слово гипонимом или гиперонимом w (определялось на основе тезауруса YARN) - ri4;

5. Контекстная близость (употребление в схожих контекстах) определяемого слова и w - ri5.

Величины ri1, ri3 и ri4 являлись бинарными и могли иметь значение 0, если слово не присутствовало в словаре или лексическом минимуме, или 1, если присутствовало. Общий вес слова определялся следующим образом:

Затем веса всех предполагаемых замен ранжировались по величине. Замены с нулевым весом отбрасывались. Лучшим кандидатом (Sub) становилось слово, имеющее наибольший вес:

Для вычисления контекстной близости было использовано три метода. Первый из них основан на нахождении вектора нормализованных частот слов, использованных в ближайшем контексте. Второй метод основан на латентном размещении Дирихле, а также на нахождении вектора распределения частот слов, определяющих тему текста. В обоих случаях контекстная близость давала полезные для ранжирования синонимов результаты. Однако первый метод имеет ограничение, связанное с длиной вектора, который равен размеру словаря уникальных слов в текстах, использовавшихся при построении модели. Второй метод позволяет решить проблему большой размерности и эффективно вычислять и интерпретировать контекстную близость (Karpov et al.,2014:16).

Применение латентного размещения Дирихле также позволяет производить исследование контекста, необходимое для его морфологической обработки после произведения лексических замен. Целью данной модели является построение статистической модели пользователя, который пишет текст, и, следовательно, ограничивает степень синонимического расширения контекста, используемого при упрощении (Сибирцева и др.,2014:27).

Результаты описанного исследования были использованы при создании веб-приложения 'Лексикатор', также относящегося к числу проектов по автоматической адаптации русскоязычных учебных текстов. Это информационный ресурс для педагогов и студентов, занимающихся обучением и изучением русского языка как иностранного. В нём реализован функционал для автоматического выделения сложных синтаксических и лексических структур, а так же система оценки сложности текста для чтения по ряду распространённых индексов и собственному индексу 'Лексикатора' (Баранова и др.,2014:236).

Одна из основных функций 'Лексикатора' - подготовка учебных текстов к адаптации под соответствующий уровень изучения языка. Данная задача подразумевает обработку на двух уровнях - синтаксическом и лексическом. На уровне синтаксической обработки необходимо обнаруживать синтаксические конструкции, которые могут быть слишком сложными для изучающих язык. Аналогичная, по сути, задача стоит при обработке на уровне лексики - выделять следует ту лексику, которая вызывает затруднение у учеников. Выбор незнакомых слов на уровне проверки лексики основан на словарях лексических минимумов базового, элементарного и первого сертификационного уровней.

Графически представление учебного текста с выделением сложных синтаксических и лексических конструкций выглядит как подсветка указанных конструкций во введённом в текстовое поле интерфейса материале. Поля ввода графического пользовательского интерфейса рассчитаны на длину учебных текстов в пределах четырёх тысяч символов.

Для формальной оценки сложности текста для чтения используется нескольких распространённых индексов читаемости. Это индексы Флеша-Кинкейда (линейная функция среднего количества слогов в слове и средней длины предложения в текста), Дейла-Холла (линейная функция от средней длины предложения в тексте и процента редких слов) и собственный индекс 'Лексикатора'. Последний индекс - комплекс параметров, включающий такие характеристики, как длина текста в буквах и словах, средняя длина предложения в буквах и словах, процент слов определённой длины и т.п. На графическом интерфейсе ресурса сложность для чтения представляется не числом, а процентной шкалой соответствия обрабатываемого текста одному из допустимых уровней изучения языка. Извлечённые метрики доступны в графическом интерфейсе ресурса и могут использоваться для проведения собственного анализа. Список включает такие метрики, как среднее количество слов в одном предложении текста, средняя длина одного слова в предложении, длина текста в буквах, длина текста в словах, средняя длина предложения или слова в слогах, процент слов в 3 (4, 5, 6) слога(ов) и больше, средняя длина предложения или слова в буквах, процент слов длиной в 5 (6-13) букв и больше, процент слов в предложении, не входящих в словарь лексического минимума, а также средняя длина предложения в словах.

Одной из функций программы является распознавание лексических единиц, не входящих в минимум для заданного уровня владения языком. В 'Лексикатор' загружены словари лексических минимумов трёх уровней изучения языка. Программа обрабатывает текст, выполняя токенизацию и лемматизацию. Полученные токены проверяются на наличие их в словаре выбранного лексического уровня. Токены, не прошедшие проверку, подсвечиваются цветом. Для процесса токенизации и лемматизации использовалась свободно распространяемая библиотека PyMorphy для языка Python версии 2.7. Таким образом, подсветка лексически сложных элементов текста реализована с помощью сопоставления и нахождения исключений между набором лексем текста и словаря рассматриваемого уровня изучения языка (Баранова и др., 2014:233).

Структурный уровень обработки позволяет определить наличие сложных синтаксических структур в тексте. Для решения этой задачи был разработан ряд правил, определяющих, какого рода конструкции в предложении считаются слишком сложными для восприятия обучающихся языку. Для составления правил исследовались справочники по синтаксису русского языка, а также грамматические минимумы для разных уровней освоения РКИ. Выделенные правила затем были формализованы и записаны с помощью синтаксиса языка регулярных выражений, используя теорию контекстно-свободных грамматик, и затем интегрированы с общим программным кодом на языке Python. В данном случае формализация является необходимым действием для трансляции естественного языка с помощью машинного кода. Результатом стала возможность графического отображения определенных структур, в том числе синтаксических и семантических, которые составляют трудность для восприятия в процессе обучения на базовом и первом уровне изучения языка, и которые при адаптации должны быть удалены или заменены на более простые. Правила разделены на коммуникативные, структурные и структурно-семантические.

Пример правил:

3. Модальный постфикс «-то»:

1) POST-то (любая часть речь + «-то»);

2) КРОМЕ (ниже перечислены элементы, которые должны быть): <...>

7. Сложные слова типа «диван-кровать»:

1) NOUN1-NOUN2[2], при условии, что если NOUN1 в одном из падежей (nomn, gent, datv, accs. ablt, loct, voct, gen1, gen2, acc2, loc1, loc2 в sing или plur), то:

NOUN2 в том же падеже и числе (nomn, gent, datv, accs. ablt, loct, voct, gen1, gen2, acc2, loc1, loc2 в sing или plur), например:

NOUN1 в gent, sing - NOUN2 в gent, sing - нет дивана-кровати (Свод правил для лексикатора)

Функционал программы позволяет получить достаточно объективную оценку исследуемого текста с учётом сложности синтаксических и лексических структур и возможностью просмотра в рамках дополнительной оценки извлечённых из текста основных характеристик пользователем ресурса (Баранова и др., 2014:239).

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

автоматический лексический языковый адаптация

Глава 3. Реализация метода автоматического упрощения учебных текстов для ТРКИ-1

3.1 Выбор средств разработки и структура программы

Практической задачей данного исследования являлось создание программы, осуществляющей автоматическое лексическое упрощение учебных текстов. В качестве языка разработки данной программы был выбран язык программирования Python версии 3.4.4; в качестве среды разработки использовался PyCharm версии 5.0.

Лексическое упрощение текста может быть произведено разными методами, одним из которых является замена сложных и малоупотребительных слов и выражений на более употребительные и простые аналоги (Keskisдrkkд,2012:9). Кроме этого, существуют такие стратегии, как удаление слов, признаваемых лишними, или дополнение сложных слов и выражений объяснениями. Для реализации в данном исследовании был выбран метод частичной замены слов. Был создан список сложных слов, которые можно было бы заменить в тексте на более простые, в данном случае - входящие в лексический минимум на первом сертификационном уровне освоения русского языка как иностранного. Автоматическая замена осуществляется только в том случае, если простой аналог сложного слова полностью соответствует ему по грамматическим характеристикам. Другие сложные слова и их аналоги выводятся в отдельном списке под изменённым текстом. Также в отдельный список выносятся другие варианты уже произведённых замен.

Для определения уместности замены в данном контексте была построена языковая модель на символьных н-граммах. Она применяется в процессе отбора всех синонимических пар для замены слов в тексте.

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

Обработка текста в созданной программе может выглядеть, например, таким образом:

Исходный текст

В ночь с 23 на 24 июня все праздновали этот мистический, загадочный, но в то же время разгульный и весёлый праздник, полный обрядовых действий, правил и запретов, песен, приговоров, всевозможных примет, гаданий, легенд, поверий.

Упрощённый вариант

В ночь с 23 на 24 июня все праздновали этот мистический, загадочный, но в то же время разгульный и весёлый праздник, полный обрядовых действий, правил и запретов, песен, приговоров, всевозможных примет, гаданий, сказок, поверий.

Выполненные замены: легенд > сказок

Варианты выполненных замен:

Другие возможные замены: всевозможных > разный

весёлый > смешной

Текст, из которого взято данное предложение, был упрощён с использованием краткого словаря замен и языковой модели на символьных четырёх граммах. Полную версию этого текста можно найти в приложениях (см. приложение 1).

3.2 Создание словарей замен

Для построения системы лексического упрощения необходима база данных, содержащая синонимы в той или иной форме (Keskisдrkkд, 2012:15). В данной работе под синонимами понимаются слова, тождественные или близкие по значению (Черняк, 2011:241).

Эффективное упрощение текста подразумевает наличие знаний о том, какие слова в системе будут приниматься за более сложные, а какие - за более простые (Keskisдrkkд, 2012:16). Одним из способов это сделать является подбор синонимов к составленному минимуму наиболее употребительных слов языка. В нашем исследовании в качестве списка простых слов были использованы перечни слов, составляющие лексический минимум для элементарного, базового и первого сертификационного уровней освоения русского языка, а также дополнительный список, использовавшийся для создания системы «Лексикатор». После совмещения данных списков и очистки их от повторяющихся слов получился список из 2327 слов общего лексического минимума.

Согласно исследованиям, посвящённым адаптации учебных текстов на русском языке, адаптация лексики должна производиться следующими методами (Сибирцева и др., 2014:25):

1) Синонимическая замена слов;

2) Замена гиперонима на гипоним, родового слова на более частное слово;

3) Замена гипонима на гипероним, выражающий генерализацию или обобщение;

4) Замена анафор в тексте;

5) Удаление суффиксов субъективной оценки.

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

Список семантически близких для слов данного минимума составлялся автоматически при помощи средств Python-библиотеки lxml. Основой для него послужил онлайн-словарь русских синонимов с сайта slova.zkir.ru, содержащий 163 тысячи слов и выражений из словаря информационной поддержки оценщика и аудитора АSIS (Appraiser Support Info System), а также около 1000 слов из словаря синонимов Н. Абрамова, преимущественно глаголов. Необходимо заметить, что в данном онлайн-словаре содержатся не только синонимы, но и другие словарные пары, имеющие высокую семантическую близость, например, связанные отношениями включения (гипо-гиперонимии) (Арефьев и др., 2015:118), что делает его особенно подходящим для задач нашего исследования. Итогом обработки первоначального списка простой лексики стал список из 25090 пар.

Составленный список, однако, содержал только начальные формы слов. Чтобы можно было пользоваться им для упрощения текста, необходимо было расширить его, извлекая все возможные формы сложных слов и сопоставляя их с соответствующими формами простых. Для этого была использована Python-библиотека pymorphy-2. Pymorphy-2 - это морфологический анализатор и генератор для русского и украинского языков, созданный на основе данных из OpenCorpora и LanguageTool (Korobov, 2015:320). При создании расширенного списка синонимов сначала извлекалась грамматическая информация для каждого слова в паре. Грамматическая информация в pymorphy-2 содержит сведения о части речи и соответствующих ей характеристиках слова (например, для глагола «стали» данный тег выглядит так: 'VERB,perf,intr plur,past,indc', что соответствует части речи, виду, переходности, числу, времени и наклонению). Если грамматический тег совпадал для сложного и простого слова, для каждого из них извлекались лексемы. Лексемами в pymorphy-2 называются словари, содержащие все возможные формы слова, включая нормальную форму, грамматическую информацию, а также информацию об аффиксах. При совпадении длин (т.е. количества форм) в лексемах слова считались подходящими для замены непосредственно в тексте, и все их формы попарно записывались в расширенный список с цифрой «1». При несовпадении грамматического тега или длин лексем всем формам сложного слова при записи в расширенный список ставилась в соответствие только исходная форма простого слова и присваивалась цифра «0», что означает, что данная замена не может быть произведена непосредственно в тексте. После дополнительной очистки от повторений был получен расширенный список замен размером в 454513 вхождений.

На основе первого списка синонимов был также создан второй, более ёмкий список размером в 8051 вхождение. Он создавался путём исключения из первого списка пар в большинстве следующих случаев:

1) Слова в паре связаны между собой не синонимическими отношениями (а, например, отношениями гипо-гиперонимии или меро-партонимии);

2) Слова в паре слабо связаны семантически, замена одного другим возможна очень редко;

3) Для данного простого слова уже есть другой сложный синоним, более соответствующий ему и способный послужить заменой в большинстве возможных контекстов;

4) Сложное слово является более широким понятием, чем соответствующее ему простое слово;

5) Низка вероятность правильного распознавания сложного слова морфологическим анализатором (например, слово «пускай» скорее будет распознано как глагол в повелительном наклонении, чем как союз, поэтому такие пары, как «пускай - ладно», следует исключить).

Также из списка простых слов были предварительно исключены однословные союзы («в» и подобные).

Результаты работы программы для обоих списков были проверены на десяти текстах пяти разных типов, чаще всего встречающихся в учебниках РКИ: текст о городе (Нижнем Новгороде), текст о русских традициях, новостной текст, художественный текст, биографический текст. Для сравнения были взяты короткие (от 237 до 569 слов) и длинные (от 811 до 1247 слов) тексты. Число выполненных замен и время обработки соотнеслись следующим образом:

Таблица 1

Короткие тексты, краткий словарь замен

Тип текста

Кол-во слов

Выполненные замены

Варианты замен

Другие возможные замены

Время обработки (сек)

Город

318

4

-

28

43.9297

Традиции

470

7

-

53

67.0221

Новостной

237

4

-

22

35.131

Художественный

569

6

2

64

76.4616

Биографический

258

8

2

23

38.5747

Таблица 2

Короткие тексты, длинный словарь замен

Тип текста

Кол-во слов

Выполненные замены

Варианты замен

Другие возможные замены

Время обработки (сек)

Город

318

9

2

156

136.8576

Традиции

470

20

2

247

199.2886

Новостной

237

7

-

97

120.2094

Художеств.

569

13

4

288

231.7218

Биограф.

258

15

6

116

112.2717

Таблица 3

Длинные тексты, краткий словарь замен

Тип текста

Кол-во слов

Выполненные замены

Варианты замен

Другие возможные замены

Время обработки (сек)

Город

883

10

-

107

122.3827

Традиции

867

15

-

91

105.6385

Новостной

811

19

2

105

118.439

Художеств.

1247

21

2

106

155.7642

Биограф.

1095

23

2

130

139.1394

Таблица 4

Длинные тексты, длинный словарь замен

Тип текста

Кол-во слов

Выполненные замены

Варианты замен

Другие возможные замены

Время обработки (сек)

Город

883

29

4

457

352.5479

Традиции

867

32

5

347

378.9478

Новостной

811

34

4

404

307.4265

Художеств.

1247

45

19

418

459.7492

Биограф.

1095

45

7

469

416.5336

Как можно видеть, в среднем при использовании краткого словаря замен в тексте выполняется одна замена на 63 слова и предлагается одна замена на десять слов, тогда как при использовании длинного словаря выполняется одна замена на 29 слов и предлагается одна замена на два слова. Время, затрачиваемое на обработку текста, существенно возрастает при использовании длинного словаря (примерно на 180 секунд), что естественно, учитывая разницу в размерах словарей.

Тем не менее, при использовании любого из словарей встречаются случаи, когда предложенные или выполненные замены не совпадают с контекстом предложения. Для уменьшения числа таких случаев была создана языковая модель.

3.3 Построение языковой модели

Статистической языковой моделью называется распределение вероятностей над последовательностями слов. Принимая на вход последовательность длины n, языковая модель присваивает данной последовательности вероятность

Главное преимущество вероятностных моделей заключается в возможности разрешения проблем неоднозначности (Jurafsky et al., 2014:5), часто возникающих при обработке естественного языка. Существует немало типов языковых моделей, например, скрытые модели Маркова или модели, основанные на нейронных сетях. В данной работе для распознавания контекста была применена языковая модель на символьных н-граммах, нередко применяющаяся и в других, не связанных с автоматическим упрощением задачах автоматической обработки текста, таких как определение языка (Ramisch, 2008:9).

Н-граммом называется последовательность из n элементов, где n чаще всего равно двум или трём. Стоит отметить, что при построении языковых моделей чаще применяются н-граммы, состоящие из слов. Однако, поскольку корпус упрощённых текстов в настоящем исследовании был недостаточно велик для построения эффективной модели на словарных н-граммах, было принято решение использовать символьные н-граммы. Одним из преимуществ такой модели является также возможность применять её для оценивания вероятности слов, для которых не осуществляется автоматическая замена.

Вероятность последовательности н-граммов равна вероятности произведения всех составляющих её н-граммов:

wn wn-1 При этом вероятность каждого н-грамма вычисляется как частота данного н-грамма в обучающем корпусе, разделённая на частоту н-грамма меньшей размерности:

Таким образом, к примеру, вероятность последовательности символьных биграммов может быть описана как произведение отношений частот каждого биграмма в корпусе к частоте первого из составляющих его униграммов:

На практике, тем не менее, чаще всего применяются триграммы (в случае с моделями на словарных н-граммах) (Jurafsky et al., 2014:9).

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

Этот же способ был применён и при вычислении вероятностей в данном исследовании.

Можно заметить, что использование приведённых формул для предсказания н-граммов предполагает отсутствие нулевых вероятностей при подсчёте. Так как невозможность составления корпуса всех возможных в языке н-граммов очевидна, при составлении моделей для предотвращения появления нулевых вероятностей используются различные методы сглаживания данных. В данной работе было применёно сглаживание Лапласа, или аддитивное сглаживание - метод, при котором частота каждого слова при подсчёте увеличивалась на 1. Данный метод подразумевает, что, к примеру, вероятность каждого биграмма вычисляется следующим образом (V - количество уникальных слов или символов в словаре) (Jurafsky et al., 2014:18):

Для обучения и тестирования языковой модели был создан корпус текстов, созданных для обучения РКИ на базовом и первом сертификационном уровне. Тексты для обучающего корпуса были взяты из следующих учебников по русскому языку как иностранному: «Добро пожаловать в Нижний Новгород» (под общ. ред. Н.В. Макшанцевой), «Дорога в Россию» (3-я часть; В.Е. Антонова, М.М. Нахабина, А.А. Толстых), «Между строк» (под ред. Е.А. Шериной), «Разговоры о жизни» (Н.А. Летова, И.А. Пугачёва, В.В. Яркина), «Поехали!» в двух томах (С.И. Чернышов, А.В. Чернышова), «Полный вперёд!» (2-я часть; под ред. О.В. Ильиных, Е.А. Потураевой). Первые четыре издания предназначены для первого сертификационного уровня, последнее два - для базового уровня освоения русского языка. Тексты для тестового корпуса были отобраны из собрания учебно-контролирующих текстов для ТРКИ-1 Н.Г. Большаковой и В.Н. Поваровой. Общий объём обучающего корпуса составил 377070 знаков с пробелами, объём тестового корпуса - 16018 знаков. Н-граммы извлекались без учёта регистра и знаков препинания.

Было создано несколько моделей: на четырёхграммах, пятиграммах и шестиграммах. Данные размерности обычно не используются в работе со словарными н-граммами, так как дают очень большую разреженность данных, однако при построении моделей на символьных н-граммах исследователи обычно применяют бульшие размерности, например, от трёх до семи (Brakensiek et al., 2004:110).

С целью оценки построенных моделей для каждой из них вычислялась перплексия. Перплексия - это величина, показывающая, насколько хорошо распределение вероятностей или вероятностная модель прогнозирует появление какого-либо образца. Она определяется как обратная вероятность тестового корпуса, нормализованная по количеству слов. Для тестового корпуса W с количеством слов N перплексия может быть вычислена следующим образом (Jurafsky et al. ,2014:14):

Для применения на практике, как правило, выбирается вероятностная модель с наименьшей перплексией, так как меньшая перплексия означает, что данная модель лучше предсказывает появление слов в документах.

Следует заметить, что перплексия для символьных языковых моделей во многих случаях получается намного меньше, чем перплексия для словарных моделей. Так, для моделей на символьных триграммах она может составлять от 3-4 (Kozielski et al., 2014:347) до 10-13 (Brakensiek et al., 2004:111), а для моделей на пятиграммах 3-6 (там же; корпусы текстов в приведённых исследованиях по размеру превосходили корпус, использованный в настоящей работе). Для наших моделей значения перплексии получились следующими:

Тип модели

Средняя частота

Количество уникальных значений

Перплексия

4-граммы

11.661460367044123

30732

2.271106894713273

5-граммы

4.448266017923193

80566

2.2578934789202

6-граммы

2.4740806196626925

144853

1.2481584084378157

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

3.4 Апробация результатов и дальнейшие направления исследования

Оценка представленной в настоящем исследовании системы упрощения производилась в несколько этапов. На первом результаты работы программы с использованием длинного и краткого словарей замен были представлены эксперту-преподавателю РКИ с целью определения словаря для дальнейшего использования. Для оценивания предлагались упомянутые в разделе 3.2 настоящего исследования десять текстов на пять различных тем.

В заменах, выполняемых и предлагаемых для выполнения при использовании длинного словаря замен, экспертом были обнаружены следующие типы ошибочных замен, многие из которых были впоследствии убраны при создании краткого словаря:

1) Слова в паре связаны между собой не синонимическими отношениями (а, например, отношениями гипо-гиперонимии или меро-партонимии), при этом заменить сложное слово на предложенное простое можно далеко не во всех контекстах;

2) Слова в паре слабо связаны семантически, поэтому замена одного другим возможна очень редко;

3) Пары, где сложное слово является более широким понятием, чем соответствующее ему простое слово;

4) Пары, где одно из слов было неверно распознано морфологическим анализатором, что лишало смысла предлагаемую замену;

Исходя из этих данных, для дальнейшего тестирования программы было принято применять краткий словарь замен.

Разрабатываемый функционал также апробировался на группе из пяти слушателей из иностранных государств НА МВД РФ, уровень владения русским языком которых не превышал первый сертификационный. Им был предложен один из обработанных с использованием краткого словаря текстов (текст о Нижнем Новгороде) для анализа. В частности, слушателей попросили подчеркнуть незнакомые слова, а также ответить на вопросы по тексту. При анализе выявленных студентами незнакомых слов были получены следующие данные:

Общее количество слов, определённых как сложные

70

Количество слов, которые показались сложными трём или более студентам из пяти

27

Общее количество замен

28

Количество сложных слов, для которых была предложена замена

12

Количество заменённых слов, которые были подчёркнуты как сложные

3

Из общего количества сложных слов 72% не входят в лексический минимум на первом сертификационном уровне освоения русского языка. Среди них 87% слов с тремя и более слогами, 52% слов с четырьмя и более слогами, 24% слов с пятью и более слогами и 7% слов с шестью и более слогами (данные из системы «Лексикатор»). Следует также отметить, что все замены, признанные сложными, отмечались не более чем одним из студентов.

По итогам анализа текстов, а также устного опроса экспертом было выявлено, что наибольшую сложность для изучающих РКИ на начальном и среднем уровне в предложенном тексте представляли длинные (от четырёх слогов) слова, а также причастные обороты.

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

Количество замен, отмеченных как неправильные/общее количество замен

Текст

Модель на четырёх граммах

Модель на пяти граммах

Модель на шести граммах

Традиции

0,285

0,375

0, 31

Художественный

0,2

0,27

0,3

Биографический

0,35

0,5

0,61

В среднем

0,278(3)

0,381(6)

0.40(6)

Таким образом, результаты, демонстрируемые четырёхграммной моделью, в среднем получаются лучше, чем результаты, демонстрируемые моделями на пятиграммах на шестиграммах, хотя в некоторых случаях они могут быть примерно одинаковыми. Это говорит о необходимости дальнейших проверок работоспособности различных моделей при увеличении корпуса упрощённых текстов, а также добавлении нового функционала в программу.

Разумеется, на данный момент существует множество возможностей для совершенствования представленной в настоящей работе программы. Помимо расширения словаря замен и обучающего корпуса, а также усложнения языковой модели, с точки зрения лексического упрощения учебных текстов представляется возможным также внести некоторые изменения в функционал программы. Например, так как анализ показал, что большую сложность при изучении русского языка как иностранного представляют многосложные слова, а также причастия, следует добавить объяснение многоосновных слов (например, слово «восьмиугольник» комментировать как «с восемью углами» или «имеющий восемь углов»), а также причастий (добавлять в комментарий к слову глагол, от которого они произошли). При дальнейшем усложнении системы автоматического упрощения необходимо будет принять во внимание также синтаксическое упрощение и упрощение на уровне дискурса.

Заключение

Целью данной выпускной квалификационной работы было исследовать проблемы автоматической адаптации учебных текстов для изучающих русский язык и предложить вариант её решения на лексическом уровне. Для достижения этой цели были выполнены следующие задачи:

1. В теоретической части исследования были проанализированы особенности задачи автоматической адаптации в целом, а также автоматической адаптации учебных текстов на русском языке;

2. В практической части был предложен и реализован метод автоматического лексического упрощения учебных текстов для изучающих русский язык, в частности:

а. Было предварительно установлено, какой функционал должен быть предложен в создаваемой программе для автоматического упрощения текстов для программ РКИ: необходимо выполнять частичную лексическую адаптацию на основе предварительно выбранного словаря замен и языковой модели, при этом должна существовать возможность исключения слов, не подлежащих упрощению;

б. Были выбраны оптимальные средства разработки программы: в качестве языка разработки был выбран язык программирования Python версии 3.4.4, для составления словарей замен использовались средства библиотек pymorphy2 и lxml. Материалами для создания программы послужили данные из онлайн-словаря русских синонимов с сайта slova.zkir.ru, лексические минимумы для уровня ТРКИ-1 и ниже, а также тексты из учебников РКИ;

в. Предложенный метод автоматической адаптации учебных текстов был реализован с использованием выбранных средств разработки.

3. Реализованный метод был несколько раз опробован на разных аудиториях, что дало возможность точно определить дальнейшие направления исследования: так, было выяснено, что лексическая адаптация текстов для программ РКИ должна предполагать не только замену синонимов, но и уточняющую модификацию.

Таким образом, цель исследования можно считать достигнутой, а само исследование на данном этапе завершённым.

Список использованной литературы

1. Aluisio S.M., Gasperin C., Maziero E., Specia L., Pardo T. Natural language processing for social inclusion: a text simplification architecture for different literacy levels // Proceedings of SEMISH-XXXVI Seminбrio Integrado de Software e Hardware. - 2009. - p. 387-401

2. Aluisio S.M., Specia L., Gasperin C., Scarton C.. Readability assessment for text simplification // Proceedings of the NAACL HLT 2010 Fifth Workshop on Innovative Use of NLP for Building Educational Applications. - 2010. - p. 1-9

3. Angrosh M.A., Siddharthan A. Hybrid text simplification using synchronous dependency grammars with hand-written and automatically harvested rules //EACL. - 2014. - С. 722-731.

4. Angrosh M.A., Siddharthan A. Text simplification using synchronous dependency grammars: Generalising automatically harvested rules // Proceedings of the 8th International Natural Language Generation Conference. - 2014. - p. 16-25.

5. Aranzabe M.J., de Ilarraza A.D., Gonzalez-Dios I. First approach to automatic text simplification in Basque //Proceedings of the Natural Language Processing for Improving Textual Accessibility (NLP4ITA) workshop (LREC 2012). - 2012. - С. 1-8.

6. Aranzabe Urruzola M.J., Dнaz de Ilarraza Sбnchez A., Gonzбlez Dios I. Transforming complex sentences using dependency trees for automatic text simplification in Basque. - 2013.

7. Bдr D., Zesch T., Gurevych I. A Reflective View on Text Similarity // RANLP. - 2011. - С. 515-520.

8. Blei D.M., Ng A.Y., Jordan M.I. Latent dirichlet allocation // the Journal of machine Learning research. - 2003. - Т. 3. - С. 993-1022.

9. Bott S., Saggion H. An unsupervised alignment algorithm for text simplification corpus construction // Proceedings of the Workshop on Monolingual Text-To-Text Generation. - Association for Computational Linguistics, 2011. - С. 20-26.

10. Bott S., Saggion H., Mille S. Text Simplification Tools for Spanish // LREC. - 2012. - С. 1665-1671.

11. Brakensiek A., Rigoll G. Handwritten address recognition using hidden Markov models // Reading and learning. - Springer Berlin Heidelberg, 2004. - С. 103-122.

12. Brouwers L., Bernhard D., Ligozat A., Francёois T. Syntactic sentence simplification for french // Proceedings of the 3rd Workshop on Predicting and Improving Text Readability for Target Reader Populations (PITR)@EACL. - 2014. - С. 47-56.

13. Burstein J. et al. The automated text adaptation tool // Proceedings of Human Language Technologies: The Annual Conference of the North American Chapter of the Association for Computational Linguistics: Demonstrations. - Association for Computational Linguistics, 2007 - С. 3-4.

14. Chandrasekar R., Srinivas B. Automatic induction of rules for text simplification // Knowledge-Based Systems. - 1997 - Т. 10. - №3. - С. 183-190.

15. Coster W., Kauchak D. Simple English Wikipedia: a new text simplification task // Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies: short papers-Volume 2. - Association for Computational Linguistics, 2011. - С. 665-669.

16. Crossley S.A., Allen D.B., McNamara D.S. Text readability and intuitive simplification: A comparison of readability formulas //Reading in a foreign language. - 2011. - Т. 23. - №1. - С. 86.

17. Crossley S., Yang H.S., McNamara D. What's so simple about simplified texts? A computational and psycholinguistic investigation of text comprehension and text processing // Reading in a Foreign Language. - 2014. - Т. 26. - №1. - С. 92.

18. De Belder J., Deschacht K., Moens M.F. Lexical simplification // Proceedings of ITEC2010: 1st international conference on interdisciplinary research on technology, education and communication. - 2010.

19. De Belder J., Moens M.F. Text simplification for children // Prroceedings of the SIGIR workshop on accessible search systems. - ACM, 2010. - С. 19-26.

20. Drndarevic B., Saggion H. Reducing text complexity through automatic lexical simplification: An empirical study for Spanish //Procesamiento del lenguaje natural. - 2012. - Т. 49. - С. 13-20.

21. Feng L. Text simplification: A survey // The City University of New York, Tech. Rep. - 2008.

22. Grigonytй G. et al. Improving readability of Swedish electronic health records through lexical simplification: First results // European Chapter of ACL (EACL), 26-30 April, 2014, Gothenburg, Sweden. - Association for Computational Linguistics, 2014. - С. 74-83.

23. Inui K. et al. Text simplification for reading assistance: a project note //Proceedings of the second international workshop on Paraphrasing-Volume 16. - Association for Computational Linguistics, 2003. - С. 9-16.

24. Jiang J.J., Conrath D.W. Semantic Similarity Based on Corpus Statistics and Lexical Taxonomy. - 1997.

25. Jurafsky D., Martin J.H. Speech and language processing //International Edition. - 2000.

26. Kandola J., Cristianini N., Shawe-taylor J.S. Learning semantic similarity // Advances in neural information processing systems. - 2002 - С. 657-664.

27. Kandula S., Curtis D., Zeng-Treitler Q. A semantic and syntactic text simplification tool for health content // AMIA Annu Symp Proc. - 2010 - Т. 2010. - С. 366-70.

28. Karpov N. Corpus-Based Text Retrieval and Adaptation for Learning System, in: International Conference on Advances in Computing and Information Technology - ACIT 2014. Newark: Institute of Research engineers and Doctors, 2014. P. 60-65.

29. Karpov N., Vitugin F., Baranova J. Single-sentence Readability Prediction in Russian, in: Analysis of Images, Social Networks and Texts / Науч. ред.: D.I. Ignatov, M. Khachay, A. Panchenko, N. Konstantinova, R. Yavorsky. Vol. 436: 3rd International Conference on Analysis of Images, Social networks, and Texts. NY: Springer, 2014. Ch. 436. P. 91-100.

30. Karpov N., Sibirtseva V. Towards Automatic Text Adaptation In Russian // Higher School of Economics Research Paper No. WP BRP. - 2014. - Т. 16.

31. Karpov N., Sibirtseva V. Development of modern electronic textbook of Russian as a foreign language: content and technology / Издательский дом НИУ ВШЭ. Series WP 'Working Papers of Humanities'. 2012. No. 2012-6.

32. Keskisдrkkд R. Automatic text simplification via synonym replacement - 2012.

33. Kocharov D. Evaluation of Lemmas N-grams for the Russian Language.

34. Korobov M.: Morphological Analyzer and Generator for Russian and Ukrainian Languages // Analysis of Images, Social Networks and Texts. - 2015. - p. 320-332.

35. Kozielski M. et al. Open-lexicon Language Modeling Combining Word and Character Levels // Frontiers in Handwriting Recognition (ICFHR), 2014 14th International Conference on. - IEEE, 2014. - С. 343-348.

36. Navigli R., Lapata M. An experimental study of graph connectivity for unsupervised word sense disambiguation //Pattern Analysis and Machine Intelligence, IEEE Transactions on. - 2010. - Т. 32. - №4. - С. 678-692.

37. Panchenko A. et al. A study of heterogeneous similarity measures for semantic relation extraction // JEP-TALN-RECITAL 2012, volume 3: RECITAL. - 2012.

38. Panchenko A., Morozova O. A study of hybrid similarity measures for semantic relation extraction // Proceedings of the Workshop on Innovative Hybrid Approaches to the Processing of Textual Data. - Association for Computational Linguistics, 2012. - С. 10-18.

39. Panchenko A. et al. A Semantic Similarity Measure Based on Lexico-Syntactic Patterns // Proceedings of KONVENS 2012 - 2012. 38. S.E. Petersen, M. Ostendorf. Text Simpli?cation for Language Learners

40. Petersen S.E., Ostendorf M. Text simplification for language learners: a corpus analysis // SLaTE. - 2007. - С. 69-72.

41. Ramisch, C. N-gram Models for Language Detection. - 2008.

42. Rello L. et al. Simplify or help? Text simplification strategies for people with dyslexia // Proceedings of the 10th International Cross-Disciplinary Conference on Web Accessibility. - ACM, 2013 - С. 15.

43. Saggion H. et al. Text simplification in simplext. making text more accessible // Procesamiento del lenguaje natural. - 2011. - Т. 47 - С. 341-342.

44. Shardlow M. A survey of automated text simplification //International Journal of Advanced Computer Science and Applications. - 2014 - Т. 4 - №1.

45. Siddharthan A. A survey of research on text simplification // ITL-International Journal of Applied Linguistics. - 2014. - Т. 165. - №2 - С. 259-298.

46. Siddharthan A. Syntactic simplification and text cohesion //Research on Language&Computation. - 2006. - Т. 4. - №1 - С. 77-109.

47. Siddharthan A. Text simplification using typed dependencies: A comparison of the robustness of different generation strategies //Proceedings of the 13th European Workshop on Natural Language Generation. - Association for Computational Linguistics, 2011. - С. 2-11.

48. Spasiж I., Ananiadou S. A flexible measure of contextual similarity for biomedical terms // Pacific Symposium on Biocomputing. - 2004. - С. 197-208.

49. Vajjala S., Meurers D. Readability assessment for text simplification: From analysing documents to identifying sentential simplifications // ITL-International Journal of Applied Linguistics. - 2014. - Т. 165. - №2. - С. 194-222.

50. Woodsend K., Lapata M. WikiSimple: Automatic Simplification of Wikipedia Articles // Aaai. - 2011.

51. Yea Seul Kim, Hullman J., Adar E. DeScipher: A Text Simplification Tool for Science Journalism // Computation+Journalism Symposium. - 2015.

52. Андрюшина Н.П. и др. Требования по русскому языку как иностранному. Первый уровень. Общее владение / Н.П. Андрюшина и др. // М.-СПб.: ЦМО МГУ - «Златоуст», 2007. - 32 с.

53. Н.В. Арефьев, А.И. Панченко, А.В. Луканин и др. Сравнение трёх систем семантической близости для русского языка // Компьютерная лингвистика и интеллектуальные технологии: По материалам ежегодной Международной конференции Диалог (Москва, 27-30 мая 2015 г.). Вып. 14 (21). -- Т. 2. -- Изд-во РГГУ Москва, 2015. -- С. 116-128.

54. Д.Н. Бабин, И.Л. Мазуренко, А.Б. Холоденко О перспективах создания системы автоматического распознавания слитной устной русской речи / Интеллектуальные системы. Вып. 1-4. - T. 8. - Москва, 2004. - C. 45-70.

55. Баранова Ю.Н., Елипашева Т.С. Создание вспомогательного информационного ресурса для анализа учебных текстов на русском языке / Ю.Н. Баранова, Т.С. Елипашева // Человек в информационном пространстве. Яр.: ЯГПУ. - 2014. - С. 232-246.

56. Будников Е. А. Обзор некоторых статистических моделей естественных языков // Машинное обучение и анализ данных. - С. 245.

57. Гудков В.Ю., Гудкова Е.Ф. N-граммы в лингвистике //Вестник Челябинского государственного университета. - 2011. - №24.

58. Кипяткова И.С., Карпов А.А. Разработка и исследование статистической модели русского языка //Труды СПИИРАН. - 2010. - Т. 1. - №12. - С. 35-49.

59. Ланко А.А. О задаче определения стиля документов на естественном языке // Молодежный научно-технический вестник. - 2015.

60. Леонтьева Н.Н. О методах смысловой компрессии текста // Интернет и современное общество. - 2007. - С. 269-273.

61. Первухина С.В. Адаптированный художественный текст: способы повышения понятности // Вестник Челябинского государственного университета. - 2011. - №25.

62. Сибирцева В.Г., Карпов Н.В. Автоматическая адаптация текстов для электронных учебников / В.Г. Сибирцева, Н.В. Карпов // Новая русистика. - 2014. - №7. - с.19-33.

63. Черняк В.Д. Русский язык и культура речи: учебник / А.И. Дунаев и др.; под общ. ред. В.Д. Черняк. - М.: Издательство Юрайт; ИД Юрайт, 2011. - 493 с. - Серия: Основы наук.

Приложение 1

Текст, упрощённый при помощи краткого словаря замен и языковой модели на символьных четырёхграммах

Иван Купала в России. Русские купальские обряды

Издревле все народы мира отмечали в конце июня праздник вершины лета. На Руси таковым праздником является Иван Купала. В ночь с 23 на 24 июня все праздновали этот мистический, загадочный, но в то же время разгульный и весёлый праздник, полный обрядовых действий, правил и запретов, песен, приговоров, всевозможных примет, гаданий, сказок, поверий.

Еще в пору язычества у древних русичей жило божество Купало, олицетворяющее летнее плодородие. В его честь вечерами и распевали песни, и прыгали через костер. Это обрядовое действие превратилось в ежегодное празднование летнего солнцестояния, смешивая в себе языческую и христианскую традицию. Иваном божество Купало стало называться после крещения Руси, когда его заместил не кто иной, как Иоанн Креститель (точнее -- его народный образ), крестивший самого Христа и чье рождество праздновалось 24 июня.

Купальские обряды

В это день люди опоясывались перевязями из цветов, на голову надевали венки из трав. Водили хороводы, пели песни, разводили костры, в середину которых ставили шест с укрепленным на нем горящим колесом -- символом солнца.

В песнях, которые распевались в деревнях, Купала называется любовным, чистоплотным, веселым. В день Ивана Купалы девушки завивали венки из трав, а вечером пускали их в воду, наблюдая, как и куда они плывут. Если венок тонет, значит, суженый разлюбил и замуж за него не выйти.

На Иванов день принято было обливать грязной водой всякого встречного. Считалось, чем чаще человек бежит купаться, тем чище будет его душа. Купаться же было предписано на заре: тогда купание владело целебной силой.

В купальную ночь разжигали очищающие костры. Вокруг них плясали, через них прыгали, кто удачнее и выше -- тот будет счастливее. В купальских кострах матери сжигали снятые с хворых детей рубашки, чтобы вместе с этим бельём сгорели и самые болезни. Молодёжь, напрыгавшись через костры, устраивали шумные весёлые игры, потасовки, бег наперегонки. Непременно играли в горелки.

В народе верили, что все чудодейственные и целебные травы распускаются как раз в ночь на Ивана Купалу. Поэтому знающие и опытные люди, а особенно сельские лекари и знахари, ни под каким видом не пропускали Ивановой ночи и собирали целебные коренья и травы на весь год.

Ходили слухи, что в полночь на Купалу расцветает папоротник. Чудесный огненный цветок может указать счастливцу местонахождения всех кладов, как бы глубоко они ни были зарыты. Около полуночи на широких листьях папоротника появляется почка, которая поднимается все выше, выше, потом шатается, переворачивается и начинает «прыгать». Ровно в полночь созревшая почка с треском раскрывается и из нее появляется огненно - красный цветок. Человек сорвать его не может, но если увидит, все его пожелания исполнятся.

С днем Ивана Купалы люди связывали знания о чудесах. В ночь на Купалу нельзя было спать, так как оживала и становилась активной вся нечисть: ведьмы, оборотни, упыри, русалки... Считалось, что на Ивана Купалу ведьмы тоже справляют свой праздник, стараясь как можно больше причинить зла людям.

Вот так и проходил праздник Ивана Купалы -- в разгульных обрядах, гаданиях и прочих веселых и милых шалостях

Выполненные замены:

существовало - > жило

обладало - > владело

деревенские - > сельские

сорочки - > рубашки

представления - > знания

легенд - > сказок

Варианты выполненных замен:

Другие возможные замены:

всевозможных - > разный

чудесах - > чудо

весёлый - > смешной

середину - > центр

лекари - > доктор

обладало - > иметь

всякого - > разный

удачнее - > хороший

хворых - > больной

чистоплотным - > честный

иной - > другой

всякого - > любой

хворых - > слабый

всякого - > каждый

чаще - > лес

прочих - > другой

божество - > бог

чистоплотным - > чистый

приговоров - > решение

были - > факт

весёлые - > смешной

Приложение 2

Код, использовавшийся для создания списка простых слов

import re

clean = open('cleantexts.txt', 'w+', encoding = 'utf-8')

with open('wordlist.txt', encoding='utf-8') as f:

words = f.readlines()

new = []

for i in words:

if (i[:-1] not in new) and (re.findall('s+', i[:-1]) = []) and i[0].isalpha():

new.append(i[:-1])

new.sort(key = lambda x: x[0])

for i in new:

clean.write(i)

clean.write('n')

clean.close()

Приложение 3

Код, использовавшийся для извлечения синонимов из онлайн-словаря

import lxml.html as html

f = open('cleantexts.txt', 'r', encoding='utf-8')

vocab = f.readlines()

f.close()

vocabulary = []

for i in vocab:

vocabulary.append(i[:-1])

def synonyms(word):

wordlist=[]

synonyms = []

try:

page = html.parse('http://slova.zkir.ru/dict/{}'.format(word))

root = page.getroot()

words = root.find_class('synonim')

for i in range(len(words)):

if words[i].text_content() not in wordlist:

wordlist.append(words[i].text_content())

except OSError: pass

for i in wordlist:

if (i[0] == ' ') and (i.count('-') == 0) and (i[1:].count(' ') == 0) and (i[1:] not in

vocabulary):

synonyms.append(i[1:])

elif (i[0] != ' ') and (i.count('-') == 0) and (i.count(' ') == 0) and (i not in

vocabulary):

synonyms.append(i)

return synonyms

with open('synonyms.txt', 'w+', encoding = 'utf-8') as f:

for word in vocabulary[6:]:

syns = synonyms(word)

for i in syns:

f.writelines(i + ' ' + word + 'n')

Приложение 4

Код, использовавшийся для составления грамматических пар

import pymorphy2

morph = pymorphy2.MorphAnalyzer()

def grammar_pairs(s):

word1 = s.split()[0]

word2 = s.split()[1]

form1 = morph.parse(word1)[0]

form2 = morph.parse(word2)[0]

lex1 = form1.lexeme

grammar_pairs = []

if form1.tag == form2.tag:

lex2 = form2.lexeme

if len(lex1) == len(lex2):

for i in range(len(lex1)):

grammar_pairs.append('{} {} {}'.format(lex1[i].word, lex2[i].word, '1'))

else:

for i in range(len(lex1)):

grammar_pairs.append('{} {} {}'.format(lex1[i].word, form2.word, '0'))

else:

for i in range(len(lex1)):

grammar_pairs.append('{} {} {}'.format(lex1[i].word, form2.word, '0'))

return grammar_pairs

gr_pairs = open('grammarpairs2.txt', 'w+', encoding='utf-8')

with open('synonyms2.txt', 'r', encoding = 'utf-8') as f:

p = f.readlines()

for i in p:

try:

for ii in grammar_pairs(i):

gr_pairs.write(ii)

gr_pairs.write('n')

except:

pass

gr_pairs.close()

f1 = open('substitutions2.txt', 'w+', encoding='utf-8')

with open('grammarpairs2.txt', 'r', encoding='utf-8') as f:

fl = f.readlines()

r = list(set(fl))

r.sort(key=lambda x: x[0])

for i in r:

f1.write(i)

f1.close()

Приложение 5

Код, использовавшийся для вычисления частоты и вероятности н-граммов

import re

f = open('texts.txt', 'r', encoding='utf-8')

s = f.read()

f.close()

def get_clean_text(some_string):

s = re.findall('w+', some_string)

for i in s:

if i.isalpha() != True:

s.pop(s.index(i))

clean_text = ' '.join(s).lower()

return clean_text

def ngrams(text, n):

l = []

a = 0

while a < (len(text)-1):

a1 = text[a:(a+n)]

if len(a1)==n:

l.append(a1)

a = a+1

return l

def get_ngrams_freq(trigrams_list):

trigram_freq = {}

for trigram in trigrams_list:

if trigram in trigram_freq.keys():

trigram_freq[trigram] +=1

else:

trigram_freq[trigram] = 1

return trigram_freq

unigram_freq = (get_ngrams_freq(ngrams(get_clean_text(s), 1)))

uni_average = float(sum(unigram_freq.values())/len(unigram_freq))

V = len(unigram_freq)

bigram_freq = (get_ngrams_freq(ngrams(get_clean_text(s), 2)))

bi_average = float(sum(bigram_freq.values())/len(bigram_freq))

bigram_prob = {}

for k, v in bigram_freq.items():

bigram_prob[k] = round((v+1.0)/(unigram_freq[k[0]]+V), 5)

trigram_freq = (get_ngrams_freq(ngrams(get_clean_text(s), 3)))

tri_average = float(sum(trigram_freq.values())/len(trigram_freq))

trigram_prob = {}

for k, v in trigram_freq.items():

trigram_prob[k] = round((v+1.0)/(bigram_freq[k[:-1]]+V), 5)

fourgram_freq = (get_ngrams_freq(ngrams(get_clean_text(s), 4)))

four_average = float(sum(fourgram_freq.values())/len(fourgram_freq))

fourgram_prob = {}

for k, v in fourgram_freq.items():

fourgram_prob[k] = round(float(v + 1)/float(trigram_freq[k[:-1]] + V), 5)

fivegram_freq = (get_ngrams_freq(ngrams(get_clean_text(s), 5)))

five_average = float(sum(fivegram_freq.values())/len(fivegram_freq))

fivegram_prob = {}

for k, v in fivegram_freq.items():

fivegram_prob[k] = round(float(v + 1)/float(fourgram_freq[k[:-1]] + V), 5)

sixgram_freq = (get_ngrams_freq(ngrams(get_clean_text(s), 6)))

six_average = float(sum(sixgram_freq.values())/len(sixgram_freq))

sixgram_prob = {}

for k, v in sixgram_freq.items():

sixgram_prob[k] = round(float(v + 1)/float(fivegram_freq[k[:-1]] + V), 5)

with open('unigramfreqs3.txt', 'w+', encoding='utf-8') as f1:

for k, v in unigram_freq.items():

f1.write('{}:{}{}'.format(k, str(v), 'n'))

with open('bigramfreqs3.txt', 'w+', encoding='utf-8') as f12:

for k, v in bigram_freq.items():

f12.write('{}:{}{}'.format(k, str(v), 'n'))

with open('trigramfreqs3.txt', 'w+', encoding='utf-8') as f13:

for k, v in trigram_freq.items():

f13.write('{}:{}{}'.format(k, str(v), 'n'))

with open('fourgramfreqs3.txt', 'w+', encoding='utf-8') as f14:

for k, v in fourgram_freq.items():

f14.write('{}:{}{}'.format(k, str(v), 'n'))

with open('fivegramfreqs3.txt', 'w+', encoding='utf-8') as f15:

for k, v in fivegram_freq.items():

f15.write('{}:{}{}'.format(k, str(v), 'n'))

with open('sixgramfreqs3.txt', 'w+', encoding='utf-8') as f16:

for k, v in sixgram_freq.items():

f16.write('{}:{}{}'.format(k, str(v), 'n'))

with open('bigramprobs3.txt', 'w+', encoding='utf-8') as f2:

for k, v in bigram_prob.items():

f2.write('{}:{}{}'.format(k, str(v), 'n'))

with open('trigramprobs3.txt', 'w+', encoding='utf-8') as f3:

for k, v in trigram_prob.items():

f3.write('{}:{}{}'.format(k, str(v), 'n'))

with open('fourgramprobs3.txt', 'w+', encoding='utf-8') as f4:

for k, v in fourgram_prob.items():

f4.write('{}:{}{}'.format(k, str(v), 'n'))

with open('fivegramprobs3.txt', 'w+', encoding='utf-8') as f5:

for k, v in fivegram_prob.items():

f5.write('{}:{}{}'.format(k, str(v), 'n'))

with open('sixgramprobs3.txt', 'w+', encoding='utf-8') as f6:

for k, v in sixgram_prob.items():

f6.write('{}:{}{}'.format(k, str(v), 'n'))

Приложение 6

Код, использовавшийся для вычисления перплексии

import re

import math

ff = open('sixgramprobs3.txt', 'r', encoding='utf-8')

grams = ff.readlines()

ff.close()

f = open('test.txt', 'r', encoding='utf-8')

s = f.read().lower()

f.close()

f1 = open('fivegramfreqs3.txt')

pre_grams = f1.readlines()

f1.close()

V = 64.0

A1 = 5599.71875

A2 = 379.6419491525424

A3 = 49.295873452544704

A4 = 11.661460367044123

A5 = 4.448266017923193

A6 = 2.4740806196626925

def get_clean_text(some_string):

s = re.findall('w+', some_string)

for i in s:

if i.isalpha() != True:

s.pop(s.index(i))

clean_text = ' '.join(s).lower()

return clean_text

N = len(get_clean_text(s))

def ngrams(text, n):

l = []

a = 0

while a < (len(text)-1):

a1 = text[a:(a+n)]

if len(a1)==n:

l.append(a1)

a = a+1

return l

def count_prp(ngrams_list):

d = dict.fromkeys(ngrams_list, 0.0)

for i in ngrams_list:

for gram in grams:

if i == gram.split(':')[0]:

d[i] = float(gram.split(':')[1])

n = 1.0

for k, v in d.items():

if v != 0.0:

n = n * (1.0/(v**(1.0/N)))

else:

l = []

for gram in pre_grams:

if k[:-1] == gram.split(':')[0]:

n = n * (1.0/((1.0/(float(gram.split(':')[1])+V))**(1.0/N)))

l.append('d')

if not l:

n = n * (1.0/((1.0/A5+V)**(1.0/N)))

return n

sen_grams = ngrams(get_clean_text(s), 6)

prp = count_prp(sen_grams), print(prp)

Приложение 7

Код программы для упрощения текстов (используется языковая модель на четырёхграммах)

import re

import pymorphy2

import math

import timeit

f = open('substitutions2.txt', 'r', encoding='utf-8')

file_name = input('Введите имя файла с текстом для упрощения: ')

exc_words = input('Введите список слов, которые не надо упрощать

(опционально): ')

f1 = open(file_name, 'r', encoding='utf-8')

s = f1.read()

f1.close()

dictionary = f.readlines()

f.close()

ff = open('fourgramprobs3.txt', 'r', encoding='utf-8')

grams = ff.readlines()

ff.close()

exceptions = str(exc_words)

f1 = open('trigramfreqs.txt')

pre_grams = f1.readlines()

f1.close()

V = 64.0

#average frequencies for each n-gram set (unigrams included)

A1 = 5599.71875

A2 = 379.6419491525424

A3 = 49.295873452544704

A4 = 11.661460367044123

A5 = 4.448266017923193

A6 = 2.4740806196626925

def ngrams(text, n):

l = []

a = 0

while a < (len(text)-1):

a1 = text[a:(a+n)]

if len(a1)==n:

l.append(a1)

a = a+1

return l

def count_prob(ngrams_list):

d = dict.fromkeys(ngrams_list, 0.0)

for i in ngrams_list:

for gram in grams:

if i == gram.split(':')[0]:

d[i] = float(gram.split(':')[1])

n = 0.0

for k, v in d.items():

if v != 0.0:

n = n + math.log(v)

else:

l = []

for gram in pre_grams:

if k[:-1] == gram.split(':')[0]:

n = n + math.log(1.0/(float(gram.split(':')[1])+V))

l.append('d')

if not l:

n = n + math.log(1.0/A3+V)

return math.exp(n)

def simplify(s, exceptions):

possible = []

done = []

extra = []

word_tokens = re.findall('w+', s)

all_tokens = re.findall('w+|[.,:;''---?!«»]|n', s)

subs = []

d = []

morph = pymorphy2.MorphAnalyzer()

pre_dict = re.findall('w+', exceptions.lower())

exeptions_dict = []

for i in pre_dict:

form = morph.parse(i)[0]

lex = form.lexeme

for ii in range(len(lex)):

exeptions_dict.append(lex[ii].word)

for token in word_tokens:

if token.lower() not in exeptions_dict:

for pair in dictionary:

if token.lower() == pair.split()[0]:

n = word_tokens.index(token)

if (n > 3) and (n < (len(word_tokens) - 3)):

s = '{} {} {} {} {} {} {}'.format(word_tokens[n-3], word_tokens[n-2],

word_tokens[n-1], word_tokens[n], word_tokens[n+1], word_tokens[n+2],

word_tokens[n+3])

s1 = '{} {} {} {} {} {} {}'.format(word_tokens[n-3], word_tokens[n-2],

word_tokens[n-1], pair.split()[1], word_tokens[n+1], word_tokens[n+2],

word_tokens[n+3])

elif n <= 3:

s = '{} {} {} {}'.format(word_tokens[n], word_tokens[n+1],

word_tokens[n+2], word_tokens[n+3])

s1 = '{} {} {} {}'.format(pair.split()[1], word_tokens[n+1],

word_tokens[n+2], word_tokens[n+3])

elif n >= (len(word_tokens) - 3):

s = '{} {} {} {}'.format(word_tokens[n-3], word_tokens[n-2],

word_tokens[n-1], word_tokens[n])

s1 = '{} {} {} {}'.format(word_tokens[n-3], word_tokens[n-2],

word_tokens[n-1], pair.split()[1])

if (count_prob(ngrams(s, 4))) <= (count_prob(ngrams(s1, 4))):

subs.append(pair)

for i in subs:

if i[-2] == '1':

d.append(i)

else:

possible.append('{} --> {}'.format(i.split()[0], i.split()[1]))

for token in all_tokens:

for i in d:

try:

if token == i.split()[0]:

all_tokens.insert(all_tokens.index(token), i.split()[1])

all_tokens.pop(all_tokens.index(token))

done.append('{} --> {}'.format(i.split()[0], i.split()[1]))

except ValueError:

ex = d.pop(d.index(i))

extra.append('{} --> {}'.format(ex.split()[0], ex.split()[1]))

text = ' '.join(i for i in all_tokens)

text = text.replace(' .', '.')

text = text.replace(' ,', ',')

text = text.replace(' ?', '?')

text = text.replace(' !', '!')

text = text.replace(' :', ':')

text = text.replace(' ;', ';')

text = text.replace(' )', ')')

text = text.replace('( ', '(')

text = text.replace('« ', '«')

text = text.replace(' »', '»')

done1 = ' n'.join(i for i in set(done))

extra1 = ' n'.join(i for i in set(extra))

possible1 = ' n'.join(i for i in set(possible))

return text + 'n' + 'Выполненные замены: ' + done1 + 'n' + 'Варианты

выполненных замен: ' + extra1 + 'n' + 'Другие возможные замены: ' +

possible1 + 'n'

print(simplify(s, exceptions))

input('Нажмите любую клавишу для выхода')

ref.by 2006—2025
contextus@mail.ru