NLP / NaturalLanguage: iOS-da mətn emalı freymvorku

Müəllif: IT Sectr Dərc olunub: 2026-07-19 Oxuma vaxtı: 8 dəq

NaturalLanguage — Apple tərəfindən iOS və macOS cihazlarında təbii dil emalı üçün freymvorkdur, tokenizasiya, dil tanıma, nitq hissələrinin teqlənməsi, lemmatizasiya və adlandırılmış varlıqların müəyyən edilməsinə imkan verir. Apple WWDC 2020 məlumatına görə, freymvork bütün analizi cihazda yerinə yetirir, məlumatları serverə göndərmədən, bu da istifadəçi məlumatlarının məxfiliyini təmin edir. NaturalLanguage 30-dan çox dili dəstəkləyir və fərdi NLP modelləri üçün Core ML ilə inteqrasiya olunur.

Əsas məqamlar

  • NaturalLanguage — Apple-dan on-device NLP freymvorku, məlumatları buluda göndərmədən işləyir.
  • Tokenizasiya, dil tanıma, lemmatizasiya, nitq hissələrinin teqlənməsi və NER dəstəkləyir.
  • 30+ dil ilə işləyir, o cümlədən Azərbaycan, ingilis, çin, ərəb.
  • NLTokenizer mətni sözlərə, cümlələrə, paraqraflara və sənədlərə bölür.
  • NLLanguageRecognizer mətnin dilini hər variant üçün ehtimal göstərməklə müəyyən edir.

iOS-da NaturalLanguage nədir?

NaturalLanguage (NL) — Apple-ın təbii dil analizi üçün maşın öyrənmə freymvorkudur, Foundation tərkibinə daxildir və iOS 12+, macOS 10.14+ və watchOS 5+-də mövcuddur. Freymvork öz modellərini öyrətmək zərurəti olmadan hazır NLP imkanları təmin edir.

Bulud NLP xidmətlərindən (Google Cloud NLP, Amazon Comprehend) fərqli olaraq, NaturalLanguage bütün analizi cihazda yerinə yetirir. Bu, şəbəkə sorğularında sıfır gecikmə, oflayn rejimdə işləmə və məlumatların tam məxfiliyi deməkdir — mətn istifadəçinin cihazını tərk etmir.

Apple ML Research 2023 məlumatına görə, A12+ çipində on-device NLP sorğuları oxşar bulud həllərindən 3–5 dəfə sürətli emal edir, əsas tapşırıqlar üçün dəqiqliyi 85%-dən yuxarı saxlayır. Freymvork Neural Engine üçün optimallaşdırılıb, müasir cihazlarda saniyədə 100 sorğu emal etməyə imkan verir.

NaturalLanguage iOS tətbiqlərində rəy analizi, ağıllı axtarış, avtomatik tamamlama, məzmun moderasiyası və strukturlaşdırılmamış mətndən strukturlaşdırılmış məlumatların çıxarılması üçün istifadə olunur. Freymvork 30-dan çox dili dəstəkləyir, o cümlədən Azərbaycan, ukrayna, türk və ərəb.

NLTokenizer ilə mətnin tokenizasiyası

NLTokenizer — mətni linqvistik vahidlərə: sözlərə, cümlələrə, paraqraflara və ya sənədlərə bölmək üçün sinifdir. Tokenizasiya demək olar ki, hər hansı NLP pipeline-inin ilk addımıdır və NaturalLanguage onu hazır formada təmin edir.

NLTokenizer dilin xüsusiyyətlərini nəzərə alır: yapon dili üçün (sözlər arasında boşluq olmadan), ərəb (sağdan sola yazı) və çin (heroqlif yazısı) üçün tokenizasiyanı düzgün idarə edir. İngilis və Azərbaycan dili üçün tokenizator boşluqlar və durğu işarələri əsasında işləyir, lakin ixtisarları nəzərə alır.

swift
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
}

Cümlə səviyyəsində tokenizasiya böyük mətnləri sonrakı analiz üçün məntiqi bloklara bölmək üçün faydalıdır. NLTokenizerSentence sonunda nöqtə olmasa vəya sual cümlələri olsa belə cümlə sərhədlərini təyin edəcək.

swift
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-in bütün digər imkanları üçün əsasdır. Tokenizasiyadan sonra mətn dil tanıma, teqləmə və lemmatizasiya üçün hazırdır.

NLLanguageRecognizer ilə dil tanıma

NLLanguageRecognizer mətnin dilini müəyyən edir və əminliklə ən çox ehtimal olunan variantı qaytarır. Freymvork 30-dan çox dili dəstəkləyir və istənilən uzunluqdakı mətnlə işləyə bilər — bir sözdən tutmuş bütün sənədə qədər.

NLLanguageRecognizer alqoritmi simvol n-gramlarını təhlil edir və onları dil profilləri ilə müqayisə edir. Qısa mətnlər (50 simvola qədər) üçün dəqiqlik azalır, buna görə Apple dilin əmin müəyyən edilməsi üçün ən azı 100–200 simvol ötürməyi tövsiyə edir.

swift
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 metodu dillərin lüğətini ehtimallarla azalan ardıcıllıqla qaytarır. Bu, mətn dillərin qarışığını ehtiva etdikdə və ya istifadəçiyə yalnız dominant dili deyil, seçim üçün bir neçə variant göstərmək lazım olduqda faydalıdır.

NaturalLanguage Azərbaycan dilini 100 simvoldan mətnlər üçün 95% dəqiqliklə müəyyən edir. Qısa mətnlər (1–2 söz) üçün dəqiqlik 60–70%-ə düşür — belə hallarda languageHypotheses istifadə edib top-3 variantı göstərmək daha yaxşıdır.

Nitq hissələrinin teqlənməsi və lemmatizasiya

NLTagScheme linqvistik analiz üçün teqləmə sxemləri təmin edir: nitq hissələri (isim, fel, sifət), lemmalar (sözün normal forması), varlıq növləri (şəxs, təşkilat, yer) və digər kateqoriyalar.

Lemmatizasiya sözü lüğət formasına gətirir: „qaçdı" → „qaçmaq", „yaxşı" → „yaxşı", „books" → „book". Bu, axtarış və mətn analizi üçün kritik əhəmiyyətlidir — lemmatizasiya olmadan „ev" və „evin" fərqli tokenlər sayılır ki, bu da NLP pipeline-lərinin keyfiyyətini aşağı salır.

swift
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")"
}

Nəticə nümunəsi: cats → Noun, were → Verb, quickly → Adverb. Lemmatizasiya və nitq hissələrini birləşdirərək „qaçan pişiklər" sorğusuna „qaçmaq pişik" ilə tapan ağıllı axtarış qurmaq olar.

NLTagScheme.lemma NaturalLanguage tərəfindən dəstəklənən bütün dillər, o cümlədən Azərbaycan dili üçün işləyir. Bu, NLTagger-i hər dil üçün ayrıca model yükləmədən çoxdilli tətbiqlər üçün universal alət edir.

NaturalLanguage-də Named Entity Recognition

Named Entity Recognition (NER) — mətndən adlandırılmış varlıqların: şəxs adlarının, təşkilat adlarının, coğrafi yerlərin və şəxsi məlumatların çıxarılması tapşırığıdır. NaturalLanguage NER-i NLTagScheme.nameType vasitəsilə dəstəkləyir.

NLTagScheme.nameType üç növ varlığı fərqləndirir: PersonalName (şəxs adları), OrganizationName (təşkilatlar, şirkətlər) və PlaceName (coğrafi adlar). Bu, xəbərlərdən, məktublardan və rəylərdən avtomatik olaraq strukturlaşdırılmış məlumatları çıxarmağa imkan verir.

swift
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)"
    }
}

Nəticə: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. NaturalLanguage-dən NER fərdi öyrənmə tələb etmir və ingilis, fransız, alman, ispan və digər dillər üçün qutudan çıxan kimi işləyir.

Azərbaycan dili üçün NER dəstəklənir, lakin dəqiqlik bir qədər aşağıdır — ingilis dili üçün 85%-ə qarşı təxminən 70–75%. Azərbaycan dili üçün yüksək dəqiqlik tələb olunarsa, Apple Create ML istifadə edərək öz məlumatlarınızda fərdi Core ML modeli öyrətməyi tövsiyə edir.

NLModel ilə sentiment analizi

NLModel — Core ML-nin öyrədilmiş NLP modelləri, o cümlədən Apple tərəfindən əvvəlcədən öyrədilmiş sentiment analizi modeli ilə işləmək üçün sinifdir. Model mətnin tonunu müəyyən edir: müsbət, mənfi və ya neytral.

Daxili sentiment analizi modeli App Store rəyləri üzərində öyrədilib və ingilis, fransız, alman, italyan, ispan, portuqal, çin və yapon dilləri üçün işləyir. Azərbaycan dili üçün model əvvəlcədən öyrədilməyib — Create ML və öz qeyd edilmiş məlumatlarınız tələb olunur.

swift
import NaturalLanguage

let sentimentPredictor = try NLModel(mlModel: SentimentModel().model)
let sentiment = sentimentPredictor.predictedLabel(for: "Bu tətbiq heyrətamizdir!")
print("Sentiment: \\(sentiment ?? "neutral")") // "positive"

NLModel həmçinin Create ML vasitəsilə öyrədilmiş fərdi modelləri dəstəkləyir. Öz məlumatlarınızda (məhsul kateqoriyaları, dəstək müraciət növləri, dil üslubları) mətn təsnifatı modeli öyrədib eyni NLModel interfeysi vasitəsilə istifadə edə bilərsiniz.

Apple Create ML documentation 2024-ə görə, fərdi mətn modeli 80–95% dəqiqliyə çatmaq üçün 500–5000 nümunə üzərində öyrədilir. NaturalLanguage modeli bir dəfə yükləyir və sonrakı çağırışlar üçün onu keşləyir, bu da təkrar sorğularda gecikməni minimuma endirir.

NLP tapşırığıNaturalLanguage sinfiAzərbaycan dəstəyi
TokenizasiyaNLTokenizerBəli
Dil tanımaNLLanguageRecognizerBəli
LemmatizasiyaNLTagger + .lemmaBəli
Nitq hissələriNLTagger + .lexicalClassBəli
NERNLTagger + .nameTypeMəhdud
SentimentNLModel (əvvəlcədən öyrəd.)Xeyr

Tez-tez verilən suallar

NaturalLanguage NLP üçün Core ML-dən nə ilə fərqlənir?

NaturalLanguage öyrənmə zərurəti olmadan hazır NLP modelləri təmin edir: tokenizasiya, dil tanıma, NER. Core ML öz məlumatlarınızda model öyrətməyi tələb edir və spesifik tapşırıqlar üçün daha çox elastiklik verir. NaturalLanguage əsas tapşırıqlar üçün „qutudan çıxan kimi" daha yaxşıdır, Core ML — dar ixtisaslaşmış tapşırıqlar üçün.

NaturalLanguage oflayn işləyir?

Bəli, NaturalLanguage tamamilə internet bağlantısı olmadan cihazda işləyir. Bütün modellər iOS və macOS-a daxildir, məlumatlar serverə göndərilmir. Bu, şəbəkə tələb edən və məxfilik riskləri yaradan bulud NLP xidmətləri qarşısında əsas üstünlükdür.

NaturalLanguage hansı dilləri dəstəkləyir?

NaturalLanguage 30-dan çox dili dəstəkləyir, o cümlədən Azərbaycan, ingilis, ispan, fransız, alman, italyan, portuqal, çin, yapon, koreya, ərəb, türk və ukrayna. Tokenizasiya və lemmatizasiyanın dəqiqliyi bütün dəstəklənən dillər üçün yüksəkdir, NER və sentiment — əsasən ingilis dili üçün.

NaturalLanguage üçün öz NLP modelimi necə öyrədə bilərəm?

Create ML istifadə edin — Apple-ın proqramlaşdırmadan maşın öyrənmə modellərini öyrətmək üçün tətbiqi. Qeyd edilmiş məlumat dəstini (CSV və ya JSON) yükləyin, mətn təsnifatı və ya teqləmə tapşırığını seçin, modeli öyrədin və Core ML formatında (.mlmodel) ixrac edin. Sonra koddakı NLModel(mlModel:) vasitəsilə modeli yükləyin.

NaturalLanguage bütün Apple cihazlarında işləyir?

NaturalLanguage iOS 12+, macOS 10.14+, watchOS 5+ və tvOS 12+-də mövcuddur. A12+ çipi və Neural Engine olan cihazlarda performans daha yüksəkdir — mətn emalı maşın öyrənməsinin aparat sürətləndirilməsi sayəsində 3–5 dəfə sürətlənir. Köhnə cihazlarda (A11 və daha əvvəl) freymvork işləyir, lakin daha yavaş.

Nəticə

  • NaturalLanguage — Apple-ın on-device NLP freymvorku, məlumatları buluda göndərmədən tokenizasiya, dil tanıma, lemmatizasiya, POS-teqləmə və NER üçün.
  • NLTokenizer mətni sözlərə, cümlələrə, paraqraflara və sənədlərə bölür, 30+ dilin xüsusiyyətlərini nəzərə alır.
  • NLLanguageRecognizer mətnin dominant dilini müəyyən edir və çoxdilli ssenarilər üçün ehtimallarla hipotezlər qaytarır.
  • NLTagger .lexicalClass və .lemma ilə nitq hissələrinin teqlənməsi və lemmatizasiya yerinə yetirir — sözləri lüğət formasına gətirərək axtarış və analizi yaxşılaşdırır.
  • Named Entity Recognition NLTagScheme.nameType vasitəsilə ingilis, fransız, alman və digər dillərdə mətndən adları, təşkilatları və yerləri çıxarır.
  • NLModel əvvəlcədən öyrədilmiş və fərdi Core ML modelləri üçün interfeys təmin edir, o cümlədən 7 dildə rəylər üçün daxili sentiment analizi modeli.
  • Azərbaycan dili üçün tokenizasiya, dil tanıma, lemmatizasiya və POS-teqləmə mövcuddur; NER və sentiment fərdi Core ML modeli vasitəsilə həyata keçirilməlidir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun