<div dir="ltr"><div><div><div>@Михаил Балабанов:<br><br></div>Не съм тръгнал да критикувам съществено ползвания от „БГ Офис“ набор от правила за формообразуване — в повечето случаи върши перфектна работа. Но като лингвист ще ми позволите да не се съглася, че който и да е човешки език може да бъде формализиран на 100% от даден алгоритъм — естествените езици не са с напълно формална граматика (освен ако не са изкуствени езици, но те по определение не са естествени).<br><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">„Правилата в изходната база на bgoffice не са предназначени само за 
някакви най-често използвани парадигми. Базират се на сериозна 
лингвистична публикация и са писани с идеята да обхващат коректно 
_всички_ случаи на формообразуване“<br></blockquote><br></div><div>Е, явно не обхващат всички случаи, щом IDI е добавил немалко допълнителни парадигми в IDI Spellchecker. И вероятно има поне още няколко десетки случая, които още не са добавени и към IDI Spellchecker.<br></div><div><br></div>Прекалено оптимистичният поглед към въпроса с формалното описание и с parse-ването на текст на естествен език, който е характерен за хората с познания по математика, програмиране, логика и математическа и компютърна лингвистика, не се споделя от повечето от останалите учени (предимно лингвисти и психолози), а и от повечето философи. Програмистите като виждат, че даден език за програмиране си има точно определен синтаксис и набор от ключови думи, и си мислят, че и естествените езици могат да бъдат приравнени до нивото на формализация на езиците за програмиране — за съжаление, това е по-скоро пожелателно мислене. Самите езици за програмиране за измислени като много осакатени и формализирани подмножества на логически формализирани особености на естествените езици (и дори това е прекалено голямо обобщение...).<br><br></div>Плюс това повечето примери за успешни формални алгоритми за синтактичен анализ и проверка на правописа се основават на английския език, който поради голямата си обработеност (все пак най-много и от най-дълго време именно по него има разработки в тази посока) има малко роботско опростена граматика в голямата си част (например -ed и изключенията под формата на неправилните глаголи). Това не се отнася за повечето от останалите естествени езици (което обаче не означава, че <b><i>повечето</i></b> (но не и цялата!) от граматиката им не може да бъде описана от алгоритми). Пък и самите компютри са писани предимно за ASCII, което и до днес си личи в това, че повечето езици за програмиране ползват английския език за ключовите си думи и че например типовете файлове (файловите разширения) са с латински букви, както и това, че командните редове и виртуалните терминали работят най-добре с ASCII (макар че от няколко години насам ползват Уникод по подразбиране). До появата на Уникод компютрите бяха (а и в обозримото бъдеще ще продължат да бъдат) изключително англопоцентрични.<br><div><div><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">Many people would wish that natural languages such as English could be analyzed as precisely, that we could write computer programs to tell which English sentences are grammatically correct. Despite recent advances in natural language processing, many of which have been spurred by formal grammars and other theoretical tools, today’s commercial products for grammar and style fall well short of that ideal. The main problem is that <i><b>there is no common agreement on what are grammatically correct (English) sentences</b></i>; nor has anyone yet been able to offer a grammar precise enough to propose as definitive. <i><b>And style is a matter of taste!</b></i><br></blockquote><br>(Източник: <a href="http://www.cs.ucr.edu/~jiang/cs215/tao-new.pdf">http://www.cs.ucr.edu/~jiang/cs215/tao-new.pdf</a>)<br><br></div><div>Това е само за формообразувателната и донякъде и граматичната страна на въпроса. При семантиката и прагматиката въобще не може да се говори, че някога може да се формализират. Самите речници са опростени списъци с най-често използваните смисли на думите, няма как да обхванат всички случаи (защото контекстът е цар, както се казва).<br><br></div><div>Разбира се, това няма да спре опитите за формализиране на езиците чрез книжовната форма на дадения език, но е просто важно да се спомене от теоретическа гледна точка.<br><br></div><div>Но иначе за целите на „БГ Офис“ (които са основно в областта на проверката на правописа и само донякъде и на граматиката), мнението ви е напълно валидно, г-н Балабанов.<br><br></div><div>Поздрави,<br></div><div>Sah War (sahwar)<br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">На 10 април 2015 г., 2:02, Mikhail Balabanov <span dir="ltr"><<a href="mailto:mishob@abv.bg" target="_blank">mishob@abv.bg</a>></span> написа:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Привет,<br>
<span class=""><br>
> >Иначе се присъединявам към препоръката изходните данни на проекта да останат във формат „основни форми + правила за формообразуване“ и да не се превръщат в „плосък“ списък от разгърнати словоформи. Така обемът на данните е много по-обозрим от човек, по-лесно се допълва базата и се отстраняват грешки, а списъкът със словоформи така или иначе може да се генерира по всяко време в какъвто искаме формат.<br>
<br>
>         По принцип е така, но словоформите на думите в българския език не са винаги по най-често използвания модел на словообразуване на словоформите, поради което автоматичното генериране на словоформи просто няма как да е перфектно точно и винаги ще има грешки, макар и дребни...<br>
<br>
<br>
</span>Напротив, целта е именно перфектно точно генериране и то е съвсем постижимо, както показват многобройните работещи по този начин програми за всякакви езици, включително български. Просто трябва да се внимава при вкарване на всяка нова дума тя да се класифицира правилно и при нужда да се допълват/коригират правилата.<br>
<br>
Правилата в изходната база на bgoffice не са предназначени само за някакви най-често използвани парадигми. Базират се на сериозна лингвистична публикация и са писани с идеята да обхващат коректно _всички_ случаи на формообразуване (затова и са толкова много, над 200). [1] Не се предполага да оставят място за никакви грешки, дребни или едри. Предполага се ако открием грешка/пропуск, просто да я поправим. Механизмът вече е реализиран (и както изглежда – клониран и  надстроен за различни цели от още няколко автори, включително мен), работи добре и нÑ<br>
 �ма никакъв смисъл да се отказваме от него, особено ако искаме да държим основната база с разумен размер. [2] Българският глагол има около 60 форми, без да броим сложните. Това значи, че вместо една дума в основна форма ще пазим шейсет словоформи, които обикновено са по-дълги от основната форма. Освен това ако думата е въведена с грешка в основата, грешката ще трябва да се търси и поправя във всички форми. [3]<br>
<br>
Накрая, описанието с основи и правила позволява самият модул за проверка на правописа с подходящ алгоритъм да извършва разгръщането „наум“ при търсене на дума, без изобщо да му е необходима памет за цялата база в разгърнат вид.<br>
<br>
Поздрави,<br>
Михаил Балабанов<br>
<br>
[1] Моя позната известно време работи във фирмата, която прави един от комерсиалните български модули за проверка – мисля, че беше Кирила. Тяхната система също работи с правила за формообразуване и доколкото си спомням, тя говореше за стотици. Може би са им били необходими допълнителни данни за граматичните признаци, за да правят и граматична проверка.<br>
<br>
[2] Всъщност такава база на две нива би могла да се оптимизира още<br>
повече, като се вкарат регулярни изрази в словника,<br>
например един елемент от типа „(в|до|за|из|на|над|о|под|пре|раз)писвам“<br>
вместо десетина отделни.<br>
<br>
[3] Стандартната правописна проверка в Word 2007 явно също е базирана на правила, защото съдържа дефект, който се повтаря при всички думи с наставка „-ник“ – пленник, пътешественик, магьосник и т.н. Това също означава, че може да се поправи за всички тези думи с пипване на едно единствено правило.<br>
<br>
<br>_______________________________________________<br>
Dict mailing list<br>
<a href="mailto:Dict@ludost.net">Dict@ludost.net</a><br>
<a href="http://lists.ludost.net/cgi-bin/mailman/listinfo/dict" target="_blank">http://lists.ludost.net/cgi-bin/mailman/listinfo/dict</a><br>
<br></blockquote></div><br></div>