NLP / NaturalLanguage: framework voor tekstverwerking in iOS

Auteur: IT Sectr Gepubliceerd: 2026-07-19 Leestijd: 8 min

NaturalLanguage — is een framework van Apple voor natuurlijke taalverwerking op iOS- en macOS-apparaten, dat toegang biedt tot tokenisatie, taalherkenning, tagging van woordsoorten, lemmatisering en identificatie van benoemde entiteiten. Volgens Apple WWDC 2020 voert het framework alle analyse uit op het apparaat, zonder gegevens naar de server te sturen, wat de vertrouwelijkheid van gebruikersgegevens waarborgt. NaturalLanguage ondersteunt meer dan 30 talen en integreert met Core ML voor aangepaste NLP-modellen.

Belangrijkste punten

  • NaturalLanguage — on-device NLP-framework van Apple, werkend zonder gegevens naar de cloud te sturen.
  • Ondersteunt tokenisatie, taalherkenning, lemmatisering, tagging van woordsoorten en NER.
  • Werkt met 30+ talen, waaronder Nederlands, Engels, Chinees, Arabisch.
  • NLTokenizer splitst tekst in woorden, zinnen, alinea's en documenten.
  • NLLanguageRecognizer bepaalt de taal van de tekst met aanduiding van waarschijnlijkheid voor elke optie.

Wat is NaturalLanguage in iOS?

NaturalLanguage (NL) — is een machine learning-framework van Apple voor natuurlijke taalanalyse, onderdeel van Foundation en beschikbaar op iOS 12+, macOS 10.14+ en watchOS 5+. Het framework biedt kant-en-klare NLP-mogelijkheden zonder dat je eigen modellen hoeft te trainen.

In tegenstelling tot cloud-NLP-diensten (Google Cloud NLP, Amazon Comprehend), voert NaturalLanguage alle analyse uit op het apparaat. Dit betekent nul latentie voor netwerkverzoeken, werken in offline modus en volledige gegevensvertrouwelijkheid — de tekst verlaat het apparaat van de gebruiker niet.

Volgens Apple ML Research 2023 verwerkt on-device NLP op A12+-chips verzoeken 3–5 keer sneller dan vergelijkbare cloudoplossingen, met behoud van een nauwkeurigheid van meer dan 85% voor basistaken. Het framework is geoptimaliseerd voor Neural Engine, waardoor het tot 100 verzoeken per seconde kan verwerken op moderne apparaten.

NaturalLanguage wordt gebruikt in iOS-applicaties voor recensieanalyse, slim zoeken, automatisch aanvullen, inhoudsmoderatie en het extraheren van gestructureerde gegevens uit ongestructureerde tekst. Het framework ondersteunt meer dan 30 talen, waaronder Nederlands, Oekraïens, Turks en Arabisch.

Tokenisatie van tekst met NLTokenizer

NLTokenizer — is een klasse voor het opsplitsen van tekst in linguïstische eenheden: woorden, zinnen, alinea's of documenten. Tokenisatie is de eerste stap van vrijwel elke NLP-pipeline en NaturalLanguage biedt het kant-en-klaar.

NLTokenizer houdt rekening met taalspecifieke kenmerken: het verwerkt tokenisatie correct voor Japans (zonder spaties tussen woorden), Arabisch (rechts-naar-links schrift) en Chinees (hiërogliefenschrift). Voor Engels en Nederlands werkt de tokenizer op basis van spaties en interpunctie, maar met inachtneming van afkortingen.

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
}

Tokenisatie op zinsniveau is nuttig voor het opsplitsen van grote teksten in logische blokken voor verdere analyse. NLTokenizerSentence bepaalt zinsgrenzen, zelfs als er geen punt aan het einde staat of bij vragende zinnen.

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 — is de basis voor alle andere mogelijkheden van NaturalLanguage. Na tokenisatie is de tekst klaar voor taalherkenning, tagging en lemmatisering.

Taalherkenning met NLLanguageRecognizer

NLLanguageRecognizer bepaalt de taal van de tekst en retourneert de meest waarschijnlijke optie met vermelding van betrouwbaarheid. Het framework ondersteunt meer dan 30 talen en kan werken met tekst van elke lengte — van één woord tot een volledig document.

Het algoritme van NLLanguageRecognizer analyseert n-grammen van karakters en vergelijkt deze met taalprofielen. Voor korte teksten (tot 50 karakters) neemt de nauwkeurigheid af, daarom raadt Apple aan om minimaal 100–200 karakters te versturen voor een betrouwbare taalbepaling.

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

De methode languageHypotheses retourneert een woordenboek van talen met waarschijnlijkheden in aflopende volgorde. Dit is handig wanneer de tekst een mengeling van talen bevat of wanneer je de gebruiker meerdere opties ter selectie wilt tonen, niet alleen de dominante taal.

NaturalLanguage bepaalt Nederlands met een nauwkeurigheid van 95% voor teksten vanaf 100 karakters. Voor korte teksten (1–2 woorden) daalt de nauwkeurigheid naar 60–70% — in zulke gevallen kun je beter languageHypotheses gebruiken en de top-3 opties tonen.

Tagging van woordsoorten en lemmatisering

NLTagScheme biedt tagschema's voor linguïstische analyse: woordsoorten (zelfstandig naamwoord, werkwoord, bijvoeglijk naamwoord), lemma's (normale vorm van het woord), entiteitstypen (persoon, organisatie, plaats) en andere categorieën.

Lemmatisering herleidt een woord tot zijn woordenboekvorm: „rende" → „rennen", „beter" → „goed", „books" → „book". Dit is cruciaal voor zoeken en tekstanalyse — zonder lemmatisering worden „kat" en „katten" beschouwd als verschillende tokens, wat de kwaliteit van NLP-pipelines vermindert.

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

Voorbeelduitvoer: cats → Noun, were → Verb, quickly → Adverb. Door lemmatisering en woordsoorten te combineren, kun je slim zoeken bouwen dat „rennende katten" vindt op de query „rennen kat".

NLTagScheme.lemma werkt voor alle door NaturalLanguage ondersteunde talen, inclusief Nederlands. Dit maakt NLTagger een universeel hulpmiddel voor meertalige applicaties zonder aparte modellen voor elke taal te hoeven laden.

Named Entity Recognition in NaturalLanguage

Named Entity Recognition (NER) — is de taak om benoemde entiteiten uit tekst te extraheren: persoonsnamen, organisatienamen, geografische locaties en persoonlijke gegevens. NaturalLanguage ondersteunt NER via NLTagScheme.nameType.

NLTagScheme.nameType onderscheidt drie typen entiteiten: PersonalName (persoonsnamen), OrganizationName (organisaties, bedrijven) en PlaceName (geografische namen). Dit maakt het mogelijk om automatisch gestructureerde gegevens te extraheren uit nieuws, e-mails en recensies.

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

Resultaat: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. NER van NaturalLanguage vereist geen aangepaste training en werkt direct uit de doos voor Engels, Frans, Duits, Spaans en andere talen.

Voor Nederlands wordt NER ondersteund, maar de nauwkeurigheid is iets lager — ongeveer 70–75% versus 85% voor Engels. Als hoge nauwkeurigheid voor Nederlands vereist is, raadt Apple aan om een aangepast Core ML-model te trainen op eigen gegevens met Create ML.

Sentimentanalyse met NLModel

NLModel — is een klasse voor het werken met getrainde Core ML NLP-modellen, inclusief het ingebouwde sentimentanalysemodel dat door Apple is voorgetraind. Het model bepaalt de tonaliteit van de tekst: positief, negatief of neutraal.

Het ingebouwde sentimentanalysemodel is getraind op App Store-recensies en werkt voor Engels, Frans, Duits, Italiaans, Spaans, Portugees, Chinees en Japans. Voor Nederlands is het model niet voorgetraind — Create ML en eigen gelabelde gegevens zijn vereist.

swift
import NaturalLanguage

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

NLModel ondersteunt ook aangepaste modellen die via Create ML zijn getraind. Je kunt een tekstclassificatiemodel trainen op eigen gegevens (productcategorieën, typen ondersteuningsverzoeken, taalstijlen) en het gebruiken via dezelfde NLModel-interface.

Volgens Apple Create ML documentation 2024 wordt een aangepast tekstmodel getraind op 500–5000 voorbeelden om een nauwkeurigheid van 80–95% te bereiken. NaturalLanguage laadt het model eenmalig en cacht het voor volgende aanroepen, wat de latentie bij herhaalde verzoeken minimaliseert.

NLP-taakNaturalLanguage-klasseNederlandse ondersteuning
TokenisatieNLTokenizerJa
TaalherkenningNLLanguageRecognizerJa
LemmatiseringNLTagger + .lemmaJa
WoordsoortenNLTagger + .lexicalClassJa
NERNLTagger + .nameTypeBeperkt
SentimentNLModel (voorgetraind)Nee

Veelgestelde vragen

Hoe verschilt NaturalLanguage van Core ML voor NLP?

NaturalLanguage biedt kant-en-klare NLP-modellen zonder trainingsbehoefte: tokenisatie, taalherkenning, NER. Core ML vereist het trainen van een model op eigen gegevens en biedt meer flexibiliteit voor specifieke taken. NaturalLanguage is beter voor basistaken „uit de doos", Core ML — voor gespecialiseerde taken.

Werkt NaturalLanguage offline?

Ja, NaturalLanguage werkt volledig op het apparaat zonder internetverbinding. Alle modellen zijn ingebouwd in iOS en macOS, gegevens worden niet naar de server gestuurd. Dit is een belangrijk voordeel ten opzichte van cloud-NLP-diensten die netwerk vereisen en privacyrisico's creëren.

Welke talen ondersteunt NaturalLanguage?

NaturalLanguage ondersteunt meer dan 30 talen, waaronder Nederlands, Engels, Spaans, Frans, Duits, Italiaans, Portugees, Chinees, Japans, Koreaans, Arabisch, Turks en Oekraïens. De nauwkeurigheid van tokenisatie en lemmatisering is hoog voor alle ondersteunde talen, NER en sentiment — voornamelijk voor Engels.

Hoe train ik mijn eigen NLP-model voor NaturalLanguage?

Gebruik Create ML — de Apple-applicatie voor het trainen van machine learning-modellen zonder programmeren. Laad de gelabelde dataset (CSV of JSON), selecteer de tekstclassificatie- of taggingtaak, train het model en exporteer naar Core ML-formaat (.mlmodel). Laad het model vervolgens via NLModel(mlModel:) in de code.

Werkt NaturalLanguage op alle Apple-apparaten?

NaturalLanguage is beschikbaar op iOS 12+, macOS 10.14+, watchOS 5+ en tvOS 12+. Op apparaten met A12+-chip en Neural Engine is de prestatie hoger — tekstverwerking wordt 3–5 keer versneld dankzij hardwareversnelling van machine learning. Op oudere apparaten (A11 en eerder) werkt het framework, maar langzamer.

Samenvatting

  • NaturalLanguage — on-device NLP-framework van Apple voor tokenisatie, taalherkenning, lemmatisering, POS-tagging en NER zonder gegevens naar de cloud te sturen.
  • NLTokenizer splitst tekst in woorden, zinnen, alinea's en documenten, rekening houdend met kenmerken van 30+ talen, waaronder Japans en Arabisch.
  • NLLanguageRecognizer bepaalt de dominante taal van de tekst en retourneert hypothesen met waarschijnlijkheden voor meertalige scenario's.
  • NLTagger met .lexicalClass en .lemma voert tagging van woordsoorten en lemmatisering uit — woorden herleiden tot woordenboekvorm voor verbeterd zoeken en analyse.
  • Named Entity Recognition via NLTagScheme.nameType extraheert namen, organisaties en plaatsen uit tekst in Engels, Frans, Duits en andere talen.
  • NLModel biedt een interface voor voorgetrainde en aangepaste Core ML-modellen, inclusief het ingebouwde sentimentanalysemodel voor recensies in 7 talen.
  • Voor Nederlands zijn tokenisatie, taalherkenning, lemmatisering en POS-tagging beschikbaar; NER en sentiment kunnen beter worden gerealiseerd via een aangepast Core ML-model.

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook