
                                 "Интеркомпьютер"  1989 г., N 2. 


                  ЗНАКОМЬТЕСЬ, "СПЕЛЛ ЧЕКЕР"
                               
                  Э.К.Лавошникова, А.В.Трусов
                               
   Возможно,   читатели,    которым   приходилось    вводить   в
персональный компьютер тексты на  английском языке, использовали
Spelling  Checker   -  программу  проверки   правописания.   Для
совместимых   с  IBM   PC   компьютеров  существуют   программы,
предназначенные  для проверки  англоязычных  файлов, текстов  на
экране дисплея  или для  непрерывной проверки  в процессе  ввода
(Microsoft Spell,  Webster's New  World Spelling  Checker, Turbo
Lightning,  Grammatic  III).   Программы  проверки  правописания
являются  также  составной  частью почти  всех  недавних  версий
систем для подготовки текстов (Wordstar,  Word Perfect, MS Word,
Professional Write,  Multy Edit, ChiWriter, Webster's  New World
Writer II, Right Writer, PC Quintet,  Word Writer PC и др.).  На
разных  типах ПЭВМ  имеются  средства  для проверки  текстов  не
только на  английском, но и  на французском, испанском  и других
иностранных языках.
   У  нас  ПЭВМ   "обучены"  русскому  алфавиту  и   тоже  часто
используются для  написания научных  работ, составления  разного
рода документации, отчетов, инструкций,  деловых писем и многого
другого.  Однако программные средства для проверки русскоязычных
текстов пока  недостаточно распространены.   Это объясняется  не
только  общим состоянием  русификации ПЭВМ,  но и  особенностями
русского  языка,  одного   из  самых  трудных  языков   в  мире,
обладающего   весьма    сложной   системой    словоизменения   и
словообразования  (трудности  с  ударением в  русском  языке,  к
счастью, для проверки письменных текстов не так важны).
   Одно из  значений английского слова spelling  - правописание,
орфография.   Словосочетание Spelling  Checker,  или, как  часто
пишут,  Spell  Checker,  можно перевести  на  русский  язык  как
'программа   проверки   правописания'  или   'программа   поиска
орфографических ошибок'.  В англоязычной литературе используется
также  термин  Spelling  Corrector, если  хотят  подчеркнуть  то
обстоятельство,  что  программа   умеет  также  "корректировать"
ошибки, т.е.  предлагать возможные варианты исправления.  В ряде
работ на  русском языке (Г.Г.Белоногов, И.А.Большаков  и другие)
такую систему называют АВТОКОРРЕКТОРОМ (сокращенно, АК).
   Такие  автоматические   или  автоматизированные   корректоры,
конечно, не могут решить всех  задач по проверке текста.  Ошибки
могут     быть    смысловыми,     логическими,     фактическими,
стилистическими  и  др.   Правда,   некоторые  стилистические  и
пунктуационные ошибки достаточно легко поддаются автоматическому
обнаружению (повторы слов, непарность скобок, удвоение запятой и
т.п.).
   Для  нахождения ошибок  в  согласовании ('красивый  девушка',
'твоя моя не понимай', 'энергичная премьер-министр', 'из пламя и
света', 'скучала за  тобой', 'плохо веду на уроках'  - здесь еще
возникает проблема, что считать ошибкой), а также пунктуационных
ошибок требуется  иметь в  в составе  АК достаточно  эффективный
синтаксический и семантический анализатор.  Не принижая важности
и перспективности этой задачи, отметим,  что ошибки, например, в
согласовании   и   управлении    русскоязычный   человек   легко
обнаруживает  при чтении  текста.   Поиск  ошибок внутри  слова,
часто возникающих при работе с клавиатурой, требует специального
внимания,  отвлекающего  от  понимания   написанного.   Если  вы
сделаете   орфографическую  ошибку   и   не   заметите  ее   при
первом/втором  чтении,  то  в   силу  некоторых  психофизических
особенностей восприятия  (так называемые  "глазные ошибки")  вы,
скорее всего,  будете не замечать  эту ошибку и  при последующих
проверках.   Считается, что  однократная проверка  машинописного
или типографского  текста выявляет около  80-90% ошибок,  но при
просмотре распечаток,  а в  особенности при  проверке текста  на
экране  дисплея, где,  например,  буквы 'ш'  и  'щ',  'з' и  'э'
зачастую плохо различимы, этот процент должен быть ниже.

   Известны  три  основных  метода для  создания  систем  поиска
орфографических ошибок.

   СТАТИСТИЧЕСКИЙ   метод.   Система   составляет  список   всех
словоформ,   встретившихся   в   проверяемом   наборе   текстов,
упорядоченный  по  частоте   встречаемости.   Термин  СЛОВОФОРМА
означает конкретное  слово в одной  из его  грамматических форм,
например, слова 'идти',  'идет', 'шел', 'шла', 'шедший',  и т.д.
являются  разными  словоформами от  ЛЕКСЕМЫ  'идти'.   Формально
можно считать, что словоформа в тексте - это просто цепочка букв
между двумя ограничителями (пробел, запятая и т.п.).
   Статистический  метод  имеет  смысл  применять  при  проверке
больших    однородных   текстов    с   ограниченной    лексикой.
Неправильные слова,  появившиеся в результате  случайных ошибок,
должны выдавать себя редкой встречаемостью.

   ПОЛИГРАММНЫЙ метод  основывается на  том, что  в естественном
языке  многие   сочетания  букв  невозможны   или  маловероятны.
Приведем  примеры k-грамм,  не  встречающихся  в русском  языке.
Биграммы: 'чя',  'щя', буква  'й' после  согласной, мягкий  знак
после гласной, удвоенный твердый знак.  Триграммы: 'ааа', 'жшж',
'йой'.   Русское   слово  не   может  начинаться   с  'яя'   или
оканчиваться на 'жж'.  В английском языке нет слов, начинающихся
с 'tl'.
   Чаще  всего  используются  триграммы.   Эксперименты  авторов
показали, что из теоретически возможного числа триграмм 33x32x33
=  34848 (кроме  русских  букв мы  учитывали  два метасимвола  -
'начало' и 'конец'  слова; буквы 'е' и 'е'  мы отождествляли), в
словоформах русского языка встречается около 5000-6000 триграмм.
Таким  образом,  полиграммный  метод  действительно  может  быть
полезен  для быстрого  обнаружения ошибок  некоторого типа,  но,
очевидно, надежность его крайне мала, например, слова 'карова' и
'очепятка' состоят из часто используемых триграмм.
   При использовании полиграммного метода  возникают трудности с
аббревиатурами  ('СССР',  'ВЦСПС',   'кпд'),  сложносокращенными
словами  ('межшкольный', 'облкниготорг'),  редко  встречающимися
буквосочетаниями,   такими   как   три  'е'   на   конце   слова
'длинношеее',   словами,  заимствованными   из  других   языков,
особенно   с   именами  собственными   ('дайджест',   'Мкртчян',
'Чюрленис').   Поэтому   к  проверке  по   k-граммам  желательно
добавить проверку по словарю "исключений", что приводит к выходу
за рамки полиграммного метода и обращению к словарному методу.

   СЛОВАРНЫЙ метод.   Этот метод предполагает наличие  в системе
некоторого словаря.  Слова из текста сравниваются с имеющимися в
словаре или порождающимися из  словаря словоформами.  Если слово
не найдено, то оно либо "новое", либо неправильное.
   Издающиеся орфографические словари являются словарями ЛЕКСЕМ,
то есть каждая словарная статья  начинается с лексического слова
и  содержит элементы  его  грамматической характеристики:  могут
указываться грамматические категории (часть  речи, вид глагола и
т.п.), опорные словоформы, возможные варианты.  Читатель словаря
на основе  знания стандартных  правил словоизменения  сам должен
образовать остальные словоформы - грамматические формы лексемы.
   Словоизменение   в  языке   может  производиться   различными
способами,  русскому языку  свойственно  использование для  этой
цели  изменяемого  окончания  слова,  называемого  ФЛЕКСИЕЙ  (от
латинского flexio  - сгибаю), хотя  иногда применяются  и другие
способы, например, будущее  время от глагола 'работать'  - 'буду
работать'.
   Английский  язык, в  отличие  от  русского, беден  флексиями.
Так,  например,  глаголы  чаще всего  имеют  четыре  (реже  3-5)
однословные       формы,       образованные        по       типу
work-works-working-worked;   большинство   грамматических   форм
глаголов   строится   при   помощи   вспомогательных   глаголов.
Прилагательные и  наречия имеют три  формы (big-bigger-biggest).
У  существительных  есть   только  два  падежа  в   двух  числах
(boy-boy's-boys-boys'),   нет  категории   рода,  очень   многие
существительные полностью неизменяемы (milk, laughter).
   Русский язык, как и многие  другие славянские языки, является
ФЛЕКТИВНЫМ (высокофлективным) языком,  и количество используемых
в нем словоформ составляет  несколько миллионов.  Особенно много
словоформ имеют  глаголы - в  первую очередь следует  указать на
причастия  действительные и  страдательные  ('(не)читающий(ся)',
'(не)читавший(ся)', '(не)читаемый', '(не)читанный')  со всеми их
изменениями по числам, родам и падежам.  Многие русские слова не
имеют однословных  эквивалентов в  английском языке  (выбегать -
run out).
   Компьютерный  анализ  (H.Kucera,  W.H.Francis)  показал,  что
отношение  количества  словоформ  к  количеству  порождающих  их
лексем в английском языке составляет  в среднем 1.6 .  Например,
словарь в  100 тыс.   слов (лексем)  должен порождать  около 160
тыс.   словоформ.    По  некоторым   оценкам  общее   количество
словоформ,  используемых  в  современном  письменном  английском
языке, может  составлять  около  350  тыс.   (вместе  с  именами
собственными); добавление узкоспециальных терминов может удвоить
это число.
   В русском языке словоформ как  минимум на порядок больше, чем
лексем.  Большое  различие в  количестве словоформ  в русском  и
английском языках  связано с  их грамматическим  строем: русский
язык имеет  синтетический строй, английский -  аналитический.  В
английском языке  мало флексий  и отношения  слов в  предложении
обеспечиваются  другими  средствами  -  строгим  порядком  слов,
широким использованием  вспомогательных глаголов  и частицы  to,
предлогами, артиклями.
   На  каких  же  принципах должен  строиться  словарь  для  АК?
Наиболее  примитивный  вид   словаря  в  системе  АК   -  список
словоформ.  Обсудим допустимость такого  подхода применительно к
русскому языку.
   Файл,  содержащий около  миллиона словоформ  (а словоформы  в
русском языке  длиннее английских),  при любом  способе упаковки
будет  занимать много  места  в  памяти компьютера.   Компиляция
списка   словоформ   такого   объема   из   некоторого   словаря
общеупотребительной лексики  и каких-то конкретных  словарей для
данной отрасли  потребует большой лингвистической  работы, чтобы
учесть   все  особенности   словообразования  и   словоизменения
отдельных слов.
   Объем  словаря можно  уменьшить,  если  создавать словари  по
разным  специальностям   (темам)  и   предоставить  пользователю
развитые средства  для их пополнения; однако,  по-видимому, даже
словарь, содержащий десятки тысяч словоформ, не даст возможность
уверенно проверять тексты хотя бы из сравнительно узкой области.
Можно  сказать,  пользуясь  терминологией  теории  распознавания
образов,  что  АК  в  этом случае  будет  часто  давать  "ложные
тревоги",  т.е.   не  опознавать   правильные  слова.   Конечно,
гораздо  более  неприятна  ошибка  типа  "пропуск  цели",  когда
ошибочное слово  АК считает верным.   Но при  большом количестве
"ложных  тревог"  пользователь  приучится  добавлять  в  словарь
словоформы,  которые   ему  на   первый  взгляд   представляются
правильными.    Это   быстро  приведет   к   засорению   словаря
неправильными словоформами.
   Для создания  списка словоформ  можно, конечно,  использовать
более  легкий  путь  и  попытаться  обойтись  без  использования
лингвистических  принципов  словообразования  и  словоизменения:
словоформы можно получить методом  прогона некоторого количества
текстов.  Но  при этом нет гарантий  от попадания в  этот список
ошибочных,  хотя бы  и повторяющихся,  слов, а  главное -  такой
список словоформ годится лишь там, где тексты мало варьируются -
например, сводки погоды или поздравительные телеграммы.
   Насколько   перспективен  вообще   метод  пополнения   списка
словоформ новыми,  встретившимися в тексте?  Для ответа  на этот
вопрос   нужно   иметь  некоторое   представление   о   частотах
встречаемости слов в  текстах на русском языке.   Считается, что
для  естественных языков  применим так  называемый закон  Ципфа:
n-ое  наиболее  употребительное слово  встречается  с  частотой,
приблизительно  обратно  пропорциональной n.   Если  этот  закон
применим  к  словоформам  русского  языка   при  больших  n,  то
окажется,  например, что  500-тысячное  слово встречается  всего
лишь в пять раз реже 100-тысячного.
   Список  словоформ, по  нашему  мнению,  может служить  весьма
удобным  средством расширения  лексики  автокорректора для  нужд
конкретного    пользователя,    т.е.     может    играть    роль
дополнительного,  персонального  словаря.   Но  основой  АК  для
высокофлективного  языка  должен   быть  словоизменительный  или
словообразовательный   словарь,   содержащий   ОСНОВЫ   слов   с
указаниями  на  их   словообразовательные  и  словоизменительные
классы.    (Пример   словообразования:   'строить',   'стройка',
'перестройка',         'перестроечка',          'перестроечный',
'антиперестроечный',  'антиперестройщик',   'перестроечность'  и
т.д.).
   В  следующих  номерах  мы   подробнее  расскажем  о  методике
построении  словаря   для  АК,   автоматическом  морфологическом
анализаторе и акцепторе, методах хранения и доступа к словарю, о
коррекции ошибок.   Читатель узнает  также о  разработанном нами
интерактивном   АК   для  русского   языка,   реализованном   на
совместимых   с    IBM   PC   компьютерах.    Этот    АК   имеет
словообразовательный   словарь,   порождающий   около   полутора
миллионов словоформ,  содержащий современную  газетную, бытовую,
деловую, научно-техническую  лексику.  Система  АК умещается  на
двух дискетах  по 360  Кбайт, проверяет от  пятидесяти до  ста и
более слов в секунду, а  также подсказывает варианты исправления
ошибочных слов.
                                    
