NaturalLanguage — adalah framework dari Apple untuk pemrosesan bahasa alami di perangkat iOS dan macOS, menyediakan akses ke tokenisasi, pengenalan bahasa, penandaan bagian ucapan, lemmatisasi, dan identifikasi entitas bernama. Menurut Apple WWDC 2020, framework melakukan semua analisis di perangkat, tanpa mengirim data ke server, yang memastikan kerahasiaan data pengguna. NaturalLanguage mendukung lebih dari 30 bahasa dan terintegrasi dengan Core ML untuk model NLP kustom.
Poin Utama
NaturalLanguage (NL) — adalah framework pembelajaran mesin Apple untuk analisis bahasa alami, bagian dari Foundation dan tersedia di iOS 12+, macOS 10.14+ dan watchOS 5+. Framework menyediakan kemampuan NLP siap pakai tanpa perlu melatih model sendiri.
Berbeda dengan layanan NLP cloud (Google Cloud NLP, Amazon Comprehend), NaturalLanguage melakukan semua analisis di perangkat. Ini berarti latensi nol untuk permintaan jaringan, bekerja dalam mode offline, dan kerahasiaan data penuh — teks tidak meninggalkan perangkat pengguna.
Menurut Apple ML Research 2023, NLP on-device pada chip A12+ memproses permintaan 3–5 kali lebih cepat daripada solusi cloud serupa, dengan mempertahankan akurasi lebih dari 85% untuk tugas dasar. Framework dioptimalkan untuk Neural Engine, memungkinkan pemrosesan hingga 100 permintaan per detik pada perangkat modern.
NaturalLanguage digunakan dalam aplikasi iOS untuk analisis ulasan, pencarian cerdas, pelengkapan otomatis, moderasi konten, dan ekstraksi data terstruktur dari teks tidak terstruktur. Framework mendukung lebih dari 30 bahasa, termasuk Indonesia, Ukraina, Turki, dan Arab.
NLTokenizer — adalah kelas untuk membagi teks menjadi unit linguistik: kata, kalimat, paragraf, atau dokumen. Tokenisasi adalah langkah pertama dari hampir semua pipeline NLP, dan NaturalLanguage menyediakannya dalam bentuk siap pakai.
NLTokenizer mempertimbangkan karakteristik bahasa: ia menangani tokenisasi dengan benar untuk Jepang (tanpa spasi antar kata), Arab (tulisan kanan-ke-kiri) dan China (tulisan hieroglif). Untuk Inggris dan Indonesia, tokenizer bekerja berdasarkan spasi dan tanda baca, tetapi dengan mempertimbangkan singkatan.
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
}
Tokenisasi di tingkat kalimat berguna untuk membagi teks besar menjadi blok logis sebelum analisis lebih lanjut. NLTokenizerSentence akan menentukan batas kalimat bahkan tanpa titik di akhir atau dengan kalimat tanya.
let sentenceTokenizer = NLTokenizer(unit: .sentence)
sentenceTokenizer.string = text
sentenceTokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { range, _ in
print("Sentence: \\(text[range])")
return true
}
NLTokenizer — adalah dasar untuk semua kemampuan NaturalLanguage lainnya. Setelah tokenisasi, teks siap untuk pengenalan bahasa, penandaan, dan lemmatisasi.
NLLanguageRecognizer menentukan bahasa teks dan mengembalikan opsi yang paling mungkin dengan tingkat keyakinan. Framework mendukung lebih dari 30 bahasa dan dapat bekerja dengan teks dengan panjang berapa pun — dari satu kata hingga seluruh dokumen.
Algoritma NLLanguageRecognizer menganalisis n-gram karakter dan membandingkannya dengan profil bahasa. Untuk teks pendek (hingga 50 karakter), akurasi menurun, oleh karena itu Apple merekomendasikan untuk mengirim setidaknya 100–200 karakter untuk penentuan bahasa yang andal.
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)")
}
Metode languageHypotheses mengembalikan kamus bahasa dengan probabilitas dalam urutan menurun. Ini berguna ketika teks berisi campuran bahasa atau ketika perlu menampilkan beberapa opsi untuk dipilih pengguna, bukan hanya bahasa dominan.
NaturalLanguage menentukan bahasa Indonesia dengan akurasi 95% untuk teks dari 100 karakter. Untuk teks pendek (1–2 kata), akurasi turun menjadi 60–70% — dalam kasus seperti itu, lebih baik menggunakan languageHypotheses dan menampilkan 3 opsi teratas.
NLTagScheme menyediakan skema penandaan untuk analisis linguistik: bagian ucapan (kata benda, kata kerja, kata sifat), lemma (bentuk normal kata), jenis entitas (orang, organisasi, tempat) dan kategori lainnya.
Lemmatisasi membawa kata ke bentuk kamusnya: „berlari" → „lari", „lebih baik" → „baik", „books" → „book". Ini sangat penting untuk pencarian dan analisis teks — tanpa lemmatisasi, „kucing" dan „kucingku" dianggap sebagai token berbeda, yang menurunkan kualitas pipeline NLP.
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")"
}
Contoh keluaran: cats → Noun, were → Verb, quickly → Adverb. Dengan menggabungkan lemmatisasi dan bagian ucapan, Anda dapat membangun pencarian cerdas yang menemukan „kucing berlari" dengan kueri „lari kucing".
NLTagScheme.lemma bekerja untuk semua bahasa yang didukung NaturalLanguage, termasuk Indonesia. Ini menjadikan NLTagger alat universal untuk aplikasi multibahasa tanpa perlu memuat model terpisah untuk setiap bahasa.
Named Entity Recognition (NER) — adalah tugas mengekstrak entitas bernama dari teks: nama orang, nama organisasi, tempat geografis, dan data pribadi. NaturalLanguage mendukung NER melalui NLTagScheme.nameType.
NLTagScheme.nameType membedakan tiga jenis entitas: PersonalName (nama orang), OrganizationName (organisasi, perusahaan) dan PlaceName (nama geografis). Ini memungkinkan ekstraksi otomatis data terstruktur dari berita, email, dan ulasan.
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)"
}
}
Hasil: Tim Cook → PersonalName, Apple → OrganizationName, Cupertino → PlaceName. NER dari NaturalLanguage tidak memerlukan pelatihan kustom dan berfungsi langsung untuk Inggris, Prancis, Jerman, Spanyol, dan bahasa lainnya.
Untuk bahasa Indonesia NER didukung, tetapi akurasinya sedikit lebih rendah — sekitar 70–75% dibandingkan 85% untuk Inggris. Jika akurasi tinggi diperlukan untuk Indonesia, Apple merekomendasikan melatih model Core ML kustom pada data Anda sendiri menggunakan Create ML.
NLModel — adalah kelas untuk bekerja dengan model NLP Core ML yang terlatih, termasuk model analisis sentimen bawaan yang telah dilatih sebelumnya oleh Apple. Model menentukan tonalitas teks: positif, negatif, atau netral.
Model bawaan analisis sentimen dilatih pada ulasan App Store dan berfungsi untuk Inggris, Prancis, Jerman, Italia, Spanyol, Portugis, China, dan Jepang. Untuk bahasa Indonesia, model tidak dilatih sebelumnya — diperlukan Create ML dan data berlabel Anda sendiri.
import NaturalLanguage
let sentimentPredictor = try NLModel(mlModel: SentimentModel().model)
let sentiment = sentimentPredictor.predictedLabel(for: "Aplikasi ini luar biasa!")
print("Sentiment: \\(sentiment ?? "neutral")") // "positive"
NLModel juga mendukung model kustom yang dilatih melalui Create ML. Anda dapat melatih model klasifikasi teks pada data Anda sendiri (kategori produk, jenis permintaan dukungan, gaya bahasa) dan menggunakannya melalui antarmuka NLModel yang sama.
Menurut Apple Create ML documentation 2024, model teks kustom dilatih pada 500–5000 contoh untuk mencapai akurasi 80–95%. NaturalLanguage memuat model sekali dan menyimpannya dalam cache untuk panggilan berikutnya, meminimalkan latensi pada permintaan berulang.
| Tugas NLP | Kelas NaturalLanguage | Dukungan Indonesia |
|---|---|---|
| Tokenisasi | NLTokenizer | Ya |
| Pengenalan bahasa | NLLanguageRecognizer | Ya |
| Lemmatisasi | NLTagger + .lemma | Ya |
| Bagian ucapan | NLTagger + .lexicalClass | Ya |
| NER | NLTagger + .nameType | Terbatas |
| Sentimen | NLModel (pra-latih) | Tidak |
Pertanyaan yang Sering Diajukan
NaturalLanguage menyediakan model NLP siap pakai tanpa perlu pelatihan: tokenisasi, pengenalan bahasa, NER. Core ML memerlukan pelatihan model pada data Anda sendiri dan memberikan lebih banyak fleksibilitas untuk tugas spesifik. NaturalLanguage lebih baik untuk tugas dasar „siap pakai", Core ML — untuk tugas yang sangat terspesialisasi.
Ya, NaturalLanguage sepenuhnya bekerja di perangkat tanpa koneksi internet. Semua model tertanam di iOS dan macOS, data tidak dikirim ke server. Ini adalah keunggulan utama dibandingkan layanan NLP cloud yang memerlukan jaringan dan menciptakan risiko privasi.
NaturalLanguage mendukung lebih dari 30 bahasa, termasuk Indonesia, Inggris, Spanyol, Prancis, Jerman, Italia, Portugis, China, Jepang, Korea, Arab, Turki, dan Ukraina. Akurasi tokenisasi dan lemmatisasi tinggi untuk semua bahasa yang didukung, NER dan sentimen — terutama untuk Inggris.
Gunakan Create ML — aplikasi Apple untuk melatih model pembelajaran mesin tanpa pemrograman. Muat dataset berlabel (CSV atau JSON), pilih tugas klasifikasi teks atau penandaan, latih model, dan ekspor ke format Core ML (.mlmodel). Kemudian muat model melalui NLModel(mlModel:) dalam kode.
NaturalLanguage tersedia di iOS 12+, macOS 10.14+, watchOS 5+ dan tvOS 12+. Pada perangkat dengan chip A12+ dan Neural Engine, kinerja lebih tinggi — pemrosesan teks dipercepat 3–5 kali berkat akselerasi perangkat keras pembelajaran mesin. Pada perangkat lama (A11 dan sebelumnya), framework berfungsi tetapi lebih lambat.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga