АЛГОРИТМИ И ПРОГРАМИ В ТЕКСТООБРАБОТКАТА
(дипломна работа, София, ФМИ, 1995 г.)
2. Сричкопренасяне
Ако се отнасяш небрежно към някоя работа, тя ще ти донесе два пъти повече неприятности. разказ на мъдреца от оазиса |
2.1. Малко история
Неоспорим е фактът, че българският език (за разлика например от английския) е съставен предимно от по-дълги думи, така че необходимостта от правилното им пренасяне на нов ред е очевидна. Разрешаването на този проблем обаче не е толкова тривиално и еднозначно, както мнозина очакват. Основните проблеми произтичат от пренебрежението и липсата на осмисляне на понятията и правилата, които трябва да се формализират. Обикновено се получава така, че когато нещо изглежда просто, то всъщност не са разгледани достатъчно дълбоко вътрешните му проблеми – детайлите и вариантите, тъй като те са били отхвърлени още при формулирането на правилата, които са били реализирани. Защото може би най-трудното (но и най-важното) в дадения случай е да умеем да извличаме формални правила от неформален обект.
Ако си погледне върху проблемите на сричкопренасянето от историческа гледна точка, ще се забележи нещо много странно. Вместо очакваното навлизане в дълбочина и стремеж към достигане до един по-приемлив и издържан стил, се забелязва нарастващ стремеж към опростяване. Неприятната констатация е, че при разработването на програми за сричкопренасяне се е утвърдил принципа – „да направим най-лесното“… Звучи доста абсурдно, но преценете сами:
1. Първите данни и разработки, които бяха проучени, са от 1978 г. [31] Оказа се, че те са и най-добрият подход, за който можа да се намери сведение относно въпросите, касаещи автоматичното определяне на мястото на пренос в текстове. Авторите са избрали най-трудния (но и най-правилен от литературна гледна точка) начин за сричкопренасяне, а именно морфологичния принцип. Освен това, за разлика от по-късните разработки, са разгледани проблемите не само на сричкопренасянето, но и на преноса между думите (т.е. върху стила на пренасяне, макар и да има пропуснати важни случаи на забрани за пренос, особено в заглавия). Уникално е също така и въвеждането и използването на понятието квазиприставка, което отчасти реализира рекурсивно морфемния анализ на думите, дефинирано е и множество от неразделни буквосъчетания, както и множество от забранени буквосъчетания, свързани с определяне на границите на тези квазиприставки. Освен това формулите и индексите се разглеждат като неделими съставки от смесен текст, обърнато е внимание на съкращенията като особеност при преноса. Тъй като естествено по това време програмите за страниране не са била достигнали сегашното си равнище, част от предложените правила за пренос между отделните думи вече са излишни, тъй като сега те се поддържат от самите текстови редактори (например препинателните знакове трябва да останат на горния ред). Срещат се доста пропуски поради факта, че до средата на 80-те години дясното подравняване (по-правилен би бил термина двустранно подравняване – английският термин е justification) е ставало чрез добавяне на нови интервали, което е било необходимо зло, типично за старите приложения под DOS като PE2, WORD 5, Edit и др. Сега вече може да се напредне съществено в тази област (например чрез таблици на съседство), позовавайки се на технологията TrueType, заложена в основата на Windows от началото на 90-те години, при която проблемът с подравняването се решава по съвсем друг начин [34]. Но въпреки тези си недостатъци, разработката [31] може да се смята един приемлив опит за реализация на морфологичния принцип при пренасянето в руски език.
2. Четири години по-късно в [10] вероятно за първи път в България се предлага и вариант за автоматично съкращаване на определени думи при необходимост. Освен това все още не са пропуснати специфичните правила за пренос след сонорни съгласни, теоретично са заложени основите за пренасянето на думи след приставката им и е отбелязана необходимостта от създаването на специален речник на изключенията за думите, които не се подчиняват на изброените правила. Също така са направени някои забележки за преноса на думи в смесен текст, който се състои от комбинация на букви от азбуката и други непрепинателни знакове, но всъщност тези правила не са формализирани нагледно, тъй като и самият метод е чисто евристичен, а и се забелязват някои пропуски при самото им описание. Може да се смята, че [10] е една типична разработка на фонетичния принцип при сричкопренасянето (пренасяне на срички).
3. След 1983 г. занимаващите се с този проблем за съжаление се спират на сричкопренасянето по метода на скандирането, като се отказват от фонетичния принцип, както и от каквито и да било речници на изключенията (тъй като те „нарастват до недопустими граници“!?). Набляга се единствено на простотата и недвусмислието, заложени в новите правила за сричкопренасяне от 1983 г., които ще бъдат обстойно коментирани по-долу. Известни са публикациите на В. Нончева през 1988 г. в [19, 20], където тези правила са формализирани в таблица от 22 реда, като наред със самото сричкопренасяне за последен път се споменава и за т. нар. стил на пренасяне, т.е. за пренос между думи (макар и да не е бил реализиран формално). От същата година има публикация и на Е. Белогай [2, 3, 4], който критикува Е. Нончева за това, че при представянето на тази своя таблица не е засегнала въпроса за минималност и непротиворечивост на предложения от нея алгоритъм. Самият Белогай прилага метода на контекстните забрани чрез т. нар. биграми, като разделя правилата на локални и глобални във връзка с това доколко са зависими от конкретното мястото в думата или изречението като цяло. Петнайсетте правила са минимизирани до седем, за които е реализиран строг (и прост) алгоритъм. А като представител на последните програми и алгоритми за сричкопренасяне (реализацията на които между другото вече са търговска тайна и публикуването им е изключено) може да се посочи разпространената у нас програма „Alpha-Hyphen“. Зад примамливия графичен интерфейс обаче се крие един печален абсурд – по време на експериментите върху сричкопренасянето ѝ над различни текстове, се установи, че тази програма прави около 6 пъти (!) повече грешки в сравнение например с доста по-невзрачната „Hyphen“, която е много по-бедна откъм интерфейс и удобство за потребителите.
За оценка на изброените по-горе три метода при сричкопренасянето (морфологичен, фонетичен и метод на скандирането) ще бъдат предложени следните две прости формули за намиране на коефициент на пълнота при сричкопренасянето (Р):
и коефициент на грешките (R):
,
където
n – преноси, направени от експерт лингвист;
m – преноси, направени чрез съответния алгоритъм;
mo – точно съвпадение при преносите (верни преноси).
Ясно е, че , като идеалният за нас вариант е P=1, R=0.
Може да се твърди, че е много по-важно да се минимизира R (като се прилага пренос на морфеми), отколкото P да се приближи до 1 (което лесно се постига по най-простия метод – на скандирането). Също така при оценката трябва да се изхожда и от факта, че възприемането на текста от човек при четене има прогностичен характер, т.е. когато прогнозата от първата част на пренесената дума противоречи на смисъла на думата като цяло, се нарушава процеса на четене, което може и да не бъде толкова забележимо, но определено води до дискомфорт и раздразнение за четящия. Това може да се докаже само с помощта на различни психологически тестове, за провеждането на които са необходими средства, хора, техника и правилна методология. Но така или иначе правилата на пренасянето не се свеждат само до формулиране на правилни последователности, а има и ергономичен характер [1]. Пример за неправилен от тази гледна точка пренос е пре-дизвестие или зад-вижвам, защото за известен (макар и малък) период от време, свързан с предвижването на очите по ширината на текста, човешката сетивност и съзнание остават излъгани. Автоматичността не трябва да води до снижаване на езиковата култура за сметка на придобитата простота и свобода на действие. А ако потърсим причините за сегашното състояние на нещата, то можем да стигнем до неприятното предположение, че хората, които са способни да формализират и кодират утвърдените в течение на векове книжовни правила за пренос (става въпрос за комерсиални, работещи програми, а не за разработки, близки до проблемите на изкуствения интелект, чиято реализация в България явно е въпрос на далечно бъдеще), изпитват нехайство (или по-скоро пренебрежение) към естествения език, на който говорят. За да не бъде това твърдение голословно, може лесно да се провери, че през последните години най-неиздържаните откъм стил и литературни достойнства книги са тези, написани от и за програмисти. Като най-фрапантни примери ще посоча „Windows. Фундаментални постановки“ – I част (MacroSys Co, 1994), „Borland C++. Обектноориентирано програмиране“ (NISOFT, 1995), „Графика в средата на Microsoft Windows“ (AlexSoft) и „Как да пишем надеждни програми“ (NISOFT, 1994), както и много, много други. И докато грешките, забелязани след време в програмите, подлежат на корекция при следваща версия, напечатаните книги, вестници и статии няма как да бъдат коригирани. Те могат да послужат като веществено доказателство за очевидна криза и в езиковата култура на обществото ни.
Ако се погледне по-далеч в бъдещето на тази област, може би ще се каже, че то принадлежи на изграждането на транслатори на правила, които биха придали невероятна сила и гъвкавост на заложените алгоритми, тъй като те вече няма да бъдат пасивни – правила, а активни – входни данни. Необходимо е потребителят на подобни продукти да може сам да настройва правилата, чрез които ще обработва своя текст. Засега липсата на подобни транслатори може да се обясни с множеството сложни проблеми които се изправят пред реализацията им като например непротиворечивост на правилата, детерминираност (пълнота), средства за минимизиране (оптимизиране) и т. н. Също така трудности възникват и от необходимостта тези правила да се предават на междинен език, който обаче трябва да бъде твърде близък до човешкия, тъй като огромната част от потребителите на тези програми няма да бъдат програмисти.
Засега е реално и обозримо единствено предоставянето на различни варианти за избор, тъй като важността на споменатите по-горе коефициенти P и R рязко може да се промени дори само от това, дали материалът, който подлежи на обработка, ще бъде текст от книга или статия от вестник (разликата идва преди всичко от ширината на полето на колоните, вж. т. 4.1).
Съдържание
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. Списък на книгите, върху които са направени експерименти