              КАК СЕ ГЕНЕРИРАТ РЕЧНИЦИТЕ.


  Този документ, описва процеса на генериране на речниците за
OpenOffice.org, aspell и за ispell.


  За да генерирате речника за aspell изпълнете скрипта
build_aspell. След известно чакане ще имате файла bg_words.dat в
същата директория.


  За да генерирате речника и афикс файла за OpenOffice.org
изпълнете скрипта build_OOo. След доста чакане ще имате
файловете bg_BG.aff и bg_BG.dic в същата директория.


  За да генерирате речника и афикс файла за ispell изпълнете
скрипта build_ispell. Този скрипт конвертира файловете
bg_BG.aff и bg_BG.dic до формата, който използва ispell. В
резултат на преобразуването се получават два нови файла
bulgarian.aff и bulgarian.dict.


  Описание на стъпките и кратки коментари по генериране на
данните има в съответните скриптове. Ако някой се интересува от
подробности да разгледа скриптовете.



  За специалисти или любители маниаци (пък и за мое улеснение,
за да не забравям).


  По важна част при генерирането на файловете за OpenOffice.org
и за ispell се изпълнява от файла affix_info.dat. Този файл
съдържа необходимата информация за генерирането на данните. За
да разберете идеята прочетете подробно affix.readme, който е
взет от страницата на OpenOffice.org. Връзката се явява една
главна латинска буква, която указва съответния суфикс и същата
буква се намира след думите, които приемат тези правила. В
affix_info.dat има зададена точно тази информация. Формата на
affix_info.dat е главна латинска буква поне един интервал и
типа (пътя и името на файла, за който да се използва буквата).


  Има възможност да комбинираме суфиксите от няколко типа в един
суфикс. Това е възможно благодарение на условието (низа, който
се вади). При това положение се получава по-голяма компресия на
данните на файла bg_BG.dic но при зареждането на този файл в
паметта, той се разгъва до пълния брой на думите. Т.е. колкото
и да го компресираме при зареждане този файл заема един и същи
обем памет, така че няма голям смисъл да се работи в тази
насока. Все пак нека да разгледаме възможностите за комбиниране
на суфикси.

  Нека да разгледаме тези два реда от affix_info.dat:

C ../../data/noun/male/bg007.dat
D ../../data/noun/male/bg001.dat

  Бърза справка в двата файла ни показва, че те няма как да си
комбинират суфиксите понеже и двата типа имат едни и същи
окончания и двата типа нямат филтър или низ за изваждане. Някой
форми се образуват по различен начин, което веднага налага
самостоятелно използване на суфикси.

  Нека да разгледаме други редове от affix_info.dat:

K ../../data/adjective/bg078.dat
K ../../data/adjective/bg079.dat
K ../../data/noun/female/bg041.dat
K ../../data/noun/female/bg047.dat
K ../../data/noun/male/bg015.dat

  Справка в тези файлове ни показва, че те имат различни низове
за изваждане, от там различни условия и следователно можем да
им обединим суфиксите заедно. При тази операция трябва да се
обърне специално внимание да не се обединяват суфикси, които
имат еднакви или сходни условия. Т.е. не може да се обединяват
два суфикса завършващи на -а. Нито суфикс без условие (0) със
суфикс с условие. Нито суфикс съдържащ се в друг като -я и -ея.
За простота и улеснение условията според affix.readme се
игнорират и се задават само низовете, които трябва да се вадят.
Те също така играят ролята на условия.


  Кратко описание на стъпките по създаването на този файл.

1. Използвайте скрипта count_words_and_affixes.pl за да
генерирате статистическа информация за типовете. Данните се
генерират в CSV (comma separated values) формат.

2. Използвайте някоя електронна таблица, за да анализирате
данните (чрез използване на операцията за сортиране).

3. Извадете в нова таблица само тези типове, които си заслужава
да имат суфикси. Това са обикновено типовете, които имат много
думи. Не си заслужава да правите суфикс за тип, който има 10
думи или по-малко.

4. Използвайте числата от 1 до 26 за да укажете кои типове, коя
буква да имат. Внимавайте суфиксите трябва да са съвместими при
комбинирането им.

5. Копирайте само колоната с имената на файловете (типовете) и
колоната с числата.

6. Запишете резултата от предната точка в CSV формат.

7. Пуснете файла от предната точка през скрипта
convert_affix_info.pl, който ще го конвертира до формата на
affix_info.dat със главна латинска буква и след това пътя и
името на файла.

8. Сортирайте файла от предната точка и изтрийте всички празни
редове, ако има.

9. Проверете файла за съвместимост на суфиксите при комбиниране
с помощта на скрипта check_affix_info.pl.


  Може да използвате и друга процедура за генерирането на файла.
Важното е да се докара до формат, който се очаква от
съответните скриптове. Но _задължително_ го сортирайте и
проверете чрез скрипта check_affix_info.pl. Също така поради
някой особенности на проверката на правописа на OpenOffice.org
окочанието, което се изважда от думата задължително трябва да е
по-дълго от самата дума. Поради тази причина скрипта извършва
проверка на всички думи от типа дали са по-дълги от
окончанието.
