АЛГОРИТМИ И ПРОГРАМИ В ТЕКСТООБРАБОТКАТА
(дипломна работа, София, ФМИ, 1995 г.)
2.4.3. Алгоритъм за анализ на дума
Нека Т е текст с дължина n, w – дума с дължина m в текста Т (m>3, иначе случаят е тривиален), give_morph – алгоритъм за отделяне на морфеми в думите, analyze_letter – алгоритъм за анализ на конкретна буква. Тогава може да се разгледа думата w като:
w = М1 М2 ... МL R,
където Мi са морфеми, а R – окончание. Тогава се прилага следният алгоритъм:
Чрез give_morph се намира поредна морфема в w (чрез цикъл до изчерпване на w). Нека тази морфема е w' и |w'|=t'. Ясно е, че след w'[0], w'[1], w'[t'-2] и w'[t'-1] не може да има пренос, а след w[t'] може. Тогава за всяко i, i in {2, ..., t'-1} се прилага analyze_letter. Така се определя множеството от места в думата, след които може да има пренос (към тях се прибавя и t'). Същата процедура се прилага и върху R (но без да е необходимо да се прибавя дясната граница към търсеното множество).
Нека са дефинирани следните две помощни функции:
int pp;
// показалец в буфера, където записваме местата за пренос
unsigned long pointers_to_hyphen [max_hyphs];
// буфер, в който се съхраняват местата за пренос
Функцията за анализ на дума е:
void analyze_word (unsigned long begin, unsigned long end) { unsigned long i; unsigned long temp1 = begin; unsigned long temp2 = 1L; while (temp1 < end && temp1) { temp2=give_morph(temp1, end); for (i=temp1; i < temp2; i++) if (analyze_letter(temp1, temp2, i)) pointers_to_hyphen[pp++]=i; if (temp2) pointers_to_hyphen[pp++] = temp2; temp1=temp2; } }
Съдържание
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. Списък на книгите, върху които са направени експерименти