АЛГОРИТМИ И ПРОГРАМИ В ТЕКСТООБРАБОТКАТА

(дипломна работа, София, ФМИ, 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-таб­ли­ца­та):

roccessed text...

(мо­же да клик­не­те вър­ху илюст­ра­ци­я­та, за да я ви­ди­те на цял екран, или да от­во­ри­те PDF-файл с по­ве­че ин­фор­ма­ция)

Ето как­ви проб­ле­ми оба­че от­кри­ва­ме в не­го след по-вни­ма­тел­но вглеж­да­не и ана­ли­зи­ра­не – с чер­ве­но са от­бе­ля­за­ни греш­ки­те, а с дру­ги цве­то­ве – по­тен­ци­ал­ни­те греш­ки или въз­мож­ни­те ав­то­ма­ти­зи­ра­ни про­ме­ни във фор­ма­ти­ра­не­то (За­бе­леж­ка: „по­тен­ци­ал­ни­те“ греш­ки са те­зи, ко­и­то мо­гат да се по­я­вят, ко­га­то по­ра­ди раз­лич­ни при­чи­ни тек­стът пре­тър­пи из­ме­не­ние и про­мя­на в сво­я­та ши­ри­на, как­то и ко­га­то се пре­ми­не от един фор­мат в друг – напри­мер от пе­ча­тен към елек­т­ро­нен вид; ха­рак­тер­но е, че кол­ко­то по-тяс­но е на­бор­но­то по­ле/ко­ло­ни­те, тол­ко­ва по-го­ля­ма е ве­ро­ят­ност­та от ре­а­ли­зи­ра­не­то на та­ка­ва по­тен­ци­ал­на греш­ка):

pre-processed text - problems...

(мо­же да клик­не­те вър­ху илюст­ра­ци­я­та, за да я ви­ди­те на цял екран, или да от­во­ри­те PDF-файл с по­ве­че ин­фор­ма­ция)

За те­зи от вас, ко­и­то не са съг­лас­ни с та­ка от­бе­ля­за­ни­те по­тен­ци­ал­ни греш­ки в срич­копре­на­ся­не­то, мо­же би ще е ин­те­рес­но да обър­не­те вни­ма­ние на то­ва.

Доб­ре е да се осъз­нае ед­но просто не­що – след ка­то се стре­мим да по­лу­чим текст без как­ви­то и да би­ло греш­ки, ня­ма сми­съл да ги де­лим на го­ле­ми и мал­ки – и „го­ля­ма­та/съ­щест­ве­на/зна­чи­тел­на/фра­пи­ра­ща“ (напри­мер – пра­во­пис­на) греш­ка и „мал­ка­та/нез­на­чи­тел­на“ (най-често пун­к­ту­а­ци­он­на) от­не­ма приб­ли­зи­тел­но ед­нак­во вре­ме на ко­рек­то­ра, кой­то из­чи­та тек­ста, как­то и на стра­ньо­ра, на­на­сящ ко­рек­ци­и­те. От то­ва след­ва, че след ка­то цел­та ни би тряб­ва­ло да бъ­де пости­га­не­то на съ­вър­шен­ст­во в ло­ги­ческа­та струк­ту­ра на тек­сто­вия по­ток, е же­ла­тел­но всич­ки оц­ве­те­ни с раз­ли­чен цвят греш­ки да бъ­дат от­ст­ра­не­ни или попра­ве­ни и то на кол­ко­то се мо­же по-ра­нен етап от тек­сто­об­ра­бот­ка­та: в слу­чая – пре­ди изоб­що да се пре­да­дат за из­чи­та­не от ко­рек­то­ра (стъп­ка 6) и до­ри пре­ди са­мо­то „из­ли­ва­не“ на тек­ста (стъп­ка 3) в програ­ма­та за стра­ни­ра­не (InDesign, PageMaker, QuarkXPress или как­ва­то и да би­ло ми­на­ла или бъ­де­ща програ­ма).

Ето и как­во се случ­ва с тек­ста след дейст­ви­е­то на програ­ма­та:

proccessed text

(мо­же да клик­не­те вър­ху илюст­ра­ци­я­та, за да я ви­ди­те на цял екран, или да от­во­ри­те PDF-файл с по­ве­че ин­фор­ма­ция)

Най-доб­ре бих­те от­кри­ли раз­ли­ки­те, ако от­во­ри­те ед­нов­ре­мен­но при­мер­ни­те из­вад­ки в PDF и ги поста­ви­те един до друг, за да ги срав­ни­те знак по знак...

За те­зи 28 се­кун­ди на ра­бо­та­та си ста­тисти­ка­та по­соч­ва, че програ­ма­та е напра­ви­ла (об­що вър­ху 220-те пе­чат­ни стра­ни­ци):

За­ло­же­ни­те ал­го­рит­ми естест­ве­но не га­ран­ти­рат из­чист­ва­не­то на всич­ки въз­мож­ни греш­ки, но пре­мах­ват огро­мен про­цент от тях (и то на въз­мож­но най-ра­нен етап), как­то и пре­дот­в­ра­тя­ват по­я­ва­та на пов­тор­ни проб­ле­ми след пре­фор­ма­ти­ра­не (про­мя­на мет­ри­ки­те на тек­ста) или след пре­ми­на­ва­не към дру­га циф­ро­ва ме­дия. Труд­но е да се из­ме­ри кол­ко чо­ве­ко­ча­са са не­об­хо­ди­ми на един ко­лек­тив от ко­рек­то­ри (и впос­лед­ст­вие – стра­ньо­ри) да из­вър­шат те­зи над 7000 дейст­вия, ко­и­то програ­ма­та е из­вър­ши­ла за по-мал­ко от по­ло­вин ми­ну­та. Ос­вен то­ва съ­щест­ву­ва и един пси­хо­ло­ги­чески фак­тор, кой­то тряб­ва да се има пред­вид – ко­га­то вър­ху листа с ко­рек­ции има от­бе­ля­за­ни пре­ка­ле­но мно­го греш­ки (напри­мер 15–20 на стра­ни­ца), е мно­го по-ве­ро­ят­но ня­коя от тях да бъ­де про­пус­на­та при от­ст­ра­ня­ва­не­то им, от­кол­ко­то ако вър­ху листа при­съст­ват не по­ве­че от 3–4 ко­рек­ции (как­во­то е сред­но­то ни­во на от­бе­ля­за­ни ко­рек­ции в MindPrint на пър­ва (и един­ст­ве­на) раз­пе­чат­ка на хар­тия). Имен­но за­то­ва след при­ла­га­не­то на програ­ма­та ра­бо­та­та по ко­ри­ги­ра­не­то е зна­чи­тел­но об­лек­че­на/уско­ре­на.

И пос­лед­но – тъй ка­то всич­ки зна­ем, че про­вер­ка­та е най-вис­ша­та фор­ма на до­ве­рие – мо­же да от­во­ри­те нов про­зо­рец, къ­де­то в две­те по­ло­ви­ни мо­же да ви­ди­те два­та за­вър­ше­ни ва­ри­ан­та на тек­ста – без и със дейст­ви­е­то на програ­ма­та. Мо­же да ек­с­пе­ри­мен­ти­ра­те ка­то про­ме­ня­те посте­пен­но раз­ме­ри­те (ши­ри­на­та) на про­зо­ре­ца, за да ви­ди­те как се про­ме­нят и сто­ят те при по­доб­но си­му­ли­ра­не на прест­ра­ни­ра­не (про­мя­на раз­ме­ра на тек­сто­во­то по­ле – ре­ал­но то­ва се по­лу­ча­ва най-често, ко­га­то се про­ме­нят шриф­тът или раз­ме­рът на ко­ло­ни­те или ко­га­то се вмък­ват/из­т­ри­ват па­са­жи от тек­сто­ве вслед­ст­вие на ре­дак­ции или по-съ­щест­ве­ни ко­рек­ции или пък при про­мя­на на ня­кои дру­ги ха­рак­тер­ни то­по­ло­гии на пе­чат­ни­те кни­ги).

Ако да­де­ни­ят при­мер ви е за­ин­т­ри­гу­вал, мо­же да про­дъл­жи­те напред и да се за­поз­на­е­те с ос­нов­на­та те­о­ре­тич­на част на програ­ма­та, на­пи­са­на през да­леч­на­та 1994 г. ка­то дип­лом­на ра­бо­та във Фи­зи­ко-ма­те­ма­ти­ческия фа­кул­тет на СУ. (Естест­ве­но мно­го мо­ду­ли са до­пъл­не­ни и до­раз­ви­ти през след­ва­щи­те го­ди­ни, но те не са пред­ста­ве­ни тук.)

отгоре | напред >>

Съдържание

0. Встъпление

1. Увод

2. Сричкопренасяне

2.1. Малко история

2.2. Правила за сричкопренасяне от 1983 г.

2.3. Метод на скандирането

2.4. Алгоритъм на сричкопренасянето по фонетичен и морфологичен принцип

2.4.1. Алгоритъм за откриване на морфема в дума

2.4.2. Алгоритъм за анализ на буква

2.4.3. Алгоритъм за анализ на дума

2.4.4. Алгоритъм за анализ на текст

2.4.5. Други възможности

3. Автоматизирано откриване и отстраняване на грешки в текст

3.1. Дефиниции и понятия

3.2. Често допускани грешки

3.3. Класификация на правилата

3.4. Примерна програмна реализация на локалните правила

3.4.1. Нови дефиниции, променливи, флагове и множества

3.4.2. Таблица на локалните правила

3.4.3. Функции, необходими за реализация на локалните правила

3.5. Глобални правила

3.5.1. Класификация на думите в текст на равнище знакове

3.5.2. Функции, необходими за реализация на глобалните правила

3.5.3. Функции и идеи, които предстоят да бъдат осъществени

4. Някои метрики в текстообработката

4.1. Текстови и шрифтови метрики

4.2. Сложност на текст

4.3. Професионализъм на предпечатната подготовка

4.3.1. Използване на възможностите на програмите чрез дефиниране на различни стилове

4.3.2. Премахване на излишното форматиране

4.3.3. Използване на възможностите за настройка на основните отношения между и в параграфите

5. Заключение

6. Литература

7. Приложениe

7.1. Списък на книгите, върху които са направени експерименти

7.2. Някои статистики и резултати от проведени изследвания