NLP / NaturalLanguage: szövegfeldolgozó keretrendszer iOS-ben

Szerző: IT Sectr Megjelenés: 2026-07-19 Olvasási idő: 8 perc

NaturalLanguage — egy Apple keretrendszer a természetes nyelv feldolgozására iOS és macOS eszközökön, amely hozzáférést biztosít tokenizációhoz, nyelvfelismeréshez, szófajok címkézéséhez, lemmatizáláshoz és elnevezett entitások azonosításához. Az Apple WWDC 2020 szerint a keretrendszer minden elemzést az eszközön végez, adatok szerverre küldése nélkül, biztosítva a felhasználói adatok bizalmas kezelését. A NaturalLanguage több mint 30 nyelvet támogat és integrálható a Core ML-lel egyedi NLP modellekhez.

Főbb pontok

  • NaturalLanguage — on-device NLP keretrendszer az Apple-től, amely adatok felhőbe küldése nélkül működik.
  • Támogatja a tokenizációt, nyelvfelismerést, lemmatizálást, szófajok címkézését és NER-t.
  • 30+ nyelvvel működik, beleértve a magyart, angolt, kínait, arabot.
  • NLTokenizer szavakra, mondatokra, bekezdésekre és dokumentumokra bontja a szöveget.
  • NLLanguageRecognizer meghatározza a szöveg nyelvét a valószínűség feltüntetésével minden opcióhoz.

Mi az NaturalLanguage iOS-ben?

NaturalLanguage (NL) — egy Apple gépi tanulási keretrendszer természetes nyelv elemzéséhez, a Foundation része és iOS 12+, macOS 10.14+ és watchOS 5+ rendszereken érhető el. A keretrendszer kész NLP képességeket kínál anélkül, hogy saját modelleket kellene tanítani.

Ellentétben a felhőalapú NLP szolgáltatásokkal (Google Cloud NLP, Amazon Comprehend), a NaturalLanguage minden elemzést az eszközön végez. Ez nulla késleltetést jelent a hálózati kéréseknél, offline módban működést és teljes adatbizalmasságot — a szöveg nem hagyja el a felhasználó eszközét.

Az Apple ML Research 2023 szerint az on-device NLP A12+ chipeken 3–5-ször gyorsabban dolgozza fel a kéréseket, mint a hasonló felhőmegoldások, több mint 85%-os pontossággal az alapvető feladatokhoz. A keretrendszer a Neural Engine-re optimalizált, lehetővé téve akár 100 kérés másodpercenkénti feldolgozását modern eszközökön.

A NaturalLanguage-t iOS alkalmazásokban használják vélemények elemzésére, intelligens keresésre, automatikus kiegészítésre, tartalommoderációra és strukturált adatok kinyerésére strukturálatlan szövegből. A keretrendszer több mint 30 nyelvet támogat, beleértve a magyart, ukránt, törököt és arabot.

Szöveg tokenizációja NLTokenizer-rel

NLTokenizer — egy osztály a szöveg nyelvi egységekre bontásához: szavakra, mondatokra, bekezdésekre vagy dokumentumokra. A tokenizáció az első lépés szinte minden NLP pipeline-ban, és a NaturalLanguage kész formában kínálja.

Az NLTokenizer figyelembe veszi a nyelv sajátosságait: helyesen kezeli a tokenizációt japán (szóközök nélküli), arab (jobbról balra írás) és kínai (hieroglif írás) nyelvekhez. Angol és magyar nyelvekhez a tokenizáló szóközök és írásjelek alapján működik, de figyelembe véve a rövidítéseket.

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
}

A tokenizáció mondat szinten hasznos nagy szövegek logikai blokkokra bontásához a további elemzés előtt. Az NLTokenizerSentence meghatározza a mondathatárokat akkor is, ha nincs pont a végén vagy kérdő mondatok esetén.

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 — az alapja a NaturalLanguage összes többi képességének. Tokenizáció után a szöveg készen áll a nyelvfelismerésre, címkézésre és lemmatizálásra.

Nyelvfelismerés NLLanguageRecognizer-rel

NLLanguageRecognizer meghatározza a szöveg nyelvét és visszaadja a legvalószínűbb opciót a bizonyosság mértékével. A keretrendszer több mint 30 nyelvet támogat és bármilyen hosszúságú szöveggel dolgozhat — egyetlen szótól egy teljes dokumentumig.

Az NLLanguageRecognizer algoritmusa karakter n-grammokat elemez és összehasonlítja azokat nyelvi profilokkal. Rövid szövegekhez (50 karakterig) a pontosság csökken, ezért az Apple legalább 100–200 karakter küldését javasolja a megbízható nyelvmeghatározáshoz.

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

A languageHypotheses metódus visszaadja a nyelvek szótárát valószínűségekkel csökkenő sorrendben. Ez akkor hasznos, ha a szöveg nyelvek keverékét tartalmazza, vagy ha több opciót kell megjeleníteni a felhasználónak választásra, nem csak a domináns nyelvet.

A NaturalLanguage magyar nyelvet 95%-os pontossággal határozza meg 100 karaktertől kezdődő szövegekhez. Rövid szövegekhez (1–2 szó) a pontosság 60–70%-ra csökken — ilyen esetekben jobb a languageHypotheses használata és a top-3 opció megjelenítése.

Szófajok címkézése és lemmatizálás

NLTagScheme címkézési sémákat biztosít nyelvi elemzéshez: szófajok (főnév, ige, melléknév), lemmák (a szó normál alakja), entitástípusok (személy, szervezet, hely) és más kategóriák.

Lemmatizálás a szót szótári alakjára hozza: „futott" → „fut", „jobb" → „jó", „books" → „book". Ez kritikus fontosságú a kereséshez és szövegelemzéshez — lemmatizálás nélkül a „macska" és „macskát" különböző tokeneknek számítanak, ami csökkenti az NLP pipeline-ok minőségét.

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

Példa kimenetre: cats → Noun, were → Verb, quickly → Adverb. A lemmatizálás és a szófajok kombinálásával intelligens keresés építhető, amely megtalálja a „futó macskákat" a „fut macska" keresőkérdésre.

NLTagScheme.lemma a NaturalLanguage által támogatott összes nyelvhez működik, beleértve a magyart is. Ez teszi az NLTagger-t univerzális eszközzé többnyelvű alkalmazásokhoz anélkül, hogy külön modelleket kellene betölteni minden nyelvhez.

Named Entity Recognition a NaturalLanguage-ben

Named Entity Recognition (NER) — a feladat elnevezett entitások kinyerése a szövegből: személynevek, szervezetnevek, földrajzi helyek és személyes adatok. A NaturalLanguage támogatja a NER-t az NLTagScheme.nameType-on keresztül.

NLTagScheme.nameType három entitástípust különböztet meg: PersonalName (személynevek), OrganizationName (szervezetek, vállalatok) és PlaceName (földrajzi nevek). Ez lehetővé teszi strukturált adatok automatikus kinyerését hírekből, e-mailekből és véleményekből.

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

Eredmény: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. A NaturalLanguage NER-je nem igényel egyedi tanítást és azonnal működik angol, francia, német, spanyol és más nyelvekhez.

Magyar nyelvhez a NER támogatott, de a pontosság valamivel alacsonyabb — körülbelül 70–75% az angol 85%-ával szemben. Ha magas pontosság szükséges magyarhoz, az Apple egyedi Core ML modell tanítását javasolja saját adatokon a Create ML használatával.

Szentiementelemzés NLModel-lel

NLModel — egy osztály a betanított Core ML NLP modellekkel való munkához, beleértve a beépített szentiementelemző modellt, amelyet az Apple előre betanított. A modell meghatározza a szöveg tonalitását: pozitív, negatív vagy semleges.

A beépített szentiementelemző modell App Store véleményeken lett betanítva és angol, francia, német, olasz, spanyol, portugál, kínai és japán nyelvekhez működik. Magyar nyelvhez a modell nincs előre betanítva — Create ML és saját címkézett adatok szükségesek.

swift
import NaturalLanguage

let sentimentPredictor = try NLModel(mlModel: SentimentModel().model)
let sentiment = sentimentPredictor.predictedLabel(for: "Ez az alkalmazás lenyűgöző!")
print("Sentiment: \\(sentiment ?? "neutral")") // "positive"

NLModel támogatja a Create ML-en keresztül betanított egyedi modelleket is. Betaníthat egy szöveg osztályozó modellt saját adatain (termékkategóriák, támogatási kérések típusai, nyelvi stílusok) és használhatja ugyanazon NLModel interfészen keresztül.

Az Apple Create ML documentation 2024 szerint egy egyedi szövegmodell 500–5000 példán tanul 80–95%-os pontosság eléréséhez. A NaturalLanguage egyszer tölti be a modellt és gyorsítótárazza a későbbi hívásokhoz, minimalizálva a késleltetést ismételt kéréseknél.

NLP feladatNaturalLanguage osztályMagyar támogatás
TokenizációNLTokenizerIgen
NyelvfelismerésNLLanguageRecognizerIgen
LemmatizálásNLTagger + .lemmaIgen
SzófajokNLTagger + .lexicalClassIgen
NERNLTagger + .nameTypeKorlátozott
SzentiementNLModel (előre betanított)Nem

Gyakran Ismételt Kérdések

Miben különbözik a NaturalLanguage a Core ML-től NLP-hez?

NaturalLanguage kész NLP modelleket kínál tanítás nélkül: tokenizáció, nyelvfelismerés, NER. A Core ML modell tanítását igényli saját adatokon és nagyobb rugalmasságot ad specifikus feladatokhoz. A NaturalLanguage jobb alapvető „dobozból kész" feladatokhoz, a Core ML — specializált feladatokhoz.

Működik a NaturalLanguage offline?

Igen, a NaturalLanguage teljes mértékben az eszközön működik internetkapcsolat nélkül. Minden modell be van építve az iOS-be és macOS-be, az adatok nem kerülnek elküldésre a szerverre. Ez kulcsfontosságú előny a felhőalapú NLP szolgáltatásokkal szemben, amelyek hálózatot igényelnek és adatvédelmi kockázatokat jelentenek.

Milyen nyelveket támogat a NaturalLanguage?

NaturalLanguage több mint 30 nyelvet támogat, beleértve a magyart, angolt, spanyolt, franciát, németet, olaszt, portugált, kínait, japánt, koreait, arabot, törököt és ukránt. A tokenizáció és lemmatizálás pontossága magas minden támogatott nyelvhez, a NER és szentiement főleg angolhoz.

Hogyan taníthatok saját NLP modellt a NaturalLanguage-hez?

Használja a Create ML-t — az Apple alkalmazását gépi tanulási modellek tanításához programozás nélkül. Töltse be a címkézett adatkészletet (CSV vagy JSON), válassza ki a szöveg osztályozási vagy címkézési feladatot, tanítsa be a modellt és exportálja Core ML formátumba (.mlmodel). Ezután töltse be a modellt az NLModel(mlModel:) segítségével a kódban.

Működik a NaturalLanguage minden Apple eszközön?

NaturalLanguage elérhető iOS 12+, macOS 10.14+, watchOS 5+ és tvOS 12+ rendszereken. Az A12+ chippel és Neural Engine-nel rendelkező eszközökön a teljesítmény magasabb — a szövegfeldolgozás 3–5-ször gyorsabb a gépi tanulás hardveres gyorsításának köszönhetően. Régebbi eszközökön (A11 és korábbi) a keretrendszer működik, de lassabban.

Összefoglaló

  • NaturalLanguage — on-device NLP keretrendszer az Apple-től tokenizációhoz, nyelvfelismeréshez, lemmatizáláshoz, POS-címkézéshez és NER-hez adatok felhőbe küldése nélkül.
  • NLTokenizer szavakra, mondatokra, bekezdésekre és dokumentumokra bontja a szöveget, figyelembe véve 30+ nyelv sajátosságait, beleértve a japánt és arabot.
  • NLLanguageRecognizer meghatározza a szöveg domináns nyelvét és hipotéziseket ad vissza valószínűségekkel többnyelvű forgatókönyvekhez.
  • NLTagger a .lexicalClass és .lemma segítségével szófajok címkézését és lemmatizálást végez — szavak szótári alakra hozását a keresés és elemzés javításához.
  • Named Entity Recognition az NLTagScheme.nameType-on keresztül neveket, szervezeteket és helyeket nyer ki szövegből angol, francia, német és más nyelveken.
  • NLModel interfészt biztosít előre betanított és egyedi Core ML modellekhez, beleértve a beépített szentiementelemző modellt 7 nyelvű véleményekhez.
  • Magyar nyelvhez tokenizáció, nyelvfelismerés, lemmatizálás és POS-címkézés érhető el; a NER és szentiement jobban megvalósítható egyedi Core ML modellel.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is