Dasturlashda Naming convesion juda muhim. Hatto self-documented code bo'lishiga ham hissa qo'shadi. Undan tashqari biror algoritm yozayotgan paytingiz, undagi o'zgaruvchilar uchun meaningfull nom tanlash yetarlikcha vaqt talab qiladi. Buni tushunasiz!
ChatGPT ga o'xshagan, ammo kichik va faqat shu narsaga ixtisoslashgan loyiha qilish mumkin. Masalan "2 nuqta orasidagi masofani aniqlash funksiyasi" deb yozasiz. U sizga turli nomlarni taklif qiladi. Kod yozib berishi shart emas. Tahminan quyidagicha javob beradi:
Function names: [ getDistance, distanceOf, ... ]
Argument names: [ vector, point, input, ... ]
Yoki boshqacharoq:
fn distanceBetween( a, b )
fn distanceOf( a, b )
fn getDistance( a, b )
Implementation
Ushbu post AI haqida emas. Ammo muhim narsani eslatib o'tmoqchiman. AI tibbiyot kabi bo'limlarga ajralib ketgan. Har bir AI muhandisi - shifokor kabidir va shifokorlar har xil bo'ladi. Bu loyihaga uning ML qismi kifoya qiladi. Quyida loyihani yozish uchun qisqa road-map qoldiraman:
1. Natural Language processing - bu narsa ML ga aloqador bo'lib asosan matnlar bilan ishlaydi. Tovushlarni (Audio) ham matnga o'girish jarayoni shu bo'limda hal qilinadi. Bunda JavaScript yoki boshqa tillar uchun ham yetarli kutubxonalar bor. Python'da ko'proq va osonroq.
2. Foydalanuvchi aynan qaysi tilda yozadi? Agar o'zbek tilida bo'lsa ML qismida qo'shimcha ishlar talab qilinadi (masalan tokens, stopwords, ...). Ingliz tilida osonroq va tayyor. Shunda bu qadamni tashlab o'tish ham mumkin.
3. Wikipedia tech-topics uchun nisbatan ishonchliroq (IMO). Uni yoki shunga o'xshash API beradigan biror loyihaga integratsiya qilib, u yerdan user yozgan mavzuga aloqador technical keyword'larni ko'chirib olish mumkin. API topolmasangiz Web Scraping qiling.
Eslatma!
Road-map'ning 3-bosqichi ko'proq vaqt talab qiladi va sifatli/sifatsiz app bo'lishiga sabab bo'ladi. Masalan "Vektor uzunligini aniqlash funksiyasi" deb yozsangiz u, funksiya nomi uchun "magnitude" degan nomni taklif qilishi mumkin.
Avvalgi misolda biz "masofa" so'zini ishlatdik va u ham "distance" so'zini ishlatdi. Hammasi tushunarli, shunchaki tajrima. Ammo keyingi misolda "magnitude" so'zini qayerdan oldi? Mana shu joyi qiziq.
Fanda vektorning uzunligi - uning magnitudasi deb ataladi. Bizning loyihamiz ham, ChatGPT kabi "aqqli" emas. Faqat u kabi qayerdan ma'lumot olishni biladi. Shunig uchun 3-qismga ko'proq e'tibor qarating.
Tavsiya
Loyihani chuqur o'ylamang, oddiyroq yondoshing, avval API larsiz ham, hand-made usulda qilib ko'ring, hatto, faqat funksiya nomini taklif qiladigan kichik app bo'lishi mumkin. Chunki turishi olamni buzadiyu lekin o'zi bir tiynga qimmat loyihadan, kamtar ammo to'gri ishlaydigan va kerakli loyiha afzalroq. Avval shuni o'xshating, keyin jiddiyroq yozaverasiz...
Aleph Nought