Введение

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

Алгоритмы

Любой проверяющий орфографию должен обладать определенным объемом данных о словах целевого языка, как в общем употреблении, так и со специализированными знаниями (например, медицинская терминология). Эти данные могут поступать из: словаря всех известных слов; текстового корпуса, содержащего типичный текст, признанный правильно написанным; списка часто встречающихся опечаток с сопоставлением ошибок и исправлений; журналов ввода текста пользователями, например, из популярной поисковой системы. По сути, это коллективный корпус, однако предполагается наличие в нем орфографических ошибок. Также могут учитываться данные о том, когда пользователи выбирают предложенные исправления или выполняют повторный, очень похожий запрос, что создает коллективную карту опечаток и надежных исправлений. Список часто встречающихся опечаток, возможно, включающий многословные фразы, можно использовать для проверки наличия входных слов или фраз в этом списке. Для использования словаря без предварительного сопоставления опечаток и исправлений обычно рассчитывается расстояние редактирования между входным словом и каждым словом в словаре. Метрика расстояния Левенштейна рассматривает "редактирование" как вставку, удаление или замену одной буквы. Расстояние Дамерау — Левенштейна добавляет транспозиции (перестановку соседних букв). Слова, находящиеся на расстоянии редактирования 1 от входного слова, считаются наиболее вероятными исправлениями, расстояние редактирования 2 — менее вероятными, а расстояние редактирования 3 иногда включается в предложения, а иногда игнорируется. Текстовый корпус можно представить как словарь известных слов с указанием частоты появления каждого слова. Это можно использовать для сортировки предложений по исправлению. Например, если есть несколько предложений с расстоянием редактирования 1, то слова, которые чаще всего встречаются в корпусе, с наибольшей вероятностью являются желаемым исправлением. Поскольку словарь известных слов очень велик, вычисление расстояния редактирования между входным словом и каждым словом в словаре требует значительных вычислительных ресурсов и, следовательно, является относительно медленным. Для ускорения поиска в хранилище можно использовать различные структуры данных, такие как BK-деревья. Более быстрый подход, предложенный Питером Норвигом, заключается в генерации всех возможных перестановок входного слова с учетом всех возможных редактирований. Для слова длиной n и алфавита размером a, при расстоянии редактирования 1 существует не более n удалений, n-1 транспозиций, a*n замен и a*(n+1) вставок. Используя только 26 букв английского алфавита, это приведет к 54*n+25 обращениям к словарю, за вычетом дубликатов (зависящих от конкретных букв в слове). Это относительно небольшое число по сравнению со словарем, содержащим сотни тысяч слов. Однако для расстояния редактирования 2 и более могут потребоваться десятки или сотни тысяч обращений. Еще одним нововведением, предложенным Вольфом Гарбе, является SymSpell.

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