АЛГОРИТМИ И ПРОГРАМИ В ТЕКСТООБРАБОТКАТА
(1995 г.)
(дипломна работа, София, ФМИ)
...Чрез алгебра хармонията проверих...
(„Моцарт и Салиери“)
Встъпление – запознаване с резултата от работата на програмата
Основната цел на създадената програма и алгоритми (с помощта изцяло на естествен интелект) е отстраняване на значителен процент от наличните (и потенциалните) пунктуационни и технически грешки, както и подобряване на визуалната и структурна хармония и унификация на текста. Освен това посредством вграждане на информация за вътрешната свързаност и допустима разделяемост, текстът от статичен/моментен се превръща в трансформируем/многофункционален (т.е. не толкова силно зависим от конкретния дизайн, пространство и програма, в която понастоящем е представен). По този начин се облегчава проблема с контрола и предсказуемостта на цялостния текстов поток.
Това разбира се не изключва полезността/необходимостта от предварителното прилагане на програма за spell-check (работеща на принципа на сравнение с речникова база данни), както и от последващо финално изчитане на текста от професионален коректор, но облекчава/ускорява значително труда му, както и труда на дизайнера за нанасянето на голямото множество досадни алгоритмично отстраними корекции.
За да се придобие нагледна представа за възможностите и характера на създадената програма, преди да навлезем в по-плашещата теоретична част, тук ще бъде демонстрирано действието й върху примерна книга на правна тематика с обем около 220 печатни страници.
Различими са няколко основни функционални стъпки при направената цялостна текстообработка (отнела общо приблизително 4 ч. и 10 минути):
1. | Предварителна подготовка (обработка) на получените word-файлове – предимно премахване на излишното форматиране (изчистване на външни импортирани стилове); обединяване на текстовете в един цялостен унифициран RTF-файл; експортиране на текста в HTML-формат; прилагане на „вградено“ сричкопренасяне (soft-hyphen). | 12 min |
2. | Работа на програмата (задаване на входен файл и генериране на изходен във формат html) | 28 sec |
3. | Импортиране на така полученият текст в крайната програма за предпечатна подготовка; автоматизирано обхождане и отстраняване на маркираните потенциални грешки | 15 min |
4. | Полу-автоматизирано нанасяне на стилове в режим „text edit“ (използвани са около 20 различни параграфни стила) – множествена градация на заглавията и подзаглавията (заглавие – част – дял – глава – раздел – член/параграф – алинея/обикновен текст – изброяване)... | 30 min |
5. | Страниране по цялата дължина на книгата, нанасяне на бележките под линия, ръчни header-и с информация от съдържанието и с ориентиращи позиции; разпечатване на хартия | 120 min |
6. | Изчакване изчитането на странирания текст от коректори и редактори | 2–5 дни |
7. | Нанасяне на отбелязаните корекции; окончателно разпечатване на паус (или генериране на PDF) | 60 min |
8. | Отстраняване на единични грешки, забелязани при втората разпечатка | 5–15 min |
Ето как изглежда една малка примерна част от текста, преди да бъде преработен от програмата в стъпка втора (за яснота тук са визуализирани тиренцата за сричкопренасянето soft-hyphen – използван е знакът '' – код 250 от ASCII-таблицата):
(може да кликнете върху илюстрацията, за да я видите на цял екран, или да отворите PDF-файл с повече информация)
Ето какви проблеми обаче откриваме в него след по-внимателно вглеждане и анализиране – с червено са отбелязани грешките, а с други цветове – потенциалните грешки или възможните автоматизирани промени във форматирането (Забележка: „потенциалните“ грешки са тези, които могат да се появят, когато поради различни причини текстът претърпи изменение и промяна в своята ширина, както и когато се премине от един формат в друг – например от печатен към електронен вид; характерно е, че колкото по-тясно е наборното поле/колоните, толкова по-голяма е вероятността от реализирането на такава потенциална грешка):
(може да кликнете върху илюстрацията, за да я видите на цял екран, или да отворите PDF-файл с повече информация)
За тези от вас, които не са съгласни с така отбелязаните потенциални грешки в сричкопренасянето, може би ще е интересно да обърнете внимание на това.
Добре е да се осъзнае едно просто нещо – след като се стремим да получим текст без каквито и да било грешки, няма смисъл да ги делим на големи и малки – и „голямата/съществена/значителна/фрапираща“ (например – правописна) грешка и „малката/незначителна“ (най-често пунктуационна) отнема приблизително еднакво време на коректора, който изчита текста, както и на страньора, нанасящ корекциите. От това следва, че след като целта ни би трябвало да бъде постигането на съвършенство в логическата структура на текстовия поток, е желателно всички оцветени с различен цвят грешки да бъдат отстранени или поправени и то на колкото се може по-ранен етап от текстообработката: в случая – преди изобщо да се предадат за изчитане от коректора (стъпка 6) и дори преди самото „изливане“ на текста (стъпка 3) в програмата за страниране (InDesign, PageMaker, QuarkXPress или каквато и да било минала или бъдеща програма).
Ето и какво се случва с текста след действието на програмата:
(може да кликнете върху илюстрацията, за да я видите на цял екран, или да отворите PDF-файл с повече информация)
Най-добре бихте открили разликите, ако отворите едновременно примерните извадки в PDF и ги поставите един до друг, за да ги сравните знак по знак...
За тези 28 секунди на работата си статистиката посочва, че програмата е направила (общо върху 220-те печатни страници):
- 869 вмъквания
- 225 изтривания
- 6204 замени
- 1292 маркирани възможни грешки (които трябва да бъдат обходени автоматизирано).
Заложените алгоритми естествено не гарантират изчистването на всички възможни грешки, но премахват огромен процент от тях (и то на възможно най-ранен етап), както и предотвратяват появата на повторни проблеми след преформатиране (промяна метриките на текста) или след преминаване към друга цифрова медия. Трудно е да се измери колко човекочаса са необходими на един колектив от коректори (и впоследствие – страньори) да извършат тези над 7000 действия, които програмата е извършила за по-малко от половин минута. Освен това съществува и един психологически фактор, който трябва да се има предвид – когато върху листа с корекции има отбелязани прекалено много грешки (например 15–20 на страница), е много по-вероятно някоя от тях да бъде пропусната при отстраняването им, отколкото ако върху листа присъстват не повече от 3–4 корекции (каквото е средното ниво на отбелязани корекции в MindPrint на първа (и единствена) разпечатка на хартия). Именно затова след прилагането на програмата работата по коригирането е значително облекчена/ускорена.
И последно – тъй като всички знаем, че проверката е най-висшата форма на доверие – може да отворите нов прозорец, където в двете половини може да видите двата завършени варианта на текста – без и със действието на програмата. Може да експериментирате като променяте постепенно размерите (ширината) на прозореца, за да видите как се променят и стоят те при подобно симулиране на престраниране (промяна размера на текстовото поле – реално това се получава най-често, когато се променят шрифтът или размерът на колоните или когато се вмъкват/изтриват пасажи от текстове вследствие на редакции или по-съществени корекции или пък при промяна на някои други характерни топологии на печатните книги).
Ако даденият пример ви е заинтригувал, може да продължите напред и да се запознаете с основната теоретична част на програмата, написана през далечната 1994 г. като дипломна работа във Физико-математическия факултет на СУ. (Естествено много модули са допълнени и доразвити през следващите години, но те не са представени тук.)
Съдържание
0. Встъпление
1. Увод
2.1. Малко история
2.2. Правила за сричкопренасяне от 1983 г.
2.4. Алгоритъм на сричкопренасянето по фонетичен и морфологичен принцип
2.4.1. Алгоритъм за откриване на морфема в дума
2.4.2. Алгоритъм за анализ на буква
2.4.3. Алгоритъм за анализ на дума
2.4.4. Алгоритъм за анализ на текст
2.4.5. Други възможности
3. Автоматизирано откриване и отстраняване на грешки в текст
3.1. Дефиниции и понятия
3.3. Класификация на правилата
3.4. Примерна програмна реализация на локалните правила
3.4.1. Нови дефиниции, променливи, флагове и множества
3.4.2. Таблица на локалните правила
3.4.3. Функции, необходими за реализация на локалните правила
3.5. Глобални правила
3.5.1. Класификация на думите в текст на равнище знакове
3.5.2. Функции, необходими за реализация на глобалните правила
4. Някои метрики в текстообработката
4.1. Текстови и шрифтови метрики
4.2. Сложност на текст
4.3. Професионализъм на предпечатната подготовка
4.3.1. Използване на възможностите на програмите чрез дефиниране на различни стилове
4.3.2. Премахване на излишното форматиране
4.3.3. Използване на възможностите за настройка на основните отношения между и в параграфите
5. Заключение
6. Литература
7. Приложениe
7.1. Списък на книгите, върху които са направени експерименти