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 (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.
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.
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.
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.
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.
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.
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.
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 (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.
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.
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.
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 NLP | Klase ng NaturalLanguage | Suporta sa Tagalog |
|---|---|---|
| Tokenization | NLTokenizer | Oo |
| Pagkilala ng wika | NLLanguageRecognizer | Oo |
| Lemmatization | NLTagger + .lemma | Oo |
| Bahagi ng pananalita | NLTagger + .lexicalClass | Oo |
| NER | NLTagger + .nameType | Limitado |
| Sentimento | NLModel (pre-trained) | Hindi |
Mga Madalas Itanong
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.
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.
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.
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.
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
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.
Basahin din