NLP / NaturalLanguage : ce que c'est, le framework de traitement de texte sous iOS

Auteur : IT Sectr Publié le : 2026-07-19 Temps de lecture : 8 min

NaturalLanguage est un framework Apple pour le traitement du langage naturel sur les appareils iOS et macOS, offrant un accès à la tokenisation, la reconnaissance de la langue, l'étiquetage des parties du discours, la lemmatisation et la reconnaissance d'entités nommées. Selon l'Apple WWDC 2020, le framework effectue toute l'analyse sur l'appareil, sans envoyer de données vers un serveur, garantissant ainsi la confidentialité des données utilisateur. NaturalLanguage prend en charge plus de 30 langues et s'intègre à Core ML pour des modèles NLP personnalisés.

Points Clés

  • NaturalLanguage est un framework NLP sur appareil d'Apple qui fonctionne sans envoyer de données vers le cloud.
  • Prend en charge la tokenisation, la reconnaissance de la langue, la lemmatisation, l'étiquetage des parties du discours et la NER.
  • Fonctionne avec plus de 30 langues, dont le russe, l'anglais, le chinois et l'arabe.
  • NLTokenizer divise le texte en mots, phrases, paragraphes et documents.
  • NLLanguageRecognizer détermine la langue du texte avec une probabilité pour chaque option.

Qu'est-ce que NaturalLanguage sous iOS ?

NaturalLanguage (NL) est un framework d'apprentissage automatique d'Apple pour l'analyse du langage naturel, faisant partie de Foundation et disponible sur iOS 12+, macOS 10.14+ et watchOS 5+. Le framework fournit des capacités NLP prêtes à l'emploi sans nécessité d'entraîner des modèles personnalisés.

Contrairement aux services NLP cloud (Google Cloud NLP, Amazon Comprehend), NaturalLanguage effectue toute l'analyse sur l'appareil. Cela signifie une latence réseau nulle, un fonctionnement hors ligne et une confidentialité totale des données — le texte ne quitte jamais l'appareil de l'utilisateur.

Selon Apple ML Research 2023, le NLP sur appareil sur les puces A12+ traite les requêtes 3 à 5 fois plus rapidement que les solutions cloud similaires, tout en maintenant une précision supérieure à 85 % pour les tâches de base. Le framework est optimisé pour le Neural Engine, capable de traiter jusqu'à 100 requêtes par seconde sur les appareils modernes.

NaturalLanguage est utilisé dans les applications iOS pour l'analyse d'avis, la recherche intelligente, l'autocomplétion, la modération de contenu et l'extraction de données structurées à partir de texte non structuré. Le framework prend en charge plus de 30 langues, dont le russe, l'ukrainien, le turc et l'arabe.

Tokenisation de texte avec NLTokenizer

NLTokenizer est une classe permettant de diviser le texte en unités linguistiques : mots, phrases, paragraphes ou documents. La tokenisation est la première étape de presque tout pipeline NLP, et NaturalLanguage la fournit prête à l'emploi.

NLTokenizer prend en compte les caractéristiques spécifiques à la langue : il gère correctement la tokenisation pour le japonais (pas d'espaces entre les mots), l'arabe (écriture de droite à gauche) et le chinois (écriture logographique). Pour l'anglais et le russe, le tokeniseur fonctionne par espaces et ponctuation, mais tient compte des contractions (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
}

La tokenisation au niveau des phrases est utile pour diviser les grands textes en blocs logiques avant une analyse ultérieure. NLTokenizer déterminera les limites des phrases même lorsqu'il n'y a pas de point à la fin ou lorsqu'il y a des phrases interrogatives.

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 est la base de toutes les autres capacités de NaturalLanguage. Après la tokenisation, le texte est prêt pour la reconnaissance de la langue, l'étiquetage et la lemmatisation.

Reconnaissance de la langue avec NLLanguageRecognizer

NLLanguageRecognizer détermine la langue du texte et renvoie l'option la plus probable avec un score de confiance. Le framework prend en charge plus de 30 langues et peut fonctionner avec du texte de n'importe quelle longueur — d'un seul mot à un document entier.

L'algorithme de NLLanguageRecognizer analyse les n-grammes de caractères et les compare aux profils linguistiques. Pour les textes courts (jusqu'à 50 caractères), la précision diminue, c'est pourquoi Apple recommande de soumettre au moins 100 à 200 caractères pour une identification fiable de la langue.

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

La méthode languageHypotheses renvoie un dictionnaire des langues avec des probabilités par ordre décroissant. Ceci est utile lorsque le texte contient un mélange de langues ou lorsque vous devez montrer à l'utilisateur plusieurs options parmi lesquelles choisir, plutôt que seulement la langue dominante.

NaturalLanguage identifie le russe avec une précision de 95 % pour les textes de 100 caractères ou plus. Pour les textes courts (1 à 2 mots), la précision tombe à 60–70 % — dans ces cas, il est préférable d'utiliser languageHypotheses et d'afficher les 3 options principales.

Étiquetage des parties du discours et lemmatisation

NLTagScheme fournit des schémas d'étiquetage pour l'analyse linguistique : parties du discours (nom, verbe, adjectif), lemmes (forme de base d'un mot), types d'entités (personne, organisation, lieu) et autres catégories.

La lemmatisation réduit un mot à sa forme dictionnaire : « courait » → « courir », « mieux » → « bon », « books » → « book ». C'est d'une importance critique pour la recherche et l'analyse de texte — sans lemmatisation, « chat » et « chats » sont traités comme des jetons différents, réduisant la qualité des pipelines NLP.

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

Exemple de sortie : cats → Nom, were → Verbe, quickly → Adverbe. En combinant lemmatisation et parties du discours, vous pouvez construire une recherche intelligente qui trouve « chats qui courent » à partir d'une requête « courir chat ».

NLTagScheme.lemma fonctionne pour toutes les langues prises en charge par NaturalLanguage, y compris le russe. Cela fait de NLTagger un outil polyvalent pour les applications multilingues sans avoir à charger des modèles séparés pour chaque langue.

Reconnaissance d'entités nommées dans NaturalLanguage

La reconnaissance d'entités nommées (NER) est la tâche d'extraction d'entités nommées à partir du texte : noms de personnes, noms d'organisations, lieux géographiques et données personnelles. NaturalLanguage prend en charge la NER via NLTagScheme.nameType.

NLTagScheme.nameType distingue trois types d'entités : PersonalName, OrganizationName et PlaceName. Cela permet l'extraction automatique de données structurées à partir d'actualités, d'e-mails et d'avis.

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

Résultat : Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. La NER de NaturalLanguage ne nécessite pas d'entraînement personnalisé et fonctionne immédiatement pour l'anglais, le français, l'allemand, l'espagnol et d'autres langues.

Pour le russe, la NER est prise en charge mais la précision est un peu inférieure — environ 70–75 % contre 85 % pour l'anglais. Si une haute précision est nécessaire pour le russe, Apple recommande d'entraîner un modèle Core ML personnalisé sur vos propres données en utilisant Create ML.

Analyse de sentiment avec NLModel

NLModel est une classe pour travailler avec des modèles Core ML NLP entraînés, y compris le modèle d'analyse de sentiment intégré pré-entraîné par Apple. Le modèle détermine le sentiment du texte : positif, négatif ou neutre.

Le modèle intégré d'analyse de sentiment est entraîné sur les avis de l'App Store et fonctionne pour l'anglais, le français, l'allemand, l'italien, l'espagnol, le portugais, le chinois et le japonais. Pour le russe, le modèle n'est pas pré-entraîné — vous avez besoin de Create ML et de vos propres données étiquetées.

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 prend également en charge les modèles personnalisés entraînés via Create ML. Vous pouvez entraîner un modèle de classification de texte sur vos propres données (catégories de produits, types de tickets de support, styles de langage) et l'utiliser via la même interface NLModel.

Selon la documentation Apple Create ML 2024, un modèle de texte personnalisé s'entraîne sur 500 à 5 000 exemples pour atteindre une précision de 80 à 95 %. NaturalLanguage charge le modèle une fois et le met en cache pour les appels ultérieurs, minimisant ainsi la latence pour les requêtes répétées.

Tâche NLPClasse NaturalLanguageSupport Russe
TokenisationNLTokenizerOui
Reconnaissance de langueNLLanguageRecognizerOui
LemmatisationNLTagger + .lemmaOui
Parties du discoursNLTagger + .lexicalClassOui
NERNLTagger + .nameTypeLimité
SentimentNLModel (pré-entraîné)Non

Questions Fréquentes

En quoi NaturalLanguage diffère-t-il de Core ML pour le NLP ?

NaturalLanguage fournit des modèles NLP prêts à l'emploi sans besoin d'entraînement : tokenisation, reconnaissance de la langue, NER. Core ML nécessite d'entraîner un modèle sur vos propres données et offre plus de flexibilité pour des tâches spécifiques. NaturalLanguage est meilleur pour les tâches de base prêtes à l'emploi, tandis que Core ML est destiné aux tâches hautement spécialisées.

NaturalLanguage fonctionne-t-il hors ligne ?

Oui, NaturalLanguage fonctionne entièrement sur l'appareil sans connexion Internet. Tous les modèles sont intégrés dans iOS et macOS, et les données ne sont pas envoyées vers un serveur. C'est un avantage clé par rapport aux services NLP cloud qui nécessitent un accès réseau et créent des risques pour la confidentialité.

Quelles langues NaturalLanguage prend-il en charge ?

NaturalLanguage prend en charge plus de 30 langues, dont le russe, l'anglais, l'espagnol, le français, l'allemand, l'italien, le portugais, le chinois, le japonais, le coréen, l'arabe, le turc et l'ukrainien. La précision de la tokenisation et de la lemmatisation est élevée pour toutes les langues prises en charge, tandis que la NER et l'analyse de sentiment sont principalement pour l'anglais.

Comment entraîner mon propre modèle NLP pour NaturalLanguage ?

Utilisez Create ML — l'application d'Apple pour entraîner des modèles d'apprentissage automatique sans programmation. Téléchargez un ensemble de données étiqueté (CSV ou JSON), choisissez une tâche de classification de texte ou d'étiquetage, entraînez le modèle et exportez-le au format Core ML (.mlmodel). Chargez ensuite le modèle via NLModel(mlModel:) dans le code.

NaturalLanguage fonctionne-t-il sur tous les appareils Apple ?

NaturalLanguage est disponible sur iOS 12+, macOS 10.14+, watchOS 5+ et tvOS 12+. Sur les appareils équipés de la puce A12+ et du Neural Engine, les performances sont supérieures — le traitement du texte est accéléré de 3 à 5 fois grâce à l'apprentissage automatique accéléré par le matériel. Sur les appareils plus anciens (A11 et antérieurs), le framework fonctionne mais est plus lent.

Résumé

  • NaturalLanguage est le framework NLP sur appareil d'Apple pour la tokenisation, la reconnaissance de la langue, la lemmatisation, l'étiquetage POS et la NER sans envoyer de données vers le cloud.
  • NLTokenizer divise le texte en mots, phrases, paragraphes et documents en tenant compte des spécificités de plus de 30 langues, dont le japonais et l'arabe.
  • NLLanguageRecognizer détermine la langue dominante du texte et renvoie des hypothèses avec probabilités pour les scénarios multilingues.
  • NLTagger avec .lexicalClass et .lemma effectue l'étiquetage des parties du discours et la lemmatisation — réduisant les mots à leur forme dictionnaire pour améliorer la recherche et l'analyse.
  • Reconnaissance d'entités nommées via NLTagScheme.nameType extrait les noms, organisations et lieux du texte en anglais, français, allemand et d'autres langues.
  • NLModel fournit une interface pour les modèles Core ML pré-entraînés et personnalisés, y compris un modèle d'analyse de sentiment intégré pour les avis en 7 langues.
  • Pour le russe, la tokenisation, la reconnaissance de la langue, la lemmatisation et l'étiquetage POS sont disponibles ; la NER et l'analyse de sentiment sont mieux implémentées via un modèle Core ML personnalisé.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi