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

(дипломна работа, София, ФМИ, 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. Сричкопренасяне

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. Някои статистики и резултати от проведени изследвания