NLP / NaturalLanguage: nedir, iOS'te metin işleme framework'ü

Yazar: IT Sectr Yayınlanma: 2026-07-19 Okuma süresi: 8 dk

NaturalLanguage, iOS ve macOS cihazlarında doğal dil işleme için Apple'ın bir framework'üdür ve tokenization, dil tanıma, konuşma bölümü etiketleme, lemmatization ve adlandırılmış varlık tanımaya erişim sağlar. Apple WWDC 2020'ye göre, framework tüm analizi cihaz üzerinde gerçekleştirir, verileri sunucuya göndermeden, kullanıcı verilerinin gizliliğini sağlar. NaturalLanguage 30'dan fazla dili destekler ve özel NLP modelleri için Core ML ile entegre olur.

Önemli Noktalar

  • NaturalLanguage, verileri buluta göndermeden çalışan Apple'ın cihaz üzeri NLP framework'üdür.
  • Tokenization, dil tanıma, lemmatization, konuşma bölümü etiketleme ve NER'yi destekler.
  • Rusça, İngilizce, Çince ve Arapça dahil 30'dan fazla dil ile çalışır.
  • NLTokenizer metni kelimelere, cümlelere, paragraflara ve belgelere ayırır.
  • NLLanguageRecognizer her seçenek için olasılıkla metnin dilini belirler.

iOS'te NaturalLanguage nedir?

NaturalLanguage (NL), doğal dil analizi için Apple'ın bir makine öğrenimi framework'üdür, Foundation'ın bir parçasıdır ve iOS 12+, macOS 10.14+ ve watchOS 5+'te kullanılabilir. Framework, özel modeller eğitme ihtiyacı olmadan kullanıma hazır NLP yetenekleri sağlar.

Bulut NLP hizmetlerinin (Google Cloud NLP, Amazon Comprehend) aksine, NaturalLanguage tüm analizi cihaz üzerinde gerçekleştirir. Bu, sıfır ağ gecikmesi, çevrimdışı çalışma ve tam veri gizliliği anlamına gelir — metin kullanıcının cihazından asla ayrılmaz.

Apple ML Research 2023'e göre, A12+ yongalarında cihaz üzeri NLP, temel görevler için %85'in üzerinde doğruluk sağlarken benzer bulut çözümlerinden 3–5 kat daha hızlı istek işler. Framework, modern cihazlarda saniyede 100 isteğe kadar işleyebilen Neural Engine için optimize edilmiştir.

NaturalLanguage, iOS uygulamalarında inceleme analizi, akıllı arama, otomatik tamamlama, içerik denetleme ve yapılandırılmamış metinden yapılandırılmış veri çıkarma için kullanılır. Framework, Rusça, Ukraynaca, Türkçe ve Arapça dahil 30'dan fazla dili destekler.

NLTokenizer ile Metin Tokenization

NLTokenizer, metni dilsel birimlere (kelimeler, cümleler, paragraflar veya belgeler) ayırmak için bir sınıftır. Tokenization, neredeyse her NLP hattının ilk adımıdır ve NaturalLanguage bunu kullanıma hazır sağlar.

NLTokenizer, dile özgü özellikleri dikkate alır: Japonca (kelimeler arasında boşluk yok), Arapça (sağdan sola yazı) ve Çince (logografik yazı) için tokenization'ı doğru şekilde işler. İngilizce ve Rusça için tokenizer, boşluklar ve noktalama işaretleriyle çalışır ancak kısaltmaları dikkate alır (don't → do + n't).

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ümle düzeyinde tokenization, daha ileri analizden önce büyük metinleri mantıksal bloklara ayırmak için kullanışlıdır. NLTokenizer, sonunda nokta olmasa veya soru cümleleri mevcut olsa bile cümle sınırlarını belirleyecektir.

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 diğer tüm yeteneklerinin temelidir. Tokenization'dan sonra metin, dil tanıma, etiketleme ve lemmatization için hazırdır.

NLLanguageRecognizer ile Dil Tanıma

NLLanguageRecognizer, metnin dilini belirler ve bir güven skoruyla en olası seçeneği döndürür. Framework, 30'dan fazla dili destekler ve tek bir kelimeden tüm bir belgeye kadar her uzunluktaki metinle çalışabilir.

NLLanguageRecognizer algoritması, karakter n-gramlarını analiz eder ve bunları dil profilleriyle karşılaştırır. Kısa metinler için (50 karaktere kadar), doğruluk azalır, bu nedenle Apple, güvenilir dil tanımlaması için en az 100–200 karakter gönderilmesini önerir.

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 yöntemi, azalan sırada olasılıklarla bir dil sözlüğü döndürür. Bu, metin bir dil karışımı içerdiğinde veya kullanıcıya yalnızca baskın dil yerine seçim yapabileceği birden çok seçenek göstermeniz gerektiğinde kullanışlıdır.

NaturalLanguage, 100 karakter veya daha fazla metin için Rusçayı %95 doğrulukla tanımlar. Kısa metinler (1–2 kelime) için doğruluk %60–70'e düşer — bu gibi durumlarda, languageHypotheses kullanmak ve ilk 3 seçeneği göstermek daha iyidir.

Konuşma Bölümü Etiketleme ve Lemmatization

NLTagScheme, dilsel analiz için etiketleme şemaları sağlar: konuşma bölümleri (isim, fiil, sıfat), lemler (bir kelimenin temel biçimi), varlık türleri (kişi, kuruluş, yer) ve diğer kategoriler.

Lemmatization, bir kelimeyi sözlük biçimine indirger: koştu → koşmak, daha iyi → iyi, books → book. Bu, arama ve metin analizi için kritik öneme sahiptir — lemmatization olmadan, kedi ve kediler farklı tokenler olarak ele alınır ve bu da NLP hatlarının kalitesini düşürü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")"
}

Örnek çıktı: cats → İsim, were → Fiil, quickly → Zarf. Lemmatization ve konuşma bölümlerini birleştirerek, koşan kediler sorgusundan koş kedi bulan akıllı bir arama oluşturabilirsiniz.

NLTagScheme.lemma, Rusça dahil NaturalLanguage tarafından desteklenen tüm dillerde çalışır. Bu, NLTagger'ı her dil için ayrı modeller yükleme gereği olmadan çok dilli uygulamalar için çok yönlü bir araç haline getirir.

NaturalLanguage'de Adlandırılmış Varlık Tanıma

Adlandırılmış Varlık Tanıma (NER), metinden adlandırılmış varlıkları (kişi adları, kuruluş adları, coğrafi konumlar ve kişisel veriler) çıkarma görevidir. NaturalLanguage, NLTagScheme.nameType aracılığıyla NER'yi destekler.

NLTagScheme.nameType üç tür varlığı ayırt eder: PersonalName, OrganizationName ve PlaceName. Bu, haberlerden, e-postalardan ve incelemelerden yapılandırılmış verilerin otomatik olarak çıkarılmasını sağlar.

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

Sonuç: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. NaturalLanguage NER, özel eğitim gerektirmez ve İngilizce, Fransızca, Almanca, İspanyolca ve diğer diller için hemen çalışır.

Rusça için NER desteklenir ancak doğruluk biraz daha düşüktür — İngilizce için %85'e kıyasla yaklaşık %70–75. Rusça için yüksek doğruluk gerekiyorsa, Apple Create ML kullanarak kendi verilerinizle özel bir Core ML modeli eğitmenizi önerir.

NLModel ile Duygu Analizi

NLModel, Apple tarafından önceden eğitilmiş yerleşik duygu analizi modeli dahil olmak üzere eğitilmiş Core ML NLP modelleriyle çalışmak için bir sınıftır. Model, metnin duygusunu belirler: olumlu, olumsuz veya nötr.

Yerleşik duygu analizi modeli, App Store incelemeleri üzerinde eğitilmiştir ve İngilizce, Fransızca, Almanca, İtalyanca, İspanyolca, Portekizce, Çince ve Japonca için çalışır. Rusça için model önceden eğitilmemiştir — Create ML ve kendi etiketlenmiş verilerinize ihtiyacınız vardır.

swift
import NaturalLanguage

let sentimentPredictor = try NLModel(mlModel: SentimentModel().model)
let sentiment = sentimentPredictor.predictedLabel(for: "This app is amazing!")
print("Sentiment: \\(sentiment ?? "neutral")") // "positive"

NLModel ayrıca Create ML aracılığıyla eğitilmiş özel modelleri de destekler. Kendi verilerinizle (ürün kategorileri, destek bileti türleri, dil stilleri) bir metin sınıflandırma modeli eğitebilir ve aynı NLModel arayüzü üzerinden kullanabilirsiniz.

Apple Create ML belgeleri 2024'e göre, özel bir metin modeli %80–95 doğruluk elde etmek için 500–5000 örnek üzerinde eğitilir. NaturalLanguage, modeli bir kez yükler ve sonraki çağrılar için önbelleğe alarak tekrarlanan isteklerde gecikmeyi en aza indirir.

NLP GöreviNaturalLanguage SınıfıRusça Desteği
TokenizationNLTokenizerEvet
Dil TanımaNLLanguageRecognizerEvet
LemmatizationNLTagger + .lemmaEvet
Konuşma BölümüNLTagger + .lexicalClassEvet
NERNLTagger + .nameTypeSınırlı
DuyguNLModel (önceden eğitilmiş)Hayır

Sıkça Sorulan Sorular

NaturalLanguage, NLP için Core ML'den nasıl farklıdır?

NaturalLanguage, eğitim gerektirmeden kullanıma hazır NLP modelleri sağlar: tokenization, dil tanıma, NER. Core ML, kendi verilerinizle bir model eğitmenizi gerektirir ve belirli görevler için daha fazla esneklik sunar. NaturalLanguage temel kullanıma hazır görevler için daha iyidir, Core ML ise yüksek düzeyde uzmanlaşmış görevler içindir.

NaturalLanguage çevrimdışı çalışır mı?

Evet, NaturalLanguage internet bağlantısı olmadan tamamen cihaz üzerinde çalışır. Tüm modeller iOS ve macOS'e yerleşiktir ve veriler bir sunucuya gönderilmez. Bu, ağ erişimi gerektiren ve gizlilik riskleri oluşturan bulut NLP hizmetlerine göre önemli bir avantajdır.

NaturalLanguage hangi dilleri destekler?

NaturalLanguage, Rusça, İngilizce, İspanyolca, Fransızca, Almanca, İtalyanca, Portekizce, Çince, Japonca, Korece, Arapça, Türkçe ve Ukraynaca dahil 30'dan fazla dili destekler. Tokenization ve lemmatization doğruluğu desteklenen tüm dillerde yüksektir, NER ve duygu analizi ise esas olarak İngilizce içindir.

NaturalLanguage için kendi NLP modelimi nasıl eğitebilirim?

Create ML'yi kullanın — programlama olmadan makine öğrenimi modelleri eğitmek için Apple'ın uygulaması. Etiketlenmiş bir veri kümesi (CSV veya JSON) yükleyin, bir metin sınıflandırma veya etiketleme görevi seçin, modeli eğitin ve Core ML formatına (.mlmodel) aktarın. Ardından koddaki NLModel(mlModel:) aracılığıyla modeli yükleyin.

NaturalLanguage tüm Apple cihazlarında çalışır mı?

NaturalLanguage, iOS 12+, macOS 10.14+, watchOS 5+ ve tvOS 12+'te kullanılabilir. A12+ yongası ve Neural Engine'li cihazlarda, donanım hızlandırmalı makine öğrenimi sayesinde metin işleme 3–5 kat hızlanır. Eski cihazlarda (A11 ve öncesi), framework çalışır ancak daha yavaştır.

Özet

  • NaturalLanguage, verileri buluta göndermeden tokenization, dil tanıma, lemmatization, POS etiketleme ve NER için Apple'ın cihaz üzeri NLP framework'üdür.
  • NLTokenizer, Japonca ve Arapça dahil 30'dan fazla dilin özelliklerini dikkate alarak metni kelimelere, cümlelere, paragraflara ve belgelere ayırır.
  • NLLanguageRecognizer, metnin baskın dilini belirler ve çok dilli senaryolar için olasılıklarla hipotezler döndürür.
  • NLTagger, .lexicalClass ve .lemma ile konuşma bölümü etiketleme ve lemmatization yapar — arama ve analizi iyileştirmek için kelimeleri sözlük biçimlerine indirger.
  • Adlandırılmış Varlık Tanıma, NLTagScheme.nameType aracılığıyla İngilizce, Fransızca, Almanca ve diğer dillerdeki metinden adları, kuruluşları ve yerleri çıkarır.
  • NLModel, 7 dildeki incelemeler için yerleşik bir duygu analizi modeli dahil önceden eğitilmiş ve özel Core ML modelleri için bir arayüz sağlar.
  • Rusça için tokenization, dil tanıma, lemmatization ve POS etiketleme mevcuttur; NER ve duygu analizi özel bir Core ML modeli aracılığıyla daha iyi uygulanır.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun