Орфографические ошибки.
Неудачи, связанные с орфографическими ошибками, возникают тогда, когда в распознаваемой лексеме имеются пропущенные или неправильные буквы, перестановка букв или лишние буквы. Орфографические ошибки являются наиболее распространенной формой неграмматичности, с которой имеют дело интерфейсы, работающие на естественном языке.
Обычно ошибка превращает слово в нераспознаваемую цепочку букв. Но иногда неверно написанное слово совпадает с другим словом, содержащимся в словаре системы, которое нарушает семантические и синтаксические ожидания. Например:Copy the flies from the accounts directory to my directory.
‘Скопировать этих мух из справочника расчетов в мой справочник.’
Хотя flies ‘мухи’ может быть вполне нормальным словом для предметной области некоторого конкретного интерфейса (например, в файлах могут храниться статистические данные об инвазии средиземноморской плодовой мухи в Калифорнию), читателю очевидно, что в этом предложении имеется слово с орфографической ошибкой.
Существуют широкоизвестные алгоритмы соотнесения неправильно написанного слова с множеством возможных исправлений (Durham, Lamb and Saxe, 1983), и наиболее простая стратегия преодоления заключается в соотнесении незнакомого слова с множеством всех слов, содержащихся в словаре интерфейса. Однако очевидно, что этот метод дает неверный результат в том случае, когда ошибка привела к совпадению с уже имеющимся в словаре словом, и, далее, это может вызвать нежелательную неоднозначность в других случаях.
Наилучшие результаты достигаются тогда, когда исправление ошибок происходит с учетом синтаксических и семантических ожиданий. В следующем примере:
Add two fixed haed dual prot disks to the order
haed может быть исправлено на had ‘имел’, head ‘головка’, hand ‘рука’, heed ‘забота’ и hated ‘ненавидел’. Два слова отбрасываются на основе синтаксических ожиданий и два других — на основе семантических ограничений проблемной области; в качестве подходящего исправления остается ‘fixed head disk’ ‘диск с фиксированными головками’.
С вычислительной точки зрения существуют два способа организации такого анализа. Можно либо сравнивать ожидания анализатора со всеми возможными исправлениями по текущему словарю анализатора и отбраковывать ложные исправления, либо использовать ожидания анализатора для порождения множества возможных слов, которые могут быть распознаны в текущей точке разбора, и затем уже использовать это множество в качестве входа алгоритма исправления орфографических ошибок. С точки зрения эффективности второй способ, если он может быть осуществлен, безусловно, предпочтительнее. Порождение всех возможных исправлений при словаре в 10 000 слов только ради отбраковки всех единиц, кроме одного или двух нужных слов,— интенсивный вычислительный процесс, тогда как использование полностью индексированных (конкретизированных) ожиданий анализатора — гораздо более ограниченный процесс и с меньшей вероятностью порождает неоднозначность. В вышеприведенном примере prot имеет 16 возможных исправлений в небольшом оперативном словаре. Однако семантические ожидания позволяют использовать в той же позиции, что и prot, только одно слово [6]; таким образом, процесс исправления наиболее эффективен в том случае, когда вначале порождается список возможных слов.1.1.