2) Ошибки носят характер замены кодов исходных букв на коды литер, совпадающих или близких к исходным по начертанию. Например, заменяются коды ASCII русских букв А, В, С, Е, У на коды латинских букв А, В, С, Е, У; латинские буквы I и 0 - на цифры I и 0 и т.п. Сюда же отнесем повторы одной и той же литеры, возникающие из-за продленного нажима клавиши дисплея или его неисправности. В подавляющем большинстве, если в словоформе более 2 -3 букв, такие исправления абсолютно правильны.
1.3. Диалоговый и пакетный режимы
Возможны, в общем случае, два режима работы АК: диалоговый, когда текст проверяется слово за словом и пользователю предоставляется возможность снять очередное затруднение по мере его возникновения, и пакетный, когда готовые большие тексты анализируются в отсутствии пользователя.
Во втором случае ненайденные словоформы либо как-то отмечаются в исходном тексте, либо запоминаются отдельно в виде своих адресов (в качестве адреса может использоваться, например, номер строки и номер символа, с которого начинается слово, в строке). Подобная проверка ведется до конца проверяемого файла без вмешательства человека. Далее файл вызывается снова и предъявляется для контроля тех строк, где были замечены сомнительные слова.
В высокофлективных языках, к которым относятся, в частности, все славянские, от одной основы могут образовываться до нескольких сот различных словоформ. В этих условиях в АК неизбежны средства морфологического анализа той или иной сложности, а непосредственное использование западных АК и перенос методов их работы на неанглоязычные тексты едва ли даст удовлетворительные результаты, если исключить метод "грубой силы" - неограниченное наращивание объема оперативной памяти (ОП) и быстродействия ЭВМ.
Объектами сжатия являются:
- числовые данные,
- упорядоченные текстовые данные (словари),
- специальные тексты на формализованных языках,
- естественно-языковые тексты общего вида,
- структурированные данные.
В качестве количественной меры сжатия используется коэффициент сжатия - отношение длины первоначального к сжатому тексту, а также продолжительность требуемых преобразований.
Наиболее распространены методы: разностное кодирование, кодирование повторений и подавление незначащих нулей.
Суть разностного кодирования заключается в хранении вместо абсолютных значений разностей двух смежных чисел или отклонения чисел от их среднего значения. Например, для последовательности чисел 2, 14, 18, 27, 34 первый способ даст последовательность 2, 12, 4, 9, 7. Второй способ порождает последовательность: -17, -5, -1, 8, 15 (среднее значение для исходной последовательности - 19).
Первый вариант эффективен для медленно меняющихся последовательностей, второй - когда максимальное отклонение от среднего значительно меньше абсолютного значения среднего.
Кодирование повторений заключается в замене цепочки одинаковых символов кодом этого числа и числом повторений. Например, для последовательности 5555 6666 888888 применение этого способа даст последовательность 5(4) 6(4) 8(6).
Подавление незначащих нулей означает отбрасывание незначащих нулей в старших разрядах целой части числа и в младших разрядах дробной части. Например, применение этого способа сжатия к последовательности 0010 01,100 011 011 даст последовательность: 10 1,1 11 11.
1.2. Сжатие словарей
Под словарями понимают списки неповторяющихся цепочек символов в алфавитном или ином строгом порядке. Такой словарь можно рассматривать как монотонную последовательность чисел и для его сжатия применять метод разностного кодирования (см. п.1.1). Здесь он заключается в отбрасывании у каждого слова начальных букв, совпадающих с начальными символами предыдущего слова и замене их на число отброшенных букв. Например, словарь:
вычислитель
вычислительный
вычислять
в результате рассматриваемого способа кодирования будет заменен словарем:
6ять.
Такой метод, однако, неудобен тем, что при декодировании любого конкретного слова требуется последовательно декодировать все предшествующие слова. Поэтому порой используются отдельные перечни наиболее часто встречающихся частей слов (суффиксы, префиксы), где каждой из них ставится в соответствие более короткий код, заменяющий её в словаре. Например, словарь:
встречающийся
заменяющий
с помощью этого способа сжатия заменится на совокупность словарей:
основной вспомогательный
заменя1
Важнейшим здесь является алгоритм выбора достаточно длинных и часто встречающихся подцепочек. При его разработке используются эвристические алгоритмы, поскольку эффективного алгоритма поиска оптимального решения не существует.
Когда составляющие словаря образуют сильно обособленные группы слов, можно разделить весь словарь на подсловари, присвоив каждому из них свой индекс, и кодировать слова независимо в каждом из них кодами минимальной длины, а слова из различных подсловарей различать этими индексами. Такой метод является модификацией описанного в п. 1.1 метода сжатия числовых данных через их среднее значение.
1.3. Сжатие специальных текстов
К специальным относятся тексты на формальных языках, отличающихся ограниченным словарем, замкнутой грамматикой. Сюда прежде всего относятся тексты на языках программирования, машинные коды, различные формулы и обозначения, а также ограниченные подмножество фраз естественного языка в таких четко формализованных задачах как организация реплик в интерактивных системах, выдача сообщений при компиляции и т.п.
Для данного типа информации пригодны методы, описанные в п. 1.5. В то же время специфика этих текстов позволяет осуществить экономное хранение, основанное на выделении длинных часто повторяющихся фрагментов. Например, текст Фортран-программы:
ТYРЕ *,’ПРОГРАММА'
может быть представлен с использованием кодового словаря:
программа словарь
1.4. Сжатие структурированных данных
Структурированные данные содержат текстовую и иную информацию и хранятся в определенном формате, приемлемом для тех или иных прикладных задач, например, для документального или фактографического поиска информации. Пример структурированных данных - библиографические описания.
Разнородность данных структурированного типа обуславливает различные типы информационной избыточности, поэтому необходимо использовать комбинацию методов, приспособленных к своим подгруппам данных. Так, для числовых полей целесообразно применять методы п. 1.1, для текстовых - описанные в п. 1.5. По некоторым оценкам комбинация этих методов дает сокращение объема данных в 1,5-4 раза, по другим оценкам - даже до 6 раз.
В структурированных данных наряду с типами информационной избыточности, характерных для текстовых или нетекстовых данных, существует особый позиционный тип избыточности. Он связан с дублированием информации для идентификации структуры данных. Например, если записи файла имеют структуру:
Ф.И.О. студента
отношение к воинской обязанности
домашний адрес
специальность
оценки за сессию,
причем поля имеют длину, соответственно, 40, 20, 50, 15, 10 байт, то при различных значениях тех или иных полей для конкретных студентов часть области памяти, отводимой под отдельные поля, не будет использоваться. Тогда, если поле «Отношение к воинской обязанности» пусто, его можно исключить из конкретной записи и вся запись будет иметь следующий вид:
(Ф.И.О. студента)1(домашний адрес)3(специальность)4(оценки за сессию)5,
где индексы означают принадлежность того или иного значения соответствующему полю.
1.5. Сжатие текстовой информации общего вида
Принципиальная возможность сжатия текстовой информации связана с тем, что составляющие текста - буквы и словоформы - различаются по частоте встречаемости в тексте, в то время как их длины слабо связаны с частотой.
Все алгоритмы сжатия можно классифицировать по используемому методу кодирования и характеру использования статистики и грамматики текста.
Методы кодирования можно разделить на четыре класса в зависимости от того, какие группы символов кодируются (постоянной или переменной длины), и какие коды используются (постоянной или переменной длины).