Коррекция грамматических ошибок в русском языке.

Октябрь 26, 2007 – 11:55 пп

Данная работа была представлена на защиту в июне 2007 года. (Оригинал включает печатную версию и презентацию. Реализация представлена как есть, никакие претензии и вопросы по коду не принимаются.)

Введение.

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

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

Главная особенность – самостоятельность пользователя в работе с информационными ресурсами. Это требует обеспечения определенного уровня обслуживания и заставляет владельцев таких ресурсов более тщательно относится к системе автоматизации, к возможностям информационных технологий, внедряемых в практику. [1]

При создании различных по назначению баз данных производится ввод текстовой информации, осуществляемый двумя способами – набором вручную или сканированием. В обоих случаях возможны орфографические ошибки. Положение орфографических ошибок в классификации ошибок русского языка дано в [2].

Современные текстовые редакторы (например, MS Word), как правило, проводят автоматизированную проверку орфографических ошибок. Это требует вмешательства пользователя. Автоматическая коррекция орфографических ошибок может быть более эффективным средством минимизации опечаток и их исправлений при создании текстовых файлов. В данной работе была поставлена задача разработать и реализовать метод автоматической коррекции грамматических ошибок. В результате выполнения работы были проанализированы различные источники данной предметной области. Реализованы два метода для сравнения.


Обзор литературы.

Орфографически ошибочным словом называется буквенная цепочка, полученная некоторым преобразованием из словоформы некоторой лексемы, принадлежащей естественному языку. Под исправлением ошибки в таком слове называется установление исходной словоформы. Исходная словоформа определяется неоднозначно. В данной постановке задача исправления ошибки называется также задачей полного словарного исправления. Результатом попытки исправления ошибки в пределах некоторого класса преобразований может быть также установление невозможности ее исправления, то есть несуществования в словаре словоформы, из которой данная цепочка получается каким-либо преобразованием заданного класса [3].

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

С целью объяснения и исправления ошибок выделяется некоторый класс элементарных искажений. Например, замена одной буквы на другую, перестановка гласной буквы через согласную, сдвиг руки на одну позицию при набивке части слова на клавиатуре. Сложными называются ошибки, являющиеся комбинацией нескольких элементарных. Например, замена двух букв в одном слове. Элементарное искажение называется локальным, если оно по определению затрагивает небольшой отрезок буквенной цепочки, например, не больше трех букв. Цепочка называется словом с одиночной ошибкой, если она содержит только одно элементарное искажение [3].

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

  1. Замена одного символа на другой (83%)
  2. Удаление символа (8%)
  3. Добавление лишнего символа (4.5%)
  4. Перестановка двух символов (4.5%)

Одиночные ошибки данного класса составляют около 90% всех искажений в текстах. К таким опечаткам может быть сведено и большинство грамматических ошибок. В последнем случае ошибка может быть правильно исправлена и проинтерпретирована, но ее объяснение не является правильным. Например, сильнейшвй и сильнейшый.

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

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

Алгоритм исправления ошибки.
Было рассмотрено несколько алгоритмов:

  1. Расстояние Левенштейна
  2. Метод полных обратных преобразований.
  3. Поиск максимальной подпоследовательности.

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

Определение: Отображение ошибки категории z = 1, 2, 3, 4 данной словоформы – множество словоформ, порождаемых этой словоформой в результате всех возможных ошибок категории z.

Определение: Полное отображение одиночной ошибки данной словоформы – множество словоформ, порождаемых этой словоформой в результате всех возможных ошибок четырех категорий.

Таким образом, если через Г1 (словоформа) обозначить множество словоформ, порождаемых данной словоформой в результате ошибки категории 1 (отображение ошибки категории 1), через Г2 – отображение ошибки категории 2, через Г3 – отображение ошибки категории 3 и через Г4 – отображение ошибки категории 4, то полное отображение одиночной ошибки Г (словоформа) есть объединение всех четырех множеств [4].

Определение: Полное обратное отображение одиночной ошибки данной словоформы – множество словоформ, порождающих данную словоформу в результате одиночной ошибки из четырех категорий [4].

Описание метода полных обратных преобразований:

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

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

Для успешного процесса коррекции важны эффективные алгоритмы диагностики грамматических ошибок. В общем случае все сводится к определению принадлежности последовательности символов (токена) к данному естественному языку [3].

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

Метод n-грамм.

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

  1. Пусть имеется словарь из n-грамм.
  2. Устанавливаем каретку в начало слова.
  3. Считываем n символов после каретки.
  4. Проверяем наличие n-граммы в словаре.
  5. Сдвигаем каретку на один символ, переходим на 3.

Алгоритм был весьма популярен из-за своей простоты и относительно неплохого процента успешного определения ошибочных слов. До сих пор широко используется реализация данного метода в продукте Punto Switcher. Его задача определять на какой раскладке клавиатуры (русская или английская) набрано данное слово.

Однако, данный метод сильно зависит от длины n-граммы. Чем длиннее n-грамма, тем точнее будут результаты. Однако здесь имеется обратная сторона: увеличение длины n-граммы увеличивает объем словаря и, как следствие, время работы алгоритма. Например, словарь 2-грамм русского языка в худшем случае будет содержать 33*33 = 1089 токенов, а словарь 3-грамм – уже 35937 токенов. В реальном словаре, конечно, гораздо меньше токенов: в смешанном словаре 2- и 3-грамм находится всего 14264 токена. Однако проблема на лицо – увеличение количества символов в n-грамме резко увеличивает словарь.

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

Морфологический анализ.

Основным недостатком алгоритмов использующих словарь является размер словаря. Например, [4] содержит 52 000 слов, [5] – 100 000 слов, а словарь [10] – 173 780 слов (3 028 433 словоформы). Из-за больших объемов данных перебор всех слов крайне не желателен.

Согласно исследованиям [5] примерно 5000 морфем позволяют построить около 50000 слов. Для украинского языка соотношение примерно такое же [6]. Учет такой информации позволяет разработать словарь с 10 кратным сжатием.

Определение: Морфологический анализ — процесс выявления морфологических составляющих слова.

Определение: Морфема — наименьшая языковая единица, обладающая значением (по определению, данному американским лингвистом Леонардом Блумфилдом в 1933) [7].

Классификация морфем:

  1. Корень – основная значимая часть слова, непроизводная основа слова. Корень является обязательной частью любого слова — не существует слов без корня. Корневые морфемы могут образовывать слово как в сопровождении аффиксов, так и самостоятельно [8].

  2. Аффикс — вспомогательная часть слова, присоединяемая к корню и служащая для словообразования и выражения грамматических значений. Аффиксы не могут самостоятельно образовывать слово — только в сочетании с корнями. Аффиксы, в отличие от некоторых корней (как, например, какаду), не бывают единичными, встречающимися только в каком-то одном слове [8].

    • Префикс – аффикс, предшествующий корню (приставка).

    • Постфикс – аффикс, следующий за корнем (суффикс, окончание).

    • Интерфикс – аффикс, соединяющий несколько корней.

Например, слово выстиранный имеет корень –тир–, приставки вы–, с–, суффиксы –а–, –нн– и окончание –ый. В сложных словах присутствует несколько корней, соединенных соединительной гласной: пар–о–ход, пыл–е–сос.

Учет морфемной структуры слов позволяет компактно представлять совокупность словоформ, группируя их в словообразовательные гнезда. Такое представление реализуется в виде словаря морфем, содержащего три части – корневую, префиксальную и суффиксальную [5].

В корневой части словаря корни расположены в лексикографическом порядке. В словарной статье под каждым заглавным корнем приводятся однокоренные слова, расчлененные на морфемы. Они расположены следующим образом. Во главе гнезда ставится корневое слово, причем на первом месте обычно располагается существительные с нулевым или выраженным окончанием, на втором – неизменяемые части речи типа наречий, междометий. За корневыми словами идут беспрефиксные слова, имеющие суффиксы (лексикографически упорядоченные), затем следуют по алфавиту префиксальные слова первого префикса в слове.

Если при одной и той же основе может быть несколько производных, то непосредственно после основы слова, разделенной на морфемы, указываются под различными верхними индексами окончания, расположенные в алфавитном порядке, которые, присоединяясь к основе, образуют различные слова, например, под корнем –зл– даются слова √–о1, –ой2, т.е. слова зло, злой.

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

Использование корневой части [5] как основы электронных словарей на данный момент является стандартом в системах морфологического анализа [9].

Алгоритм коррекции ошибок на основе морфологического анализа.

Этап 1. На первом этапе предполагается, что в рассматриваемом слове нет префикса и поэтому в нем пытаемся выделить одну из основ с нулевым префиксом. Если это не удается, то либо в слове есть ошибка, либо в слове есть префикс (этап 2). Сначала проверяется гипотеза об ошибке в основе. Для этого:

  • производятся все возможные разбиения анализируемого слова на основу и окончание;

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

Если сгенерированная основа есть в словаре, то она проверяется на совмести¬мость (принадлежность к флективному классу) с окончанием ана¬лизируемого слова. Если сгенерированная основа не совместима с окончанием анализируемой основы, то она из рассмотрения исключается и генерируется следующая основа; если же сгенерированная основа совместима с окончанием, т. е. она находится в одном флективном классе с анализируемой основой, то она заносится в список кандидатов и совершается переход к генерации следующей основы. По окончании процесса генерации проверяется число основ в списке кандидатов. Если в этом списке окажется больше одной основы, то после присоединения окончаний (разумеется, одинаковых, совпадающих с окончанием анализируемого слова), все они выдаются на экран. Если в списке кандидатов – только одна основа, то после присоединения к ней окончания замещаем этой словоформой анализируемую. Ошибка исправлена. Если же в списке кандидатов не оказалось ни одной осно¬вы, то это значит, что окончание было выбрано неверно, нужно испытать другое окончание. Если в результате перебора всех до¬пустимых пар основа-окончание не удалось найти ни одного кан¬дидата, то это значит, что в слове есть префикс, переходим к этапу 2.

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

Этап 2. На втором этапе проверяется наличие в словоформе префикса. Сначала предполагается, что в префиксе нет ошибки. Начиная с префикса наибольшей длины с той же начальной буквой, что и слово, пытаемся выделить префикс в словоформе. Если это удалось, то среди основ, совместимых с данным префиксом, пыта¬емся найти ту, которая входит в анализируемую словоформу. Если это удается, то осуществляется проверка окончания на принад¬лежность к группе окончаний, определяющих флективный класс найденной основы. Положительный результат проверки свиде¬тельствует о том, что в слове нет ошибки, поэтому осуществля¬ется переход к анализу следующего слова; отрицательный резуль¬тат проверки свидетельствует об ошибке в окончании. Если перебор основ, совместимый: с данным префиксом не дал результата, то это значит, что либо в основе есть ошибка, либо префикс выбран ошибочно. Сначала обращаемся к модулю проверки гипотезы об ошибке в основе (точка (а) на блок-схеме). Если не удалось найти ошибку в основе, то возврат из модуля происходит в точку (в) – выбор следующего префикса. Если перебор всех префиксов с той же начальной буквой, что и слово не дает результата, то осуществляется переход к этапу проверки гипотезы об ошибке в префиксе (метка (ж) на блок-схеме).

Этап 3. Проверку гипотезы об ошибке в префиксе начинаем с того, что пытаемся отделить префикс от основы. Для этого последовательно убираем начальные буквы слова, и для каждого начального отрезка из 1, 2, …, k букв, находим обратное пол¬ное отображение (ОПО). Каждый элемент этого отображения рассматривается как возможный правильный префикс. Эта последо¬вательность символов сравнивается со всеми префиксами языка. В случае совпадения начинается перебор основ, совместимых с этим префиксом, и осуществляется проверка вхождения основ в анали¬зируемое слово. Если найдется основа, входящая в анализируемое слово, то проверяется принадлежность окончания флективному классу этой основы. При положительном результате проверки най¬денный префикс присоединяется вместо удаленных букв, анализи¬руемое слово заменяется полученным, осуществляется переход к анализу следующего слова. Если окончание не принадлежит флек¬тивному классу, то считается, что в окончании ошибка, а это значит, что в слове более одной ошибки.
Вернемся теперь к случаю, когда элемент ОПО не совпал ни с одним из префиксов языка. В этом случае осуществляется пере¬ход к генерации следующего элемента ОПО. Если генерация всех элементов ОПО для начального отрезка словоформы длиной s не дала элемента, совпадающего с одним из префиксов, то длина от¬резка, рассматриваемого как возможный префикс (но с ошибкой!), увеличивается на единицу и процесс повторяется.

Эвристически предполагается, что в любом слове помимо префикса есть еще не менее трех букв. Поэтому, если в остатке словоформы после удаления (s) букв окажется менее трех букв, то либо слова нет в словаре, либо в нем более одной ошибки [10].
Тестирование данного алгоритма в [10] проводилось следующим образом:

  1. Вводится текст в ЭВМ.

  2. Последовательно выбираются отдельные слова этого текста.

  3. С помощью генератора случайных чисел генерируется случайное число r из интервала [1, …, p], где p – число букв в слове. Это слово принимается за номер позиции в слове, в которую будет внесена ошибка. Поскольку рассматривается 4 типа ошибок и считается, что ошибки различных классов равно вероятны, то снова генерируется случайное число из интервала [1, …, 4], которое определяет тип вносимой орфографической ошибки. Наконец, третье случайное число генерируется в случае, если случится ошибка типа “замена буквы”. Оно определяет, какая буква будет поставлена на место буквы, стоящей на месте r.

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

  5. Запускается механизм обнаружения и коррекции ошибок. Оценивается доля ошибок, исправляемых автоматически и доля ошибок, для исправления которых потребовалось вмешательство оператора – это ошибки в некоторых окончаниях.[10]

При тестировании данного алгоритма в [10] были допущены некоторые неточности, повлиявшие на достоверность результатов:

  1. В словарь входили словоформы только тех слов, которые присутствовали в тексте, т.е. бралось слово из текста, приводилось к неопределенной форме, брались все его словоформы и вносились в словарь. Таким образом авторы работы [10] исключили возможные неоднозначности коррекции ошибок. Например, если на вход алгоритма коррекции будет подано слово прйложить, и словаре будут присутствовать слова преложить и приложить, то они будут выданы в качестве вариантов коррекции ошибок. А по результатам тестирования [10] неточность коррекции могла быть только в случаях неоднозначности окончаний.

  2. В работе [10] при имитации появления ошибок в тексте было принято, что ошибки разных типов имеют одинаковую вероятность появления, что противоречит статистике приведенной в [10].

При тестировании алгоритмов реализованных в данной работе эти неточности были учтены.

Реализации.

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

Словарь.

При выборе структуры словаря были рассмотрены модели русского языка [3], а так же учитывались рекомендации [9]. Потому в качестве основы был выбран словарь [11]. Он содержит примерно 124000 корней, что позволяет покрыть достаточно большую часть русского языка (около 300000 слов).

Общим подходом словарь похож на корневую часть словаря [5] и представляет собой текстовый файл в особом формате. Первая секция представляет набор моделей. Моделью называется совокупность пар префикса и постфикса. Ещё одна секция представляет набор корней с указателями соответствующую модель. Таким образом достигается хороший процент сжатия словаря по сравнению с простым перечислением словоформ.

Хранилище словаря.

В начале реализации метода коррекции грамматических ошибок на основе морфологического анализа была использована реляционная база данных (на основе продукта SQLite) для хранения словаря. Однако проведенные тесты показали, что более 90% времени процессорного времени тратиться на разбор sql-выражений, что побудило отказаться от использования реляционных БД. В результате была разработана структура для хранения словаря на основе конечного автомата, для хранения буквенных цепочек в виде дерева. Структура состоит из автомата хранящего все приставки. В конце каждой приставки имеется указатель на автомат содержащий корни, совместимые с ней. Тоже самое представляет из себя автомат корней. Структуру завершает автоматов окончаний. Таким образом структура словаря представляет дерево автоматов.

Создание специализированного хранилища для хранения словаря позволило увеличить производительность и уменьшить сложность выборки слова для работы алгоритма коррекции грамматических ошибок с помощью морфологического анализа.
Для алгоритма n-грамм был построен словарь на основе словаря [11]. Все слова (около 3000000) были представлены в виде списка, потом разбиты на всевозможные n-граммы. Далее эти n-граммы использовались в тестировании алгоритмов.

Описание алгоритмов.

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

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

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

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

Тестирование.

На каждом из алгоритмов было проведено два варианта тестирования: диагностика и коррекция.

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

В результате при тестировании возможностей диагностики алгоритму n-грамм было дано 595192 последовательности символов. В результате 247872 последовательности символов продиагностировано неверно. Т.е. алгоритм n-грамм вернул утвердительный результат – слова принадлежат словарю русского языка, тогда как в реальности эти слова являлись ошибочными. Надо заметить, что словарь n-грамм составлен избыточно, т.к. при наличии 3-грамм в словаре, наличие 2-грамм необязательно. Они являются подмножеством 3-грамм.

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

Коррекция проводилась на меньшем количестве слов. На вход подавалось 10 заведомо корректных слов, после полного обратного преобразования – 2700 заведомо некорректных. Алгоритм n-грамм затратил за коррекцию каждого слова 0.017 секунды. При этом на каждое неправильное слово было возвращено около 250 вариантов слов. Однако, не все эти слова на самом деле принадлежали словарю русского языка.

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

Технические данные.

В реализации библиотеки был использован алгоритм описанный выше, что позволило добиться относительно неплохой производительности. Был использован компактный словарь [11], хотя в работе и не ставилась задача оптимизации по занимаемому дисковому пространству, размер словаря составил около 5 Мб. Данный словарь содержит около 173 780 основами (более чем 3 000 000 слов). В качестве структуры хранения было использовано дерево конечных автоматов, что позволило увеличить быстродействие на 2 порядка по сравнению с использованием реляционных БД. Реализация выполнена на языке С++ с использованием переносимых библиотек, тестировалась на платформе Linux, выполняется портирование под Windows.

Выводы.

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

Список литературы:

  1. Гниловская Л.П. Гниловская Н.Ф. Автоматическая коррекция орфографических ошибок // Культура народов Причерноморья. – 2004. – № 48. – с. 171 – 180.
  2. Бутакова Л.О. Опыт классификации ошибок, свойственной письменной речи. 1998. Internet: http://www.omsu.omskreg.ru/vestnik/articles/y1998-i2/a072/article.html
  3. Гельбух А.Ф. Эффективно реализуемая модель морфологии флективного естественного языка. – Москва, 1994. – 77 с.
  4. Зализняк А.А. Грамматический словарь русского языка: Словоизменение. – М.: Рус. яз., 1987. – 880 с.
  5. Кузнецова А.И., Ефремова Т.Ф. Словарь морфем русского языка. – М: Русский язык, 1986. – 1134 с.
  6. Полюга Л.М. Морфемній словник.– К.: Рад. школа, 1983. – 464 с.
  7. Морфема. Википедия, 2007. Internet: http://ru.wikipedia.org/wiki/Морфема.
  8. Прохоров А.М. Советский энциклопедический словарь. – М.: Сов. энциклопедия, 1989. – 1632 с.
  9. Ножов И.М. Морфологическая и синтаксическая обработка текста (модели программы). – Москва, 2003. – 140 с.
  10. Кондратюк Д.Л. Разработка и исследование метода повышения надежности вычислительных устройств, реализующих эвристические алгоритмы. – Севастополь, 1993. – 224 с.
  11. Русский морфологический словарь. АОТ. Internet: http://www.aot.ru



Добавить комментарий: