Список работ

Методы автоматического поиска и исправления ошибок в предложении

Титов Д. А., А-13-14

Содержание

Виды ошибок

Различают следующие виды ошибок в русском языке [1, 2]:

Вид ошибкиРаздел русского языка
Орфографические ошибкиОрфография
Пунктуационные ошибкиСинтаксис
Грамматические ошибкиМорфология
Речевые ошибкиЛексика
Стилистические ошибкиЛексика и Развитие речи
Логические ошибкиРазвитие речи
Фактические ошибкиРазвитие речи
Нарушение абзацного члененияСинтаксис и Развитие речи
Бедность и однообразие синтаксических конструкцийРазвитие речи

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

Пунктуационные ошибки – это ошибки в постановке знаков препинания (запятая, точка, тире, двоеточие, вопросительный и восклицательный знаки, точка с запятой, кавычки, скобки, троеточие).
Примеры:
С ошибкойБез ошибки
Красные ягоды листья узорные…Красные ягоды, листья узорные…
Всё деревья, кусты, листва на земле трепетало от порывистого ветра.Всё: деревья, кусты, листва на земле – трепетало от порывистого ветра.
Инспектор ответил: Я не согласен.Инспектор ответил: «Я не согласен».

Грамматические ошибки – это нарушения структуры языковой единицы. Вызваны нарушением норм словообразования, формообразования, норм синтаксической связи между словами внутри предложения или словосочетания, частей сложных предложений.
Примеры:
Вид ошибкиС ошибкойБез ошибки
Ошибочное словообразованиеТрудолюбимый
Равнодушество
Подскользнуться
Военоначальник
Трудолюбивый
Равнодушие
Поскользнуться
Военачальник
Ошибочное образование формы существительногоМногие чуда техникиМногие чудеса техники
Ошибочное образование формы прилагательногоКрасивше выглядитКрасивее выглядит
Ошибочное образование формы числительногоОбоим сестрамОбеим сестрам
Ошибочное образование формы местоименияИхние детиИх дети
Ошибочное образование формы глаголаПо вечерам я дремаю у телевизора.По вечерам я дремлю у телевизора.
Нарушение согласованияЯ знаком с группой ребят, увлекающимися джазом.Я знаком с группой ребят, увлекающихся джазом
Нарушение управленияповествует читателейповествует читателям
Нарушение связи между подлежащим и сказуемымКто это пришла?Кто это пришел?
Нарушение способа выражения сказуемого в отдельных конструкцияхВсе были рады, счастливы и весёлые.Все были рады, счастливы и веселы.
Ошибки в построении предложения с однородными членамиСтрана любила и гордилась поэтом.
Построена школа и больница.
Страна любила поэта и гордилась им.
Построены школа и больница
Ошибки в построении предложения с деепричастным оборотомЧитая этот текст, возникает такое чувство…Когда я читаю этот текст, возникает такое чувство…
Ошибки в построении предложения с причастным оборотомУзкая дорожка была покрыта проваливающимся снегом под ногами.Узкая дорожка была покрыта проваливающимся под ногами снегом.
Ошибки в построении сложного предложенияЭта книга научила меня ценить и уважать друзей, которую я прочитал еще в детстве.Эта книга, которую я прочитал еще в детстве, научила меня ценить и уважать друзей.
Смешение прямой и косвенной речиАвтор сказал, что я не согласен с мнением рецензента.Автор сказал, что он не согласен с мнением рецензента.
Нарушение границ предложенияКогда герой опомнился. Было уже поздно.Когда герой опомнился, было уже поздно.
Нарушение видовременной соотнесённости глагольных формЗамирает на мгновение сердце и вдруг застучит вновь.Замирает на мгновение сердце и вдруг стучит вновь.
Неверное употребление местоименийДанный текст написал В. Белов. Он относится к художественному стилю.Данный текст написал В. Белов. Текст относится к художественному стилю.

Речевые ошибки – это употребление не соответствующих смыслу слов или форм слова.
Примеры:
С ошибкойБез ошибки
Благодаря творениям потрясающих авторов Серебряного века, мы слышим «громкую мелодию эпохи».Благодаря великим произведениям известных поэтов Серебряного века, мы слышим «громкую мелодию эпохи».
Правда зачастую скрыта в глубинах произведения.Правда часто скрыта писателем между строк произведения.

Стилистические ошибки – это ошибки в употреблении стилистически окрашенных слов в инородном стиле. Нередко в быту используется сниженная лексика: разговорные, жаргонные слова, просторечная лексика.
Примеры:
С ошибкойБез ошибки
Попечитель богоугодных заведений подлизывается к ревизору.Попечитель богоугодных заведений заискивает перед ревизором.
В этом эпизоде главный герой накосячил.В этом эпизоде главный герой допустил просчет / совершил ошибку.
Стилистический и смысловой разнобой между частями предложения
Рыжий, толстый, здоровый, с лоснящимся лицом, певец Таманьо привлекал Серова как личность огромной внутренней энергии.Огромная внутренняя энергия, которой привлекал Серова певец Таманьо, сказывалась и в его внешности: массивный, с буйной рыжей шевелюрой, с брызжущим здоровьем лицом.

Логические ошибки – это ошибки логического построения текста: Фактические ошибки – это ошибки смысловые, искажение исходного содержания текста.
Примеры:
С ошибкойБез ошибки
Вспоминаются слова известной песни: «Жить без любви, может и просто, но как на свете без любви прожить?»Вспоминаются слова известной песни: «Жить без любви, быть может, просто, но как на свете без любви прожить?»
Трагедия А.Н. Островского «Гроза» была совершенно новым явлением в русской литературе.Драма А.Н.Островского « Гроза» была совершенно новым явлением в русской литературе.

Нарушение абзацного членения – текст неверно разделен на абзацы.

Бедность и однообразие синтаксических конструкций: Мужчина был одет в прожженный ватник. Он был грубо заштопан. Сапоги были почти новые. Носки изъедены молью. – Мужчина был одет в грубо заштопанный прожженный ватник, хотя сапоги были почти новые, носки оказались изъедены молью.

Расстояние Левенштейна

Расстояние Левенштейна, или расстояние редактирования между двумя строками – это минимальное количество операций вставки, удаления и замены символа на другой, необходимых для превращения одной строки в другую [3].
Пусть S1 и S2 – две строки длиной M и N соответственно. Тогда расстояние Левенштейна d(S1, S2) можно рассчитать по следующей рекуррентной формуле (первый элемент строки имеет номер 1):

d(S1, S2) = D(M, N),

где
Расстояние Левенштейна
где m(a, b) = 0 , если a = b, или 1 – в противном случае.
Здесь шаг по i символизирует удаление из первой строки, по j – вставку в первую строку, а шаг по обоим индексам символизирует замену символа или отсутствие изменений.
Справедливы следующий утверждения:

Расстояние Левенштейна

Методы автоматического поиска и исправления ошибок в предложении

Поиск слова в словаре

Выполняется поиск проверяемого слова в словаре, и если слово не найдено, то оно подчеркивается. Кандидаты на замену слова с ошибкой (ССО) определяются как слова из словаря, наиболее близкие к ССО. Близость устанавливается по расстоянию Левенштейна [4].

Достоинством метода является его простота.

Недостатки:

Пример: Microsoft Word. Приложение не исправляет слово с ошибкой, но предлагает выбор для его замены.

Прямой подход

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

Достоинством метода является простота использования.

Недостатки:

Наивный подход

Вычисляются расстояния Левенштейна от слова с ошибкой до каждого слова словаря, а затем для замены из словаря выбирается слово с минимальным расстоянием Левенштейна. При обнаружении нескольких вариантов замен используются дополнительные критерии выбора. Этот способ правки необычайно дорог [5].

Стратегия промаха (Near-Miss Strategy). Подход Питера Норвига

Если слово не найдено в словаре, то генерируются все возможные комбинации слова с заданным расстоянием редактирования (операции удаления, перестановки, замены и вставки) и выполняется их поиск в словаре [6]. Если эти шаги приводят к слову, содержащемуся в словаре, то оценивается расстояние до исходного слова. Чтобы измерить близость слов, используется расстояние Левенштейна или одна из его модификаций [7]. Из числа найденных слов для замены выбирается слово с наименьшим расстоянием Левенштейна.
Метод весьма ресурсоемок. Так, для слова длины n, размера алфавита a, расстояния редактирования d = 1, будут выполнены n удалений букв, n – 1 перестановок, a * n изменений и a * (n + 1) вставок. В общей сложности число получаемых модификаций исходного слова равно 2n + 2an + a – 1. Число модификаций будет еще больше, если добавить операцию вставки пробела.
Этот способ хоть и лучше наивного подхода, однако все же весьма дорогостоящий по времени поиска и зависит от языка. Так для n = 9, a = 36, d = 2 получается 114 324 комбинации. Алфавит используется для генерации комбинаций, и он может быть очень большим. Так, в китайском языке а = 70'000 Unicode Han-символов.

Достоинство алгоритма: использование расстояния Левенштейна, что повышает точность ответов.

Недостатки:

Пример: Спеллчекер Питера Норвига.

Орфографическая коррекция на основе симметричного удаления

Орфографическая коррекция на основе симметричного удаления (Symmetric Delete Spelling Correction - SymSpell) использует модификации исходного слова с заданным расстоянием редактирования, полученные только в результате применения операции удаления символа.
SymSpell использует тот факт, что расстояние между двумя выражениями симметрично: добавление символа в словаре эквивалентно удалению символа из входной строки и наоборот. Поэтому мы можем с обеих сторон ограничить преобразование только удалением.
Генерация модификаций слов словаря выполняется единожды на этапе инициализации SymSpell. Далее сгенерированные модификации проверяемого слова сравниваются с модификациями, полученными на предварительном этапе.
Рассмотрим следующий пример с заменой (в примере будет использоваться расстояние редактирования равное единице). Пусть в оригинальном словаре содержится слово тест. А было введено слово темт. В индексе, полученном на предварительном этапе, будут находится все «удаления» слова тест, а именно: ест, тст, тет, тес. Для слова темт «удаления» будут следующими: емт, тмт, тет, тем. Поскольку удаление тет содержится в индексе, то это означает, что слову с опечаткой темт соответствует слово тест.
Число модификаций исходного слова, получаемых в результате удалений, не зависит от размера алфавита и вычисляется по следующей формуле:

x = Ckd,

где n – длина слова, d – расстояние редактирования.
Так, при n = 9, d = 2 получим x = 36, что на несколько порядков меньше аналогичного показателя стратегии промаха для тех же значений n и d: x = 114'324.
Обобщая вышесказанное, можно утверждать, что стоимость данного подхода заключается лишь во времени предварительного расчета и объеме хранилища для всех удалений каждого слова в словаре.
Таким образом, например, для максимального расстояния редактирования 2 и средней длины слова в 5, и 100 000 записей в словаре необходимо дополнительно сохранить 1'500'000 «удалений».
Система исправления ошибок, использующая рассматриваемый подход, включает следующие таблицы:
- словарь с правильными написаниями слов;
- таблицу всех модификаций слов словаря.
Таблица модификаций исходных слов формируется по следующему алгоритму:

  1. Последовательно выбирается слово из словаря правильных написаний, а текущее расстояние редактирования присваивается равное 0.
  2. Текущее расстояние редактирования увеличивается на 1
  3. В цикле по порядку из данного слова удаляется одна буква. В результате этого шага получается ровно n выражений-модификаций исходного слова, где n – количество букв в исходном слове. Полученные модификации запоминаются в списке всех удалений этого слова с указанием исходного слова и текущего расстояния редактирования, в том случае, если он еще не содержит такой модификации.
  4. Если максимальное расстояние редактирования больше текущего, то алгоритм запускается рекурсивно (переход к шагу 2) для каждого выражения-модификации, полученного на шаге 3.
  5. Внесение записей из списка всех удалений данного слова в таблицу удалений и переход к шагу 1.

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

  1. Исходное слово сравнивается с записью в словаре правильных слов. Если существуют совпадения, то алгоритм завершается (в этом случае слово написано правильно). Иначе – переход к следующему шагу.
  2. Исходное слово сравнивается с записями в словаре удалений. Если совпадение найдено, то в список кандидатов для этого слова запоминается слово, указанное в качестве исходного для данного удаления. Далее – переход к следующему шагу.
  3. Удаления исходного слова сравниваются с записью в словаре правильных слов. Если совпадение найдено, в то в список кандидатов этого слова запоминается найденное совпадение (в этом случае пользователь мог ввести лишние буквы).
  4. Удаления исходного словари сравниваются с записями в словаре удалений. Если совпадение найдено, то в список кандидатов для исходного слова запоминается слово, указанное в качестве исходного для данного удаления в словаре удалений.
  5. Далее список кандидатов сортируется сначала по расстоянию Левенштейна до исходного слова, затем по частоте встречаемости.

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

Если индекс основан на таблице хэшей, поиск по которой занимает константное О(1) время, то алгоритм SymSpell имеет вычислительную сложность О(1), в то время как, например, алгоритм, основанный на BK-деревьях имеет вычислительную сложность О(log(размер_словаря)) [4, 8].

Использование правил (rule-based подход)

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

Достоинство: учет контекста.

Недостаток: сложность (почти невозможность) реализации.

Использование модели языка (модифицированная стратегия промаха)

Модель языка умеет отвечать на вопрос, с какой вероятностью данное предложение может встретится в языке. На сегодняшний день в основном используются два подхода: модели на основе N-грамм [9] и применение искусственного интеллекта на основе нейросетей [10].

а) N-граммная модель.
N-грамма – это последовательность из n элементов. Например, последовательность звуков, слогов, слов или букв.
N-граммная модель работает следующим образом. По тексту, используемому для обучения модели, проходим окном размером в N слов и подсчитываем количество обнаружений каждой n-граммы. При запросе к модели аналогичным образом проходим окном по предложению и считаем произведение вероятностей всех n-грамм. Вероятность встретить n-грамму оцениваем по количеству таких n-грамм в обучающем тексте.
Вероятность P(w1, ..., wm) встретить предложение (w1,..., wm) из m слов примерно равна произведению всех n-грамм размера n, из которых состоит это предложение:

Вероятность

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

Вероятность n-граммы

На практике в чистом виде такую модель не используют, так как у неё есть следующая проблема. Если какая-то n-грамма не встречалась в обучающем тексте, то всё предложение сразу же получит нулевую вероятность. Для решения этой проблемы используют один из вариантов сглаживания. В простом виде – это добавление единицы к частоте встречаемости всех n-грамм, в более сложном – использование n-грамм более низкого порядка при отсутствии n-граммы высокого порядка.
Самая популярная техника сглаживания – Kneser–Ney smoothing [11]. Однако она требует для каждой n-граммы хранить дополнительную информацию, а выигрыш по сравнению с более простым сглаживанием получается незначительным (по крайней мере в экспериментах с небольшими моделями, до 50 миллионов n-грамм). Для простоты в качестве сглаживания будем считать вероятность каждой n-граммы как произведение n-грамм всех порядков, например, для триграмм:

Упрощение расчета вероятности n-граммы

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

Достоинство алгоритма: учет контекста.

Недостатки:

Пример: JamSpell.

б) Модель на основе ИИ.
Для учета контекста можно использовать нейросеть типа LSTM (Long Short Term Memory) – нейросеть с короткой и длинной памятью [12]. Суть LSTM в том, что нейроны этой сети имеют определенный параметр, который запоминает, о чем идет речь в том или ином предложении [13, 14]. Важным аспектом является то, какие слова в предложении значимы, а какие нет. Для этого используется NLP (Natural Language Processing) – обработка естественного языка. Техника NLP позволяет определить интонацию предложения, понять, о чем идет речь, и выделить ключевые слова.

Достоинство: учет контекста.

Недостаток: сложность реализации.

Примеры: Spell-Checker [15], Яндекс.Спеллер – использует машинное обучение и библиотеку машинного обучения CatBoost [16].

Фонетический алгоритм

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

Правила компиляции фонетической метки:

1. Слитно, раздельно, через дефис.
Большой класс орфографических ошибок – написание раздельно/слитно/через дефис. Поэтому при компиляции фонетической метки все символы, кроме русских букв, удаляются. Этот пункт применим к словарным записям, представляющих собой устойчивые группы из нескольких слов, например, "потому что"; "в течение"; "за границу".
Например:

2. Двойные согласные.
Вторая по популярности сложность – двойные согласные. Соответственно все две и более одинаковые буквы заменяем на одну:
искуССтво → <искуСтво>.
Имеет смысл повторить склеивание на последнем этапе, склеивая не буквы, а звукометки, чтобы учесть ошибки типа:
3. Мягкий знак, твёрдый знак.
Мягкий и твёрдый знаки удаляем из слова. Часто эти буквы либо забывают поставить в нужное место, либо наоборот ставят куда не следует (*японський).
4. Упрощение групп согласных:
А также менее продуктивные:
5. Характерные сочетания букв.
Характерные двухбуквенные сочетания со статистически заметными случаями совершения ошибок:
6. Гласные буквы.
Гласные заменяем по принципу:
С буквами Ё и Я существует неоднозначность, к какому их относить классу при компиляции метки (рис. 1).

Тепловая карта для букв я и ё

Рис. 1. Тепловая карта букв «я» и «ё» и их ошибочных написаний

Фонетически буква «Ё» может передавать два звука «ЙОТ»-«О». И если посмотреть по статистике пользовательских ошибок, то пара «Ё»-«О» является наиболее вероятной. Но на практике, если ваш словарь не содержит буквы Ё или пользователи не используют Ё при вводе, то лучше сводить «Ё» к «И»-классу (ы, и, е, э).
Буква Я, по аналогии, может передавать два звука «ЙОТ»-«А». Но по статистике люди чаще, совершая ошибку, пишут «Е» или «И» вместо «Я» (*премая, *кипеток, *выпримлять). Так что отнесение «Я» к «И»-классу (ы, и, е, э) однозначно будет более выгодным.
Если уточнить, то после шипящих и Ц более вероятной будет как раз ошибка А-Я. (Наоборот быть не может – в русской орфографии после этого класса согласных (шипящие и Ц) Я никогда не пишется.) Это правило можно встроить в алгоритм.
Буквы, предшествующие обозначенным на тепловой карте парам эталон-ошибка, показаны на рис. 2.

Тепловая карта пар эталон-ошибка

Рис. 2. Тепловая карта пар эталон-ошибка и предшествующим им буквам

7. Оглушение согласных:
В некоторых реализациях предлагается не делать оглушение в сильной позиции (т.е. если за буквой следует одна из букв р, л, м, н, в, й или гласная). Однако, как показала практика, алгоритм начинает работать хуже.
8. Шипящие и Ц.
Шипящим и Ц уделяется много внимания при изучении правописания: ш, щ, ч, ж, ц → ш.

Достоинства фонетического алгоритма:

Недостатки:

Примеры: Soundex, Metaphone, Double Metaphone.

Использование префиксных деревьев

Структура дерева имеет следующий вид: каждый узел представляет собою пару «ключ, значение». В ключе записываются буквы слов, а значениями являются элементы дерева [18].
Пары «ключ, значение» формируются следующим образом: берётся первый символ слова, записываем в ключ узла, далее получаем ссылку на соответствующее поддерево (при необходимости оно тут же и создаётся). Рекурсивно записываем остаток строки в это поддерево. Когда строка исчерпана, к последнему узлу добавляется «знак остановки» – ключ '$' с пустым поддеревом.
Если представить дерево как некую многократно разветвляющуюся дорогу, то функция поиска слова – путник, идущий по этой дороге. Путнику дан маршрут (искомое слово), и в соответствии с ним он переходит от узла к узлу, зачеркивая пройденные буквы маршрута. Если буквы кончились, остаётся проверить, виден ли «знак остановки».
Теперь представим, что клоны путника одновременно отправляются во все стороны сразу. Каждый из его клонов на каждой развилке действует по одной схеме, и так до тех пор, пока в каждую из конечных остановок (то есть листьев дерева) кто-нибудь не придёт. Общее количество клонов путника равно количеству слов, записанных в дерево, и каждый из них пройдёт по индивидуальному пути.
Пусть всем им изначально задано одно и то же слово-маршрут. При каждом переходе каждый путник, как и раньше, зачеркивает по одной букве в своей копии маршрута. Но если реальное направление перехода не совпадает с зачёркнутой буквой, путник получает штраф. В результате в конце пути у каждого будет накоплена некоторая задолженность. Выстроим всех в ряд, отсортировав по возрастанию этой величины.
Если искомое слово присутствует в словаре, то один путник пройдёт весь путь без штрафов – в отсортированном списке он будет первым. Если слово в словаре отсутствует, то лидировать будет тот, кто прошёл путь с минимальным количеством нарушений.
Смысл в том, что путь, пройденный лидером, будет ближайшим исправлением заданного слова (или самим этим словом, если опечаток нет), а количество нарушений (отклонений от заданного маршрута) – количеством опечаток. Таким образом осуществляется нечеткий поиск.
Достоинства алгоритма:

Недостатки:

Использование векторного представления слов

В [19] проектируется нейронная сеть, находящее слово по его левому контексту. В системах проверки правописания это слово может быть использовано для пополнения списка кандидатов на замещение слова с ошибкой. Предварительно по технологии word2vec в [19] создается словарь с векторным представлением слов. Далее проектируется и обучается нейронная сеть, принимающая на входе левый контекст слова и выдающая на выходе слово, с наибольшей вероятностью отвечающее этому контексту. После этого в word2vec-словаре находятся слова, семантически близкие в полученному от нейронной сети слову. Из этих слов предлагается выбрать слово, продолжающее полученный на входе нейронной сети левый контекст. Глубина левого контекста, взятая в [19], равна 1 (на вход сети подается одно слово).

Достоинства:

Недостатки:

Литература

  1. Уроки литературы. Все виды ошибок. [Электронный ресурс] Режим доступа: http://chitaj.ucoz.net/index/vse_vidy_oshibok/0-99 (Дата обращения: 01.06.2018).
  2. Левченко О. С., Тишина Т. Н. Готовимся к ГИА по русскому языку. 9 класс : (пособие для учителя) : комментарии, рекомендации, дидактические материалы. Бюджетное образовательное учреждение Омской обл. доп. проф. образования "Ин-т развития образования Омской обл.". - Омск: БОУ ДПО "ИРООО", 2009. - 135 с.
  3. Расстояние Левенштейна. [Электронный ресурс] – Режим доступа: https://ru.wikipedia.org/wiki/Расстояние_Левенштейна – (Дата обращения: 01.06.2018).
  4. 1000x Faster Spelling Correction algorithm (2012). [Электронный ресурс] – Режим доступа: https://medium.com/@wolfgarbe/1000x-faster-spelling-correction-algorithm-2012-8701fcd87a5f – (Дата обращения: 01.06.2018).
  5. Christopher D. Manning, Prabhakar Raghavan, Hinrich Schutze. Introduction to Information Retrieval. – Cambridge University Press. 2008. – P. 45-59. – ISBN: 978-0-521-86571-5.
  6. How to Write a Spelling Corrector. [Электронный ресурс] – Режим доступа: http://norvig.com/spell-correct.html – (Дата обращения: 01.06.2018).
  7. Spell Check Algorithms. [Электронный ресурс] – Режим доступа: https://documentation.devexpress.com/windowsforms/2989/Controls-and-Libraries/Spell-Checker/Fundamentals/Spell-Check-Algorithms – (Дата обращения: 01.06.2018).
  8. BK-Tree:| Introduction & Implementation. [Электронный ресурс] – Режим доступа: https://www.geeksforgeeks.org/bk-tree-introduction-implementation/ – (Дата обращения: 01.06.2018).
  9. Daniel Jurafsky, James H. Martin. Language Modeling with Ngrams. Speech and Language Processing. Copyright ©2016. Draft of August 7, 2017.
  10. Исправляем опечатки с учётом контекста. [Электронный ресурс] – Режим доступа: https://habr.com/post/346618/ – (Дата обращения: 01.06.2018).
  11. Stanley F. Chen, Joshua Goodman. An empirical study of smoothing techniques for language modeling. - Computer Speech and Language 13. 1999. – P. 359–394.
  12. Как научить нейросетевого чатбота учитывать контекст диалога? [Электронный ресурс] – Режим доступа: https://ru.stackoverflow.com/questions/608197/Как-научить-нейросетевого-чатбота-учитывать-контекст-диалога – (Дата обращения: 01.06.2018).
  13. Understanding LSTM Networks. [Электронный ресурс]. – Режим доступа: https://colah.github.io/posts/2015-08-Understanding-LSTMs/ – (Дата обращения: 01.06.2018).
  14. LSTM – сети долгой краткосрочной памяти. [Электронный ресурс] – Режим доступа: https://habr.com/company/wunderfund/blog/331310/ – (Дата обращения: 01.06.2018)
  15. Spell-Checker. [Электронный ресурс] – Режим доступа: https://github.com/Currie32/Spell-Checker – (Дата обращения: 01.06.2018).
  16. Спеллер. [Электронный ресурс] – Режим доступа: https://tech.yandex.ru/speller/ – (Дата обращения: 01.06.2018).
  17. Делаем спеллчекер на фонетических алгоритмах своими руками. [Электронный ресурс] – Режим доступа: https://habr.com/post/325364/ – (Дата обращения: 01.06.2018).
  18. Обработка и классификация запросов. Часть третья: Исправление опечаток. [Электронный ресурс] – Режим доступа: https://habr.com/company/mailru/blog/178401/ – (Дата обращения: 01.06.2018).
  19. Кочешков И. В. Исследование и разработка средств поиска слова по контексту с использованием нейросетевого подхода. Выпускная работа бакалавра. – Москва: МЭИ, 2017. – 55 с.

Список работ

Рейтинг@Mail.ru