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

(дипломна работа, София, ФМИ, 1995 г.)

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

Нека w е анализираната дума с дължина m (отново зададена чрез границите си); U – множеството от неразделни буквосъчетания, определени от правило 18, i – номер на знака в думата, зад който се налага да се провери дали е възможен пренос (като се прави проверка само когато буквата е на не по-малко от две позиции преди края на думата и след началото й). Нека са дефинирани следните пет помощни функции:

int is_vol (unsigned long);
// Проверява дали знакът е гласна.

int is (unsigned long k, char ch);
// Проверява дали в текста на място k се намира знака ch.

int is_equal (unsigned long, unsigned long);
// Проверява дали двете места в текста са еднакви букви.

int there_is_vol (unsigned long, unsigned long);
// Проверява дали в подниза с начало begin и край – еnd има гласна.

int in_U (unsigned long, unsigned long); 
// Проверява дали подниза със зададените граници
// се съдържа в множеството U.

Функцията за анализ на буквата w[i] е:

int analyze_letter (unsigned long begin,
	                unsigned long end, 
                    unsigned long i)
  {
    if (end-begin<4L) return 0;
    if (i==begin||i>=end-1L) return 0;
    if (!there_is_vol(begin, i) 
       || !there_is_vol(i+1L, end)) 
      return 0;
    if (in_U(i, i+1L)) return 0;
    if (is_vow(i+1L)) return is_vow(i);
    if (is_vow(i))
      {
        if (!is_vow(i+2L)) 
          return (is(i+1L,'д') && is(i+2L,'ж'));
        if (i>2L && is_vow(i-1L)) 
          return !is_vow(i-2L);
        return 1;
      }
    if (is(i+1L, 'ь')||is_equal(i-1L, i)
        ||is_equal(i+1L, i+2L)) 
      return 0;
    if (is(i,'д')) return !is(i+1L,'ж');
    if (is(i,'й')) return is_vow(i+2L);
    return 1;
  }
<< назад | отгоре | напред >>

Съдържание

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