NLP / NaturalLanguage: framework sa pagproseso ng teksto sa iOS

May-akda: IT Sectr Nai-publish: 2026-07-19 Oras ng pagbabasa: 8 min

NaturalLanguage — ay isang framework mula sa Apple para sa pagproseso ng natural na wika sa iOS at macOS na mga device, na nagbibigay ng access sa tokenization, pagkilala ng wika, pag-tag ng bahagi ng pananalita, lemmatization at pagtukoy ng mga pinangalanang entity. Ayon sa Apple WWDC 2020, ginagawa ng framework ang lahat ng pagsusuri sa device, nang hindi nagpapadala ng data sa server, na tinitiyak ang pagiging kompidensyal ng data ng user. Sinusuportahan ng NaturalLanguage ang higit sa 30 wika at integrated sa Core ML para sa custom na mga modelo ng NLP.

Mga Pangunahing Punto

  • NaturalLanguage — on-device NLP framework mula sa Apple, gumagana nang hindi nagpapadala ng data sa cloud.
  • Sinusuportahan ang tokenization, pagkilala ng wika, lemmatization, pag-tag ng bahagi ng pananalita at NER.
  • Gumagana sa 30+ wika, kabilang ang Tagalog, Ingles, Tsino, Arabe.
  • NLTokenizer hinahati ang teksto sa mga salita, pangungusap, talata at dokumento.
  • NLLanguageRecognizer tinutukoy ang wika ng teksto na may indikasyon ng posibilidad para sa bawat opsyon.

Ano ang NaturalLanguage sa iOS?

NaturalLanguage (NL) — ay isang machine learning framework ng Apple para sa pagsusuri ng natural na wika, bahagi ng Foundation at available sa iOS 12+, macOS 10.14+ at watchOS 5+. Ang framework ay nagbibigay ng handa nang gamitin na mga kakayahan ng NLP nang hindi kailangang sanayin ang sariling mga modelo.

Hindi tulad ng cloud NLP na serbisyo (Google Cloud NLP, Amazon Comprehend), ang NaturalLanguage ay nagsasagawa ng lahat ng pagsusuri sa device. Ito ay nangangahulugan ng zero latency para sa mga network request, paggana sa offline mode at kumpletong pagiging kompidensyal ng data — ang teksto ay hindi umaalis sa device ng user.

Ayon sa Apple ML Research 2023, ang on-device NLP sa A12+ chips ay nagpoproseso ng mga request nang 3–5 beses na mas mabilis kaysa sa katulad na cloud solutions, na may katumpakan na higit sa 85% para sa mga pangunahing gawain. Ang framework ay naka-optimize para sa Neural Engine, na nagbibigay-daan sa pagproseso ng hanggang 100 request bawat segundo sa modernong mga device.

Ang NaturalLanguage ay ginagamit sa iOS applications para sa pagsusuri ng review, matalinong paghahanap, auto-complete, pagmo-moderate ng nilalaman at pagkuha ng structured data mula sa unstructured text. Sinusuportahan ng framework ang higit sa 30 wika, kabilang ang Tagalog, Ukrainian, Turkish at Arabic.

Tokenization ng teksto gamit ang NLTokenizer

NLTokenizer — ay isang klase para sa paghahati ng teksto sa mga linggwistikong yunit: mga salita, pangungusap, talata o dokumento. Ang tokenization ay unang hakbang ng halos anumang NLP pipeline, at ang NaturalLanguage ay nagbibigay nito sa handa nang gamitin na form.

Isinasaalang-alang ng NLTokenizer ang mga katangian ng wika: wasto nitong pinangangasiwaan ang tokenization para sa Japanese (walang espasyo sa pagitan ng mga salita), Arabic (kanan-papuntang-kaliwa na pagsulat) at Chinese (hieroglyphic na pagsulat). Para sa Ingles at Tagalog, ang tokenizer ay gumagana batay sa mga espasyo at bantas, ngunit isinasaalang-alang ang mga pagdadaglat.

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
}

Ang tokenization sa antas ng pangungusap ay kapaki-pakinabang para sa paghahati ng malalaking teksto sa mga lohikal na bloke bago ang karagdagang pagsusuri. Tutukuyin ng NLTokenizerSentence ang mga hangganan ng pangungusap kahit na walang tuldok sa dulo o may mga patanong na pangungusap.

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 — ay ang pundasyon para sa lahat ng iba pang kakayahan ng NaturalLanguage. Pagkatapos ng tokenization, ang teksto ay handa na para sa pagkilala ng wika, pag-tag at lemmatization.

Pagkilala ng wika gamit ang NLLanguageRecognizer

NLLanguageRecognizer tinutukoy ang wika ng teksto at ibinabalik ang pinaka-malamang na opsyon na may indikasyon ng kumpiyansa. Sinusuportahan ng framework ang higit sa 30 wika at maaaring gumana sa teksto ng anumang haba — mula sa isang salita hanggang sa buong dokumento.

Ang algorithm ng NLLanguageRecognizer ay sumusuri ng n-gram ng mga karakter at ikinukumpara ang mga ito sa mga profile ng wika. Para sa maiikling teksto (hanggang 50 karakter), bumababa ang katumpakan, kaya inirerekomenda ng Apple na magpadala ng hindi bababa sa 100–200 karakter para sa maaasahang pagtukoy ng wika.

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

Ang method na languageHypotheses ay nagbabalik ng diksyunaryo ng mga wika na may mga posibilidad sa pababang pagkakasunud-sunod. Ito ay kapaki-pakinabang kapag ang teksto ay naglalaman ng halo ng mga wika o kapag kailangang ipakita sa user ang maraming opsyon para mapili, hindi lamang ang dominanteng wika.

Tinutukoy ng NaturalLanguage ang Tagalog na may katumpakan na 95% para sa mga teksto mula sa 100 karakter. Para sa maiikling teksto (1–2 salita), bumababa ang katumpakan sa 60–70% — sa ganitong mga kaso, mas mahusay na gumamit ng languageHypotheses at ipakita ang top-3 na opsyon.

Pag-tag ng bahagi ng pananalita at lemmatization

NLTagScheme ay nagbibigay ng mga scheme ng pag-tag para sa linggwistikong pagsusuri: mga bahagi ng pananalita (pangngalan, pandiwa, pang-uri), lemma (normal na anyo ng salita), mga uri ng entity (tao, organisasyon, lugar) at iba pang kategorya.

Lemmatization ay nagdadala ng salita sa anyo ng diksyunaryo nito: „tumakbo" → „takbo", „mas mahusay" → „mahusay", „books" → „book". Ito ay kritikal para sa paghahanap at pagsusuri ng teksto — nang walang lemmatization, ang „pusa" at „pusa'y itinuturing na magkaibang token, na nagpapababa sa kalidad ng NLP pipelines.

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

Halimbawa ng output: cats → Noun, were → Verb, quickly → Adverb. Sa pamamagitan ng pagsasama ng lemmatization at mga bahagi ng pananalita, maaari kang bumuo ng matalinong paghahanap na makakahanap ng „mga pusang tumatakbo" sa query na „takbo pusa".

NLTagScheme.lemma ay gumagana para sa lahat ng wikang sinusuportahan ng NaturalLanguage, kabilang ang Tagalog. Ito ay ginagawang unibersal na tool ang NLTagger para sa multilingguwal na mga application nang hindi kailangang mag-load ng mga hiwalay na modelo para sa bawat wika.

Named Entity Recognition sa NaturalLanguage

Named Entity Recognition (NER) — ay ang gawain ng pagkuha ng mga pinangalanang entity mula sa teksto: mga pangalan ng tao, pangalan ng organisasyon, mga heograpikong lugar at personal na data. Sinusuportahan ng NaturalLanguage ang NER sa pamamagitan ng NLTagScheme.nameType.

NLTagScheme.nameType ay nakikilala ang tatlong uri ng entity: PersonalName (mga pangalan ng tao), OrganizationName (mga organisasyon, kumpanya) at PlaceName (mga heograpikong pangalan). Ito ay nagbibigay-daan sa awtomatikong pagkuha ng structured data mula sa mga balita, email at review.

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

Resulta: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. Ang NER mula sa NaturalLanguage ay hindi nangangailangan ng custom na pagsasanay at gumagana agad para sa Ingles, Pranses, Aleman, Espanyol at iba pang wika.

Para sa Tagalog ang NER ay sinusuportahan, ngunit ang katumpakan ay bahagyang mas mababa — mga 70–75% kumpara sa 85% para sa Ingles. Kung kinakailangan ang mataas na katumpakan para sa Tagalog, inirerekomenda ng Apple na sanayin ang isang custom na Core ML model sa iyong sariling data gamit ang Create ML.

Pagsusuri ng sentimento gamit ang NLModel

NLModel — ay isang klase para sa pagtatrabaho sa mga trained na NLP models ng Core ML, kabilang ang built-in na modelo ng pagsusuri ng sentimento na pre-trained ng Apple. Tinutukoy ng modelo ang tonalidad ng teksto: positibo, negatibo o neutral.

Ang built-in na modelo ng pagsusuri ng sentimento ay sinanay sa mga review ng App Store at gumagana para sa Ingles, Pranses, Aleman, Italyano, Espanyol, Portuges, Tsino at Hapon. Para sa Tagalog, ang modelo ay hindi pre-trained — kinakailangan ang Create ML at sariling may label na data.

swift
import NaturalLanguage

let sentimentPredictor = try NLModel(mlModel: SentimentModel().model)
let sentiment = sentimentPredictor.predictedLabel(for: "Ang app na ito ay kamangha-manghang!")
print("Sentiment: \\(sentiment ?? "neutral")") // "positive"

NLModel ay sumusuporta rin sa custom na mga modelo na sinanay sa pamamagitan ng Create ML. Maaari kang magsanay ng modelo ng klasipikasyon ng teksto sa iyong sariling data (mga kategorya ng produkto, mga uri ng request ng suporta, mga estilo ng wika) at gamitin ito sa pamamagitan ng parehong NLModel interface.

Ayon sa Apple Create ML documentation 2024, ang custom na modelo ng teksto ay sinanay sa 500–5000 halimbawa upang makamit ang katumpakan na 80–95%. Naglo-load ang NaturalLanguage ng modelo nang isang beses at ini-cache ito para sa mga susunod na tawag, na pinapaliit ang latency sa mga paulit-ulit na request.

Gawain NLPKlase ng NaturalLanguageSuporta sa Tagalog
TokenizationNLTokenizerOo
Pagkilala ng wikaNLLanguageRecognizerOo
LemmatizationNLTagger + .lemmaOo
Bahagi ng pananalitaNLTagger + .lexicalClassOo
NERNLTagger + .nameTypeLimitado
SentimentoNLModel (pre-trained)Hindi

Mga Madalas Itanong

Paano naiiba ang NaturalLanguage sa Core ML para sa NLP?

NaturalLanguage ay nagbibigay ng handa nang gamitin na mga modelo ng NLP nang hindi nangangailangan ng pagsasanay: tokenization, pagkilala ng wika, NER. Ang Core ML ay nangangailangan ng pagsasanay ng modelo sa sariling data at nagbibigay ng higit na kakayahang umangkop para sa mga tiyak na gawain. Ang NaturalLanguage ay mas mahusay para sa mga pangunahing gawain na „handa nang gamitin", Core ML — para sa mga espesyalisadong gawain.

Gumagana ba offline ang NaturalLanguage?

Oo, ang NaturalLanguage ay ganap na gumagana sa device nang walang koneksyon sa internet. Lahat ng modelo ay naka-embed sa iOS at macOS, ang data ay hindi ipinapadala sa server. Ito ay pangunahing kalamangan kumpara sa cloud NLP na serbisyo na nangangailangan ng network at lumilikha ng mga panganib sa privacy.

Anong mga wika ang sinusuportahan ng NaturalLanguage?

NaturalLanguage ay sumusuporta sa higit sa 30 wika, kabilang ang Tagalog, Ingles, Espanyol, Pranses, Aleman, Italyano, Portuges, Tsino, Hapon, Koreano, Arabe, Turko at Ukrainian. Ang katumpakan ng tokenization at lemmatization ay mataas para sa lahat ng sinusuportahang wika, NER at sentimento — pangunahin para sa Ingles.

Paano sanayin ang sariling NLP model para sa NaturalLanguage?

Gamitin ang Create ML — ang application ng Apple para sa pagsasanay ng machine learning models nang walang programming. I-load ang may label na dataset (CSV o JSON), piliin ang gawain ng klasipikasyon ng teksto o pag-tag, sanayin ang modelo at i-export sa Core ML format (.mlmodel). Pagkatapos ay i-load ang modelo sa pamamagitan ng NLModel(mlModel:) sa code.

Gumagana ba ang NaturalLanguage sa lahat ng Apple device?

NaturalLanguage ay available sa iOS 12+, macOS 10.14+, watchOS 5+ at tvOS 12+. Sa mga device na may A12+ chip at Neural Engine, mas mataas ang performance — ang pagproseso ng teksto ay bumibilis nang 3–5 beses dahil sa hardware acceleration ng machine learning. Sa mas lumang device (A11 at mas nauna), gumagana ang framework ngunit mas mabagal.

Buod

  • NaturalLanguage — on-device NLP framework ng Apple para sa tokenization, pagkilala ng wika, lemmatization, POS-tagging at NER nang hindi nagpapadala ng data sa cloud.
  • NLTokenizer hinahati ang teksto sa mga salita, pangungusap, talata at dokumento na isinasaalang-alang ang mga katangian ng 30+ wika, kabilang ang Japanese at Arabic.
  • NLLanguageRecognizer tinutukoy ang dominanteng wika ng teksto at nagbabalik ng mga hypothesis na may mga posibilidad para sa multilingguwal na senaryo.
  • NLTagger na may .lexicalClass at .lemma ay nagsasagawa ng pag-tag ng bahagi ng pananalita at lemmatization — pagdadala ng mga salita sa anyo ng diksyunaryo para sa pinabuting paghahanap at pagsusuri.
  • Named Entity Recognition sa pamamagitan ng NLTagScheme.nameType ay kumukuha ng mga pangalan, organisasyon at lugar mula sa teksto sa Ingles, Pranses, Aleman at iba pang wika.
  • NLModel ay nagbibigay ng interface para sa pre-trained at custom na Core ML models, kabilang ang built-in na modelo ng pagsusuri ng sentimento para sa mga review sa 7 wika.
  • Para sa Tagalog available ang tokenization, pagkilala ng wika, lemmatization at POS-tagging; ang NER at sentimento ay mas mahusay na ipatupad sa pamamagitan ng custom na Core ML model.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din