The text was extracted automatically from the PDF file, so the formatting may be broken. Open the PDF copy for the correct view.
10. Harvey, D.; Leybourne, S.; Newbold, P. Testing the equality of prediction mean squared
errors. International Journal of Forecasting, 1997, 13(2), 281–291-betlar.
11. Welch, I.; Goyal, A. A comprehensive look at the empirical performance of equity
premium prediction. The Review of Financial Studies, 2008, 21(4), 1455–1508-betlar.
12. 2026-yil 15-sentabrdan boshlab almashuv kursini shakllantirish va e’lon qilish
amaliyotlari takomillashtiriladi. Yangi O‘zbekiston, 10.09.2026. Elektron manba:
https://yuz.uz/uz/news/2026-yil-15-sentyabrdan-boshlab-almashuv-kursini-shakllantirish-vaelon-qilish-amaliyotlari-takomillashtiriladi.
N-GRAM GENERATSIYA MODULI OPTIMIZATSIYASI
Mastura Hakim qizi Primova
ToshDO‘TAU, katta o‘qituvchi
primovamastura@navoiy-uni.uz
Annotatsiya: Ushbu maqolada tabiiy tilni qayta ishlash tizimlarida qo‘llaniladigan N-gram
generatsiya modulini optimallashtirish usullari tadqiq etilgan. Tadqiqotda katta hajmdagi matn
korpuslaridan N-gramlarni shakllantirish jarayonining hisoblash murakkabligi hamda ushbu
jarayonda yuzaga keladigan vaqt va protsessor resurslari bilan bog‘liq muammolar tahlil
qilingan. Modulning ishlash samaradorligini oshirish maqsadida parallel qayta ishlash
texnologiyasidan foydalanish yondashuvi ko‘rib chiqilgan va uning N-gramlarni hosil qilish
jarayoniga ta’siri baholangan. O‘tkazilgan tajribalar natijasida parallel qayta ishlashdan
foydalanish N-gramlarni shakllantirish vaqtini sezilarli darajada qisqartirishi, protsessor
resurslaridan foydalanish samaradorligini oshirishi hamda qayta ishlash natijalarining aniqligini
saqlab qolishi aniqlandi. Olingan natijalar parallel hisoblashga asoslangan optimallashtirish
usullaridan foydalanish katta hajmdagi matn korpuslarini samarali qayta ishlash va N-gram
generatsiya modulining umumiy unumdorligini oshirish uchun istiqbolli yondashuv ekanligini
ko‘rsatadi.
Kalit so‘zlar: N-gram, NLP, matn generatsiyasi, optimallashtirish, parallel hisoblash, til
modeli, samaradorlik.
1. KIRISH
Hozirgi kunda tabiiy tilni qayta ishlash (Natural Language Processing — NLP) sun’iy
intellektning muhim yo‘nalishlaridan biri bo‘lib, matnlarni avtomatik tahlil qilish, tarjima qilish,
keyingi so‘zni bashoratlash va matn generatsiyasi kabi vazifalarda keng qo‘llaniladi. Ushbu
jarayonlarda N-gram modellari matndagi ketma-ket tokenlar o‘rtasidagi statistik bog‘lanishlarni
aniqlash va keyingi token ehtimolini baholash uchun samarali vositalardan biri hisoblanadi [1,2].
Katta hajmdagi korpuslarda N-gramlarni shakllantirish va qayta ishlash esa sezilarli
hisoblash resurslarini talab qiladi. Ayniqsa, millionlab gaplardan tashkil topgan korpuslarda Ngramlar sonining ortishi ularni generatsiya qilish, saqlash va qidirish jarayonlarini
murakkablashtiradi. Shu sababli parallel qayta ishlash va N-gram tartibini optimallashtirish kabi
yondashuvlardan foydalanish muhim ahamiyat kasb etadi [1].
Ushbu maqolada katta hajmdagi matn korpuslaridan N-gramlarni shakllantirish va ular
asosida qidiruv jarayonini hisoblash jihatidan optimallashtirishdan iborat. Tadqiqotda parallel
160
hisoblash, N-gram darajasini cheklash, sliding window, paketli qayta ishlash, indekslash va
keshlash usullarining samaradorligi ko‘rib chiqiladi.
2. MATERIALLAR VA USULLAR
Tizimning qidiruv mexanizmi foydalanuvchi kiritgan so‘rovni (matnli iborani yoki so‘zlar
ketma-ketligini) tegishli N-gramlar bilan solishtirib, mos natijalarni chiqaradi. Dastlabki variantda
qidiruv moduli har bir so‘rov uchun ma’lumotlar bazasida to‘liq qidiruv amalga oshirishi sabab
sezilarli vaqt olishi mumkin edi (ayniqsa, N-gramlar soni millionlar bilan ifodalanganda). Shu bois
indekslash va keshlash orqali qidiruv jarayoni optimallashtirildi.
1. Indekslash. Ma’lumotlar bazasida N-gramlar jadvali uchun maxsus indekslar yaratilib,
qidiruv so‘rovlarining bajarilish vaqti keskin qisqartirildi. Xususan, N-gram matni ustuniga indeks
qo‘yilgach, SQL Server so‘rovni to‘g‘ridan-to‘g‘ri indeks orqali bajaradi – ya’ni, jadvalni to‘liq
skaner qilish o‘rniga indeksdan tegishli kalit bo‘yicha kerakli yozuvlarni tezda topadi. Natijada
so‘rovlarning o‘rtacha bajarilish vaqti 4–5 barobar tezlashdi (masalan, indekslashdan oldin
1000 ms bo‘lgan qidiruv endilikda 200 ms atrofida bajarilmoqda). Indekslash jarayonida
qo‘shimcha disk joyi ishlatiladi va ma’lumotlarni kiritish/yangilash biroz sekinlashishi mumkin,
lekin bizning statik N-gram bazamiz uchun bu muammo emas. Muhimi, indekslar qo‘llash qidiruv
samaradorligini sezilarli oshirdi – oddiy SQL so‘rovining indekslangan holda bajarilishi 150%
gacha tezroq bo‘lishi mumkinligi umumiy tajribada qayd etilgan [1]. Shu tariqa, indekslash usuli
bizning tizimimizda qidiruv tezligini sezilarli darajada oshirishga xizmat qildi.
2. Keshlash. Qidiruv modulida tez-tez takrorlanadigan so‘rovlar uchun kesh xotira joriy
etildi. Bu degani, agar foydalanuvchi bir xil so‘rovni bir necha bor bersa yoki bir-biriga juda
o‘xshash so‘rovlar kiritilsa, birinchi bajarilgan so‘rov natijasi operativ xotirada saqlanadi va
keyingi safar to‘g‘ridan-to‘g‘ri shu natija qaytariladi. Natijada, ikkinchi va undan keyingi marta
aynan o‘sha so‘rov uchun javob vaqti deyarli darhol (bir necha millisekund ichida) hosil
bo‘ladi, chunki ma’lumotlar bazasiga murojaat qilinmaydi [2]. Keshlash usuli ayniqsa bir nechta
foydalanuvchi bir xil yoki o‘xshash so‘rovlarni kiritganda tizimga tushadigan takroriy yukni
kamaytiradi. Bizning tizimda kesh joriy qilinishidan oldin har bir so‘rovga nisbatan ma’lumotlar
bazasiga murojaat qilinar edi, hozir esa, masalan, bir so‘rov birinchi marta 250 msda bajarilsa,
xuddi shu so‘rov ikkinchi marta <5–10 msda keshdan olinadi. Bu 50 barobar tezkorlik degani
(faqat o‘qish operatsiyasini bajarish orqali). Bunday yuqori tezlikka erishishda, albatta, kesh
xotirada ma’lumot saqlanishi uchun qo‘shimcha xotira sarfi talab etiladi – bizning holatda mashina
xotirasining 500 MB qismi kesh uchun ajratildi. Keshdan foydalanish natijasida ma’lumotlarning
yangiligi masalasi ham nazardan chetda qolmadi: N-gram bazasi statik bo‘lgani sababli, natijalar
eskirib qolishi xavfi yo‘q (agarda bazaga yangi ma’lumot qo‘shilganda esa kesh yangilanadigan
qilib sozlangan). Umuman olganda, keshlash qidiruv modulining takroriy so‘rovlardagi
samaradorligini juda yuqori darajada oshirdi – tizimning bir nechta foydalanuvchiga bir vaqtda
xizmat ko‘rsatish imkoniyatini kengaytirdi.
3. Asinxron ishlov berish. Qidiruv moduli foydalanuvchiga xizmat ko‘rsatishda maksimal
interaktivlikni ta’minlash uchun asinxron dasturlash modelidan foydalandik. Ya’ni, og‘irroq
so‘rovlar bajarilayotgan paytda ham web-interfeys "muzlab qolmasligi" uchun qidiruv amaliyoti
asinxron rejimda amalga oshiriladi. Bu degani, foydalanuvchi so‘rovni jo‘natgach, server
tomonida alohida oqim (yoki ishchi jarayon) ushbu so‘rovni indekslar va ma’lumotlar bazasi
yordamida qayta ishlaydi, foydalanuvchi esa shu zahoti interfeysdan javob olayotgandek
161
taassurotga ega bo‘ladi (masalan, "Natija tayyorlanmoqda..." degan xabar). Asinxron ishlov
berish javob vaqtini sub’ektiv ravishda yaxshilaydi – foydalanuvchi real bajarayotgan
operatsiya vaqtini kutmasdan, darhol tizim reaksiyasini ko‘radi. Shuningdek, bu usul serverga bir
paytning o‘zida bir nechta mustaqil qidiruv so‘rovlarini parallel ravishda bajarishga imkon
yaratadi. Sinxron ishlovda, aksincha, har bir so‘rov navbatma-navbat bajariladi va bir-birini kutadi
edi. Asinxron yondashuv natijasida bizning tizim bir vaqtda bir nechta oqimda so‘rovlarni
bajarib, ko‘p foydalanuvchilik rejimda yuqori o‘tkazuvchanlikka erishdi. O‘tkazuvchanlik
bo‘yicha o‘tkazilgan tajribalar shuni ko‘rsatdiki, asinxron rejimda server bir sekundda bajaradigan
so‘rovlar soni sinxron rejimdagiga nisbatan bir necha barobar yuqori bo‘ldi (masalan, sinxron
rejimda 1 sek. da 10 ta so‘rov, asinxronda esa 30–40 ta so‘rovni yakunlashga erishildi). Bu
ko‘rsatkichlar, albatta, tizimning joriy apparat platformasiga bog‘liq, ammo dasturiy optimizatsiya
sifatida asinxron model sezilarli yuklamani taqsimlash afzalligini ta’minladi.
1-jadvaldan ko‘rinadiki, indekslash tufayli qidiruv so‘rovining o‘rtacha bajarilish vaqti
qariyb 5 baravar tezlashgan (980 ms dan 210 ms gacha). Indekslash jarayonida CPU yuklanishi
bir so‘rov uchun biroz oshgan bo‘lsa-da (15%dan 20% gacha), umumiy vaqt qisqargani bois bu
oshish sezilmaydi – protsessor qisqa fursatda ishni tugatadi. Natija aniqligi esa indekslashdan
avval ham, keyin ham bir xil (aniqlikka ta’sir qilmaydi). Keshlash ta’sirini alohida ko‘rsatish
maqsadida, indekslash qo‘llangan holatda bir xil so‘rovni takror bajarishdagi farqni ham kuzatdik:
birinchi so‘rov 210 ms, ikkinchi marta aynan shu so‘rov kesh tufayli 5 ms (javob vaqti) ni tashkil
etdi. Bu 40 barobar farq bo‘lib, keshlashning afzalligi yaqqol namoyon bo‘ladi. Demak, qidiruv
modulini optimallashtirish natijasida foydalanuvchiga ko‘rsatiladigan xizmat sifati –
tezkorlik nuqtayi nazaridan – sezilarli darajada oshirildi.
Yuqoridagi optimallashtirishlar natijasida qidiruv modulining ishlash ko‘rsatkichlari ancha
yaxshilandi. Quyida jadvalda qidiruv moduli uchun indekslashdan oldin va keyin, shuningdek,
keshlash joriy etilgandan keyin o‘lchangan ba’zi parametrlari keltirilgan:
1-jadval.
Qidiruv moduli uchun optimallashtirish natijalari (indekslash va keshlash ta’siri)
Indekslashdan
Ko‘rsatkich
Indekslashdan keiun
avval
O‘rtacha so‘rov bajarish vaqti
210 ms (≈4.7×
980 ms
(ms)
tezroq)
95-foizli kvantil javob vaqti
1500+ ms
300 ms dan kam
(ms)
CPU yuklanishi (1 so‘rovda)
15%
20% (muddat qisqa)
120 MB (indekslar
Xotira sarfi (foydalaniluvchi)
100 MB
uchun)
Natija aniqligi
100%
100% (o‘zgarmagan)
N-gram generatsiya moduli dastlabki matnlar korpusini qayta ishlash orqali N uzunlikdagi
so‘zlar ketma-ketliklarini (unigram, bigram, trigram va hokazo) hosil qiluvchi komponentdir.
Bizning tizim uchun ushbu modul asosiy ma’lumotlarni oldindan tayyorlash vazifasini
bajaradi: u katta hajmdagi o‘zbekcha matnlardan barcha mumkin bo‘lgan N-gramlarni ajratib,
ularning chastota statistikasi bilan birgalikda ma’lumotlar bazasiga yozadi. Bunday yondashuv
162
(ya’ni N-gramlarni oldindan generatsiya qilib qo‘yish) “joyni ko‘proq, lekin vaqtni tejash”
tamoyiliga asoslanadi – ya’ni, ko‘p disk xotira sarfi evaziga qidiruv vaqtida hisoblashni deyarli
nolga tushirish mumkin bo‘ladi [3]. Haqiqatan ham, agar biz har bir qidiruv so‘roviga javoban real
vaqtda N-gramlarni korpusdan generatsiya qilganimizda edi, tizimning javob vaqti soniyalar, hatto
daqiqalar bilan o‘lchanishi mumkin bo‘lardi. Oldindan generatsiya qilingan N-gramlar bazasi esa
so‘rovga deyarli tayyor javobni tezkor chiqarish imkonini beradi.
Shu bilan birga, N-gramlarni oldindan hisoblashning o‘zi ham oson vazifa emas – katta
hajmdagi (millionlab so‘zlardan iborat) korpusdan barcha bigram va trigramlarni ajratish juda
katta hisoblash resurslarini talab qiladi. Masalan, 15 million gapdan iborat korpusda potensial
bigram kombinatsiyalari soni juda kattadir (bizning korpusimizda o‘n millionlab unikal bigramma
hosil bo‘ldi). Bu jarayonni iloji boricha optimallashtirish uchun quyidagi yondashuvlar qo‘llandi:
1. Parallel hisoblash. N-gram generatsiyasini ko‘p oqimli qilib tashkillashtirdik. Ya’ni,
korpusni bir necha qismga ajratib, har bir qismni alohida ip (thread) orqali parallelda qayta
ishlash yo‘lga qo‘yildi. Buning natijasida ko‘p yadroli protsessor resurslaridan to‘liq foydalanildi.
Bir oqimda ketma-ket bajariladigan jarayon, masalan, 80 soniya talab qilgan bo‘lsa, 4 ta parallel
oqimda bajarilganda bu vaqt 25 soniyagacha qisqardi (4 yadrolik CPU misolida). Nazariy jihatdan
N ta oqim ishlatilsa, vaqtni N martagacha qisqartirish mumkin; amalda esa oqimlar o‘rtasida
resurslar taqsimoti va o‘zaro bog‘liqlik tufayli chiziqli tezlashuvdan bir oz pastroq
ko‘rsatkichga erishiladi. Buni bizning tajribamiz ham tasdiqladi: 8 ta parallel oqimga ega
konfiguratsiyada N-gram generatsiyasi 1 oqimlik holatga nisbatan 5.3 baravar tezroq yakunlandi
(80 s. o‘rniga 15 s. atrofida). Quyidagi rasmda parallel hisoblash natijasida N-gram hosil qilish
vaqtining kamayishi grafik tarzda aks ettirilgan:
2.
1-rasm. N-gram generatsiya vaqtining parallel jarayonlar soniga bog‘liqligi grafigi
1, 2, 4 va 8 ta parallel oqim (thread) uchun 100 MB hajmdagi korpusdan N-gram hosil qilish
vaqti (soniya) tasvirlangan. Ko‘rinib turibdiki, oqimlar soni oshishi bilan jarayon vaqti keskin
kamaymoqda; masalan, 1 oqimda 80 s bo‘lgan generatsiya vaqti 8 ta oqimda 15 s gacha qisqargan.
Biroq, 8 oqim 1 oqimdan to‘liq 8 barobar tez emas – samaradorlikka qo‘shimcha yuklar ta’siri
bilan 5–6 barobar tezlashuv kuzatildi.
Parallelizatsiya tufayli N-gram generatsiya moduli bir nechta protsessor yadro yoki hatto bir
nechta serverlarni jalb qilgan holda ulkan korpuslarni ham maqbul vaqt ichida qayta ishlay olishi
ta’minlandi. Bu, ayniqsa, korpus hajmi oshgan sari muhim ahamiyatga ega bo‘ladi: agar bitta
jarayon hisoblash vaqti ekspenensial o‘sadigan bo‘lsa, parallel hisoblash orqali uni ancha
mo‘tadil o‘sishda ushlab turadi (har bir qo‘shimcha oqim bilan deyarli bo‘linuvchi tarzda) [4].
163
3. N-gram darajasini cheklash. Bizning tizimda maksimal N qiymati sifatida trigram
(N=3) bilan cheklandik, ya’ni to‘rtlik va undan uzun N-gramlar generatsiya qilinmadi. Buning
sababi, trigramdan kattaroq N-gramlar ma’lumotlar bazasi hajmini va hisoblash yukini keskin
oshirib yuboradi, lekin qidiruv natijalariga nisbatan aniqlikning sezilarli oshishini ta’minlamasligi
kutiladi. Ilmiy manbalarda ham qayd etilishicha, trigram modellaridan to‘rtlik (4-gram)
modellariga o‘tishda natijalar unchalik yaxshilanmaydi, lekin hisoblash xarajatlari juda oshadi.
Xususan, chet el olimlarining ko‘p tilli tadqiqotlarida bigram+trigram “aralash” model trigram
modelga nisbatan 20% ga tezroq va hajm jihatdan ixchamroq bo‘lgani qayd etilgan. Shu bois biz
optimal yechim sifatida 2 va 3 lik N-gramlar bilan ishlashni tanladik – ya’ni, korpusdan barcha
unigrama, bigrama va trigramlar ajratib olindi, to‘rtliklar esa hisobga olinmadi. Natijada,
ma’lumotlar bazasida saqlanadigan N-gramlar soni va hajmi ancha ixchamlashdi, bu esa qidiruv
tezligiga ham ijobiy ta’sir ko‘rsatadi.
4. Algoritmlarni optimallashtirish. N-gramlarni generatsiya qilish uchun qo‘llaniladigan
dasturiy algoritmlar ham takomillashtirildi. Masalan, matnni tokenlarga ajratish va ular orasidan
N uzunlikdagi kombinatsiyalarni shakllantirish jarayonida effektiv usullar tanlandi. Dastlab oddiy
sikllar yordamida barcha bigrammalarni topish amalga oshirilgan edi – bu usul O(n2)
murakkablikka ega bo‘lib, juda sekin ishlaydi. Biz uni yaxshilash uchun slid-ing window
(siljiydigan oynacha) usulini qo‘lladik: matn bo‘ylab bitta siklda yurib, har bir qadamda yangi
bigramma/trigram hosil qilinadi. Bu usul algoritmik murakkablikni kamaytirib, amaliy ishlash
tezligini oshirdi. Shuningdek, generatsiya davomida ortiqcha ma’lumotlarni chiqarib yubormaslik
uchun filtrlar joriy qilindi – masalan, faqat alifbo harflari va probel belgilari qoldirilib, qolgan
keraksiz belgilar (raqamlar, punktuatsiya va hk) oldindan filtrlandi. Bu orqali N-gram hosil
qilishda nozarur kombinatsiyalar soni kamaydi.
5. Asinxron va paketli (batch) qayta ishlash. Korpusdan N-gramlarni ajratish jarayoni
foydalanuvchi uchun shaffof ravishda, asinxron tartibda fon rejimida bajarildi. Ya’ni, dastlabki
korpusdan N-gramlar generatsiya qilinayotgan paytda foydalanuvchiga tizim ishlamay qolmaydi
– bu jarayon server tomonida fon vazifasi sifatida bajariladi. Natijalar tayyor bo‘lgach esa, ular
umumiy bazaga yoziladi. Shuningdek, juda katta korpusni bosqichma-bosqich (masalan,
bo‘laklarga ajratib) qayta ishlash usuli qo‘llandi. Bir martada butun 15 million gaplani birdaniga
qayta ishlash o‘rniga, uni masalan, 1 million gapdan iborat 15 ta paketchalarga bo‘lib, har bir paket
bo‘yicha alohida generatsiya bajarildi va natijalar bazaga qo‘shib borildi. Bunda har bir paketdan
keyin qisqa pauza berish yoki resurslarni tozalash imkoni bo‘ldi, bu esa tizim xotirasining haddan
ziyod to‘lib ketishini oldini oldi. Natijada, ulkan korpus ham bosqichma-bosqich muvaffaqiyatli
qayta ishlanib, barcha N-gramlar to‘liq generatsiya qilindi.
6.
3.NATIJALAR
Yuqoridagi choralar natijasida N-gram generatsiya modulining ishlash samaradorligi ancha
oshdi. Dastlab, 15 mln. gapdan iborat korpusimizdan bigramma va trigramlarni ajratish bir necha
soat vaqt olishi kutilgan edi. Optimizatsiyalardan so‘ng esa bu jarayonni yarmidan ko‘prog‘iga
(taxminan 2.1 soatdan 0.8 soatga) qisqartirishga erishildi. Ayniqsa, parallelizatsiya va
algoritmik optimizatsiya kombinatsiyasi katta foyda berdi – bu ikki usul alohida qo‘llangandagi
yutuqlar birlashib, umumiy hisobda generatsiya tezligini 3 baravarga oshirdi.
2-jadval.
164
Ko‘rsatkich
1 mln so‘zdan N-gram hosil qilish
vaqti
N-gram generatsiya modulini optimallashtirish natijalari
Dastlabki
Optimizatsiyadan so‘ng
(optimizasyasiz)
45 soniya
12 soniya (4 oqim, ~3.8× tezroq)
CPU umumiy yuklanishi
15% (1 ta yadro
band)
85% (8 ta yadro to‘liq band)
Foydalanilgan xotira hajmi
2.1 GB
Hosil qilingan N-gramlar soni
Hisoblash aniqligi
100% (to‘liq)
100%
2.5 GB (qo‘shimcha kechici
strukturalar)
100% (o‘zgarmagan)
100% (o‘zgarmagan)
4. XULOSA
O‘tkazilgan tajribalar natijalari N-gram generatsiya modulini optimallashtirish
samaradorligini yaqqol ko‘rsatdi. Xususan, parallel qayta ishlash texnologiyasini qo‘llash orqali 1
million so‘zdan iborat korpus uchun N-gram hosil qilish vaqti 45 soniyadan 12 soniyagacha
qisqartirildi. Bu esa modul ishlash tezligining qariyb 3,8 baravar oshganligini anglatadi. Shu bilan
birga, protsessor resurslaridan foydalanish samaradorligi sezilarli darajada yaxshilanib, barcha
yadro imkoniyatlaridan faol foydalanishga erishildi [5].
Umuman olganda, N-gram generatsiya modulini optimallashtirish katta hajmdagi matnlarni
qayta ishlashda yuqori samaradorlikka erishish imkonini beradi. Tadqiqot natijalari parallel
hisoblash usullaridan foydalanish N-gram modellari asosidagi NLP tizimlarining tezkorligi va
unumdorligini oshirishda muhim ahamiyatga ega ekanligini ko‘rsatdi. Kelgusida ushbu
yondashuvni taqsimlangan hisoblash tizimlari va yanada katta hajmdagi matn korpuslariga tatbiq
etish orqali samaradorlikni yanada oshirish mumkin.
FOYDALANILGAN ADABIYOTLAR:
1. https://xebia.com/blog/improving-search-query-with-lucene/
2. https://www.elastic.co/blog/elasticsearch-caching-deep-dive-boosting-query-speed-onecache-at-a-time
3. https://groups.google.com/g/clojure/c/YtuQCrd8LZ8
4. Chew, Y.C.; Mikami, Y.; Marasinghe, C.A.; Nandasara, S.T. Optimizing N-gram order
of an N-gram based language identification algorithm for 63 written languages. International
Journal on Advances in ICT for Emerging Regions, 2009, 2(2).
5. Elov, B.B.; Tojieva, G.N.; Tokhtaeva, M.X.; Jurayeva, N.J.; Primova, M.H. N-gram
language model for Uzbek texts. International Conference on Trends in Sustainable Computing
and Machine Intelligence (ICTSM 2025), Bangkok, Thailand, 19–20 September 2025; pp. 346–
357. https://link.springer.com/chapter/10.1007/978-3-032-13177-5_27
165