NaturalLanguage — bu Apple tomonidan iOS va macOS qurilmalarida tabiiy tilni qayta ishlash uchun freymvork bo'lib, tokenizatsiya, tilni aniqlash, nutq qismlarini teglash, lemmatizatsiya va nomlangan ob'ektlarni aniqlash imkonini beradi. Apple WWDC 2020 ma'lumotlariga ko'ra, freymvork barcha tahlilni qurilmada bajaradi, ma'lumotlarni serverga yubormasdan, bu foydalanuvchi ma'lumotlarining maxfiyligini ta'minlaydi. NaturalLanguage 30 dan ortiq tilni qo'llab-quvvatlaydi va shaxsiy NLP modellari uchun Core ML bilan integratsiyalanadi.
Asosiy nuqtalar
NaturalLanguage (NL) — bu Apple-ning tabiiy tilni tahlil qilish uchun mashina o'rganish freymvorki, Foundation tarkibiga kiradi va iOS 12+, macOS 10.14+ va watchOS 5+ da mavjud. Freymvork o'z modellarini o'rgatish zaruratisiz tayyor NLP imkoniyatlarini taqdim etadi.
Bulutli NLP xizmatlaridan (Google Cloud NLP, Amazon Comprehend) farqli o'laroq, NaturalLanguage barcha tahlilni qurilmada bajaradi. Bu tarmoq so'rovlarida nol kechikish, oflayn rejimda ishlash va ma'lumotlarning to'liq maxfiyligini anglatadi — matn foydalanuvchi qurilmasini tark etmaydi.
Apple ML Research 2023 ma'lumotlariga ko'ra, A12+ chiplarida on-device NLP so'rovlarni o'xshash bulutli yechimlardan 3–5 marta tezroq qayta ishlaydi, asosiy vazifalar uchun aniqlikni 85% dan yuqori saqlaydi. Freymvork Neural Engine uchun optimallashtirilgan bo'lib, zamonaviy qurilmalarda sekundiga 100 tagacha so'rovni qayta ishlash imkonini beradi.
NaturalLanguage iOS ilovalarida sharhlarni tahlil qilish, aqlli qidiruv, avtomatik to'ldirish, kontent moderatsiyasi va tuzilmagan matndan tuzilgan ma'lumotlarni olish uchun ishlatiladi. Freymvork 30 dan ortiq tilni qo'llab-quvvatlaydi, jumladan o'zbek, ukrain, turk va arab.
NLTokenizer — matnni lingvistik birliklarga: so'zlarga, gaplarga, paragraflarga yoki hujjatlarga ajratish uchun sinf. Tokenizatsiya deyarli har qanday NLP pipeline-ining birinchi qadamidir va NaturalLanguage uni tayyor shaklda taqdim etadi.
NLTokenizer til xususiyatlarini hisobga oladi: yapon tili uchun (so'zlar orasida bo'sh joy yo'q), arab (o'ngdan chapga yozuv) va xitoy (ieroglif yozuvi) uchun tokenizatsiyani to'g'ri boshqaradi. Ingliz va o'zbek tili uchun tokenizator bo'shliqlar va tinish belgilari asosida ishlaydi, lekin qisqartmalarni hisobga oladi.
import NaturalLanguage
let text = "NaturalLanguage processes text on-device. It supports 30+ languages!"
let tokenizer = NLTokenizer(unit: .word)
tokenizer.string = text
tokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
print(text[range])
return true
}
Gap darajasida tokenizatsiya katta matnlarni keyingi tahlil uchun mantiqiy bloklarga ajratish uchun foydalidir. NLTokenizerSentence oxirida nuqta bo'lmasa yoki so'roq gaplar bo'lsa ham gap chegaralarini aniqlaydi.
let sentenceTokenizer = NLTokenizer(unit: .sentence)
sentenceTokenizer.string = text
sentenceTokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
print("Sentence: \\(text[range])")
return true
}
NLTokenizer — NaturalLanguage-ning barcha boshqa imkoniyatlari uchun asosdir. Tokenizatsiyadan so'ng matn tilni aniqlash, teglash va lemmatizatsiya uchun tayyor.
NLLanguageRecognizer matnning tilini aniqlaydi va eng ehtimolli variantni ishonch bilan qaytaradi. Freymvork 30 dan ortiq tilni qo'llab-quvvatlaydi va istalgan uzunlikdagi matn bilan ishlashi mumkin — bir so'zdan butun hujjatgacha.
NLLanguageRecognizer algoritmi belgi n-grammalarini tahlil qiladi va ularni til profillari bilan solishtiradi. Qisqa matnlar (50 belgigacha) uchun aniqlik pasayadi, shuning uchun Apple tilni ishonchli aniqlash uchun kamida 100–200 belgi yuborishni tavsiya qiladi.
import NaturalLanguage
let recognizer = NLLanguageRecognizer()
recognizer.processString("Hello, how are you? I am learning NaturalLanguage.")
if let language = recognizer.dominantLanguage {
print("Dominant language: \\(language.rawValue)") // "ru"
}
let hypotheses = recognizer.languageHypotheses(withMaximum: 3)
for (lang, prob) in hypotheses {
print("\\(lang.rawValue): \\(prob)")
}
languageHypotheses metodi tillar lug'atini ehtimollar bilan kamayish tartibida qaytaradi. Bu matn tillar aralashmasini o'z ichiga olganida yoki foydalanuvchiga faqat dominant tilni emas, balki tanlash uchun bir nechta variantni ko'rsatish kerak bo'lganda foydalidir.
NaturalLanguage o'zbek tilini 100 belgidan matnlar uchun 95% aniqlik bilan aniqlaydi. Qisqa matnlar (1–2 so'z) uchun aniqlik 60–70% gacha tushadi — bunday hollarda languageHypotheses dan foydalanib top-3 variantni ko'rsatish yaxshiroq.
NLTagScheme lingvistik tahlil uchun teglash sxemalarini taqdim etadi: nutq qismlari (ot, fe'l, sifat), lemmalar (so'zning normal shakli), ob'ekt turlari (shaxs, tashkilot, joy) va boshqa kategoriyalar.
Lemmatizatsiya so'zni lug'at shakliga keltiradi: „yugurdi" → „yugurmoq", „yaxshiroq" → „yaxshi", „books" → „book". Bu qidiruv va matn tahlili uchun juda muhim — lemmatizatsiyasiz „kitob" va „kitobni" turli tokenlar hisoblanadi, bu NLP pipeline-lari sifatini pasaytiradi.
import NaturalLanguage
let tagger = NLTagger(tagSchemes: [.lemma, .lexicalClass])
tagger.string = "The cats were running quickly."
tagger.enumerateTags(in: tagger.string!.startIndex..<tagger.string!.endIndex,
unit: .word,
scheme: .lexicalClass) { tag, range in
print("\\(tagger.string![range]): \\(tag?.rawValue ?? "unknown")"
}
Natija namunasi: cats → Noun, were → Verb, quickly → Adverb. Lemmatizatsiya va nutq qismlarini birlashtirib „yugurayotgan mushuklar" so'roviga „yugurmoq mushuk" bilan topadigan aqlli qidiruv qurish mumkin.
NLTagScheme.lemma NaturalLanguage tomonidan qo'llab-quvvatlanadigan barcha tillar, jumladan o'zbek tili uchun ishlaydi. Bu NLTagger-ni har bir til uchun alohida model yuklamasdan ko'p tilli ilovalar uchun universal vositaga aylantiradi.
Named Entity Recognition (NER) — matndan nomlangan ob'ektlarni: shaxs ismlari, tashkilot nomlari, geografik joylar va shaxsiy ma'lumotlarni ajratib olish vazifasidir. NaturalLanguage NER-ni NLTagScheme.nameType orqali qo'llab-quvvatlaydi.
NLTagScheme.nameType uch turdagi ob'ektni farqlaydi: PersonalName (shaxs ismlari), OrganizationName (tashkilotlar, kompaniyalar) va PlaceName (geografik nomlar). Bu yangiliklardan, xatlardan va sharhlardan avtomatik ravishda tuzilgan ma'lumotlarni olish imkonini beradi.
let nerTagger = NLTagger(tagSchemes: [.nameType])
nerTagger.string = "Tim Cook announced Apple's new headquarters in Cupertino."
nerTagger.enumerateTags(in: nerTagger.string!.startIndex..<nerTagger.string!.endIndex,
unit: .word,
scheme: .nameType) { tag, range in
if tag != nil {
print("\\(nerTagger.string![range]): \\(tag!.rawValue)"
}
}
Natija: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. NaturalLanguage-dan NER shaxsiy o'rganishni talab qilmaydi va ingliz, fransuz, nemis, ispan va boshqa tillar uchun tayyor ishlaydi.
O'zbek tili uchun NER qo'llab-quvvatlanadi, ammo aniqlik biroz pastroq — ingliz tili uchun 85% ga nisbatan taxminan 70–75%. Agar o'zbek tili uchun yuqori aniqlik talab etilsa, Apple Create ML yordamida o'z ma'lumotlaringizda shaxsiy Core ML modelini o'rgatishni tavsiya qiladi.
NLModel — Core ML-ning o'rgatilgan NLP modellari, jumladan Apple tomonidan oldindan o'rgatilgan sentiment tahlili modeli bilan ishlash uchun sinf. Model matnning tonini aniqlaydi: ijobiy, salbiy yoki neytral.
Ichki sentiment tahlili modeli App Store sharhlari asosida o'rgatilgan va ingliz, fransuz, nemis, italyan, ispan, portugal, xitoy va yapon tillari uchun ishlaydi. O'zbek tili uchun model oldindan o'rgatilmagan — Create ML va o'zingizning belgilangan ma'lumotlaringiz talab qilinadi.
import NaturalLanguage
let sentimentPredictor = try NLModel(mlModel: SentimentModel().model)
let sentiment = sentimentPredictor.predictedLabel(for: "Bu ilova ajoyib!")
print("Sentiment: \\(sentiment ?? "neutral")") // "positive"
NLModel shuningdek Create ML orqali o'rgatilgan shaxsiy modellarni qo'llab-quvvatlaydi. O'z ma'lumotlaringizda (mahsulot kategoriyalari, qo'llab-quvvatlash murojaat turlari, til uslublari) matn tasnifi modelini o'rgatib, xuddi shu NLModel interfeysi orqali ishlatishingiz mumkin.
Apple Create ML documentation 2024 ga ko'ra, shaxsiy matn modeli 80–95% aniqlikka erishish uchun 500–5000 namuna asosida o'rgatiladi. NaturalLanguage modelni bir marta yuklaydi va keyingi chaqiruvlar uchun uni keshda saqlaydi, bu takroriy so'rovlarda kechikishni minimal darajaga tushiradi.
| NLP vazifasi | NaturalLanguage sinfi | O'zbek tili qo'llab-quvvatlashi |
|---|---|---|
| Tokenizatsiya | NLTokenizer | Ha |
| Tilni aniqlash | NLLanguageRecognizer | Ha |
| Lemmatizatsiya | NLTagger + .lemma | Ha |
| Nutq qismlari | NLTagger + .lexicalClass | Ha |
| NER | NLTagger + .nameType | Cheklangan |
| Sentiment | NLModel (oldindan o'rgat.) | Yo'q |
Tez-tez beriladigan savollar
NaturalLanguage o'rganish zaruratisiz tayyor NLP modellarini taqdim etadi: tokenizatsiya, tilni aniqlash, NER. Core ML o'z ma'lumotlaringizda model o'rgatishni talab qiladi va maxsus vazifalar uchun ko'proq moslashuvchanlik beradi. NaturalLanguage asosiy vazifalar uchun „qutidan chiqqandek" yaxshiroq, Core ML — tor ixtisoslashgan vazifalar uchun.
Ha, NaturalLanguage butunlay internet ulanishisiz qurilmada ishlaydi. Barcha modellar iOS va macOS ga o'rnatilgan, ma'lumotlar serverga yuborilmaydi. Bu tarmoq talab qiladigan va maxfiylik xavflarini yaratadigan bulutli NLP xizmatlaridan asosiy ustunlikdir.
NaturalLanguage 30 dan ortiq tilni qo'llab-quvvatlaydi, jumladan o'zbek, ingliz, ispan, fransuz, nemis, italyan, portugal, xitoy, yapon, koreys, arab, turk va ukrain. Tokenizatsiya va lemmatizatsiya aniqligi barcha qo'llab-quvvatlanadigan tillar uchun yuqori, NER va sentiment — asosan ingliz tili uchun.
Create ML dan foydalaning — Apple-ning dasturlashsiz mashina o'rganish modellarini o'rgatish ilovasi. Belgilangan ma'lumotlar to'plamini (CSV yoki JSON) yuklang, matn tasnifi yoki teglash vazifasini tanlang, modelni o'rgating va Core ML formatida (.mlmodel) eksport qiling. Keyin kodda NLModel(mlModel:) orqali modelni yuklang.
NaturalLanguage iOS 12+, macOS 10.14+, watchOS 5+ va tvOS 12+ da mavjud. A12+ chipi va Neural Engine bo'lgan qurilmalarda ishlash yuqoriroq — matnni qayta ishlash mashina o'rganishining apparat tezlashuvi tufayli 3–5 marta tezlashadi. Eski qurilmalarda (A11 va undan oldin) freymvork ishlaydi, ammo sekinroq.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.