Skip to content

O‘zbek tili uchun Hunspell lug‘atlarini hosil qilish uchun qoidalar to‘plami va generator

License

Notifications You must be signed in to change notification settings

u2b3k/uz-hungen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

O‘zbek tili uchun Hunspell lug‘atlarini hosil qilish uchun qoidalar to‘plami va generator

Qo‘shimchalar turlari va ularni qay tartibda kelishi \Affixes*.qoida fayllarida, so‘zlarning ro‘yxati esa \Dictionaries*.txt fayllarda beriladi. Hunspell lug‘atlarini hosil qilish uchun:

uzhungen.exe -s .\Affixes\*.qoida -d .\Dictionaries\*.txt

Natijada Generated papkasida uz.aff va uz.dic fayllarini hosil qiladi.

Qoidalar fayli

Qo‘shimchalar to‘plamini berish uchun SFX bloki ishlatiladi. Bitta guruhga oid qo‘shimchalar (masalan, kelishik, egalik qo‘shimchalari) bir blok ostida kiritiladi. Sintaksis:

SFX <Qo‘SHIMCHA_GURUHI>
	
	<Qo‘SHIMCHA_NOMI> = "<Qo‘SHIMCHA>" [ENDSWITH "<REGEX_IFODA>" [STRIP [<QIRQILADIGAN_BELGI>]]]
	...

END SFX

Sintaksisda berilgan to‘rtburchak qavs ichidagi buyruqlar majburiy emas, tushirib qoldirilishi mumkin.

<Qo‘SHIMCHA_GURUHI> - Qo‘shimchalar guruhining nomi, masalan EGALIK. TAG blokida qo‘shimchalar ketma-ketliklarni berishda ishlatiladi.

<Qo‘SHIMCHA_NOMI> - Qo‘shimchaning nomi, masalan 1-SHAXS BIRLIK.

<Qo‘SHIMCHA> - Qo‘shimchaning o‘zi, masalan "ning".

ENDSWITH "<REGEX_IFODA>" - Bu qo‘shimchalar guruhidan oldingan qo‘shimcha yoki o‘zak so‘zning qaysi harf bilan tugashini tekshirish buyrug‘i.

<REGEX_IFODA> - soddalashtirilgan qolipli ifoda. To‘plam ([]), ihtiyoriy belgi (.) va inkor buyruqlaridan (^) foydalanish mumkin xolos. Inkor faqat to‘plamni inkor etadi va [^abs] shaklida beriladi. Ya’ni [^abs] bu oxirgi harf "a" ham emas, "b" ham emas, "s" ham emas bo‘lsa degan shartni berish uchun ishlaydi.

STRIP <QIRQILADIGAN_BELGI> - So‘z oxiridan qirqiladigan harf(lar)ni berish buyrug‘i. Agar qirqiladigan belgi berilmasa harflar avtomat qirqiladi (qolipli ifodaga mos tarzda)

Misol:

SFX EGALIK 

    [ENDSWITH "q" STRIP]        # Agar bundan oldingi kelgan qo‘shimcha yoki o‘zak so‘z "q" harfi bilan tugasa (ENDSWITH "q"), "q" ni tashlab yubor (STRIP)
    1SHB = "g‘im"
    1SHK = "g‘imiz"
    2SHB = "g‘ing"
    2SHK = "g‘ingiz"
    3SHB = "g‘i"

	[ENDSWITH "[ai]"]           # Agar bundan oldin kelgan qo‘shimcha/o‘zak so‘z "a" yoki "i" harflaridan biri bilan tugasa
    1SHB = "m"
    1SHK = "miz"
    2SHB = "ng"
    2SHK = "ngiz"
    3SHB = "si"

END SFX

Bir qolipga tushmaydigan, harf almashishiga uchraydigan istisno holatlarni quyidagicha berish mumkin:

SFX EGALIK 

    [ENDSWITH "q" STRIP]        # Agar bundan oldingi kelgan qo‘shimcha yoki o‘zak so‘z "q" harfi bilan tugasa (ENDSWITH "q"), "q" ni tashlab yubor (STRIP)
    1SHB = "g‘im"
    1SHK = "g‘imiz"
    2SHB = "g‘ing"
    2SHK = "g‘ingiz"
    3SHB = "g‘i"

	[ENDSWITH "[ai]"]           # Agar bundan oldin kelgan qo‘shimcha/o‘zak so‘z "a" yoki "i" harflaridan biri bilan tugasa
    1SHB = "m"
    1SHK = "miz"
    2SHB = "ng"
    2SHK = "ngiz"
    3SHB = "si"

	[CLASS .IL ONLYROOT]
    [ENDSWITH "il" STRIP]       # singil => singlim, ko'ngil => ko'ngli
    1SHB = "lim"
    1SHK = "limiz"
    2SHB = "ling"
    2SHK = "lingiz"
    3SHB = "li"

END SFX

Bunda EGALIK.IL nomli alohida sinf hosil bo‘ladi. Chunki "singil" so‘zi kabi ba‘zi so‘zlar umumiy qoidalarga tushmaydi, harf almashishiga uchraydi. Hunspell da esa qolipli ifodalar va bunday holatlarni boshqarish imkoniyati cheklangan. Ushbu EGALIK to‘plami qaysidir TAG da uchrasa, o‘sha tegning alohida sinfi sifatida yaratiladi va lug‘atda bunday so‘zlarni quyidagicha ko‘rsatish mumkin:

kitob/OT
singil/OT.IL

Qo‘shimchalar ketma-ketligini berish uchun TAG bloki ishlatiladi. Bitta so‘z turkumiga oid qoidalarni bitta shunda TAG bloki ostida yoziladi. Sintaksis:

TAG <TURKUM_NOMI>
	
	<QOIDA_NOMI> = <Qo‘SHIMCHA_GURUHI_1> + <Qo‘SHIMCHA_GURUHI_2> + ... + <Qo‘SHIMCHA_GURUHI_N> 

END TAG

<QOIDA_NOMI> - Morfologik ma’lumot sifatida ishlatish mumkin.

<Qo‘SHIMCHA_GURUHI_1>, <Qo‘SHIMCHA_GURUHI_2>, <Qo‘SHIMCHA_GURUHI_N> - Qo‘shimchalar guruhi nomlari. Bu guruhlar qaysi ketma-ketlikda kelishiga qarab qo‘shimchalar shunday tarzda qo‘shiladi. Qo‘shish ifodasida to‘rtburchak va shaklli qavslardan foydalanish mumkin. To‘rtburchak qavs ichida keladigan qo‘shimchalar guruhlari majburiy bo‘lmagan, tushib qolishi mumkin bo‘lgan qo‘shimchalarni, shaklli qavs ichida esa majburiy qo‘shimchalarni yozish mumkin.

Misol:

TAG OT
	
	O1 = EGALIK + [KELISHIK, YUKLAMA]			# EGALIK dan keyin yo KELISHIK yoki YUKLAMA kelishi mumkin, yoki ikkalasi ham kelmasligi mumkin ([] ichida)
	O2 = {KO‘PLIK, KELISHIK} + [YUKLAMA]			# Ko‘PLIK yoki KELISHIK dan biridan ({} ichida) keyin YUKLAMA kelishi mumkin, lekin majburiy emas.

END TAG

Yuqoridagi ikkita qoida quyidagicha qo'shimchalar ketma-ketligini hosil qiladi:

# O1 uchun
EGALIK
EGALIK + KELISHIK
EGALIK + YUKLAMA

# O2 uchun
KO‘PLIK
KO‘PLIK + YUKLAMA
KELISHIK
KELISHIK + YUKLAMA

Ichida hech qanday ketma-ketlik yozilmagan teg ham to‘g‘ri hisoblanadi. Bunday teg bilan belgilangan so‘zlarda bu teg morfologik ma’lumot sifatida ishlatilishi mumkin.

Fayl ichida izohlardan foydalanish mumkin. Izoh # belgisi bilan boshlanadi va qayerda ushbu qo‘yilishidan qat’i nazar qator oxirigacha amal qiladi. Ya’ni # belgisidan to shu qator oxirigacha izoh hisoblanadi.

So‘zlar fayli

So‘zlar har bir qatorga alohida qilib kiritiladi. So‘zdan keyin "/" belgisi va undan keyin qoida faylidagi biror TAG nomi berilishi mumkin. Agar bir so‘zga bir nechta TAG berilishi kerak bo‘lsa, teglar "/" belgisi bilan ajratib yoziladi. Yoki so‘zga hech qanday teg bermaslik uchun so‘zdan keyin hech narsa yozilmaydi.

Misol:

olma/OT

kitob/OT

yaxshi/OT/SIFAT

va

Yuqoridagi misoldagi holatga ko‘ra "olma" so‘ziga OT tegi ostida berilgan barcha qo‘shimchalar ketma-ketligi to‘g‘ri hisoblanadi va AFF faylda ham shunga mos ravishda flaglar hosil qilinadi. So‘zlar kichik harflar bilan yoziladi. Agar so‘zda katta harflar ham mavjud bo‘lsa (masalan birinchi harf) ushbu register Hunspell orqali tekshirilganda ham huddi shunday holda yozilsagina to‘g‘ri hisoblanadi. Bu asosan atoqli nomlarni yozishda ishlatiladi. Masalan, "o‘zbekiston" deb yozilgan so‘z "o‘zbekiston" shaklida yozilganda Hunspell uni noto‘g‘ri hisoblaydi.

About

O‘zbek tili uchun Hunspell lug‘atlarini hosil qilish uchun qoidalar to‘plami va generator

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages