Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Swift
Code

Memulai dengan Natural Language Processing di iOS 11

by
Difficulty:AdvancedLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Meyria (you can also view the original English article)

Machine learning tidak diragukan lagi telah menjadi salah satu topik terpanas sepanjang tahun lalu, dengan perusahaan-perusahaan dari semua jenis, berusaha untuk membuat produk mereka lebih cerdas untuk meningkatkan pengalaman pengguna dan membedakan penawaran mereka.

Kini Apple telah memasuki lomba untuk memberikan machine learning yang menghadapi pengembang. Core ML memudahkan pengembang untuk menambahkan pendalaman machine learning ke aplikasi mereka.

Hanya dengan melihat perangkat iOS Anda, Anda akan melihat machine learning tergabung dalam hampir semua aplikasi sistem - yang paling jelas adalah Siri. Misalnya, saat Anda mengirim pesan teks, Apple menggunakan Natural Language Processing (NLP) untuk memprediksi kata berikutnya atau dengan cerdas menyarankan koreksi saat mengetik kata. Harapannya machine learning dan NLP untuk terus selalu hadir dan tertanam lebih jauh dalam penggunaan teknologi, mulai dari pencarian hingga layanan pelanggan.

Tujuan Tutorial Ini

Tutorial ini akan mengenalkan Anda pada bagian machine learning: Natural Language Processing (NLP). Kita akan membahas apa itu NLP dan mengapa perlu diterapkan, sebelum melihat berbagai lapisan atau skema yang membentuk NLP. Ini termasuk:

  • language identification
  • tokenization
  • part of speech identification
  • named entity recognition

Setelah melalui teori NLP, kita akan menerapkan pengetahuan kita untuk berlatih dengan menciptakan Twitter client sederhana yang menganalisa tweet. Lanjutkan dan kloning repo GitHub tutorial ini dan lihatlah.

Asumsi Pengetahuan

Tutorial ini mengasumsikan Anda adalah pengembang iOS berpengalaman. Meskipun kita akan bekerja dengan machine learning, anda tidak perlu memiliki latar belakang sesuai subjek. Secara default, sementara komponen Core Core lainnya memerlukan pengetahuan Python, kita tidak akan bisa bekerja dengan aspek-aspek yang berhubungan dengan Python dengan NLP.

Pengantar Machine Learning dan NLP

Tujuan machine learning adalah agar komputer melakukan tugas tanpa diprogram secara eksplisit untuk melakukannya—kemampuan untuk berpikir atau menafsirkan secara mandiri. Kasus penggunaan kalangan atas modern adalah otomatis mengemudi sendiri: memberi mobil kemampuan untuk menafsirkan lingkungan mereka secara visual dan menyetir tanpa bantuan.

Selain pengenalan visual, machine learning juga mengenalkan pengenalan suara, pencarian web cerdas, dan banyak lagi. Dengan Google, Microsoft, Facebook dan IBM yang berada di garis depan mempopulerkan machine learning dan membuatnya tersedia bagi kebanyakan pengembang, Apple juga memutuskan untuk pindah ke arah itu dan mempermudah machine learning untuk dimasukkan ke dalam aplikasi pihak ketiga.

Core ML adalah baru bagi keluarga SDK Apple, diperkenalkan sebagai bagian dari iOS 11 untuk memungkinkan pengembang menerapkan berbagai macam mode machine learning dan tipe lapisan pembelajaran yang mendalam.

Core ML technology stack source Apple

Natural Language Processing (NLP) secara logis berada dalam framework Core ML bersama dua library kuat lainnya, Vision and GameplayKit. Vision memberi pengembang kemampuan untuk menerapkan machine learning penglihatan komputer untuk menyelesaikan hal-hal seperti mendeteksi wajah, hal yang menonjol, atau benda lainnya, sementara GameplayKit menyediakan pengembang game dengan alat untuk pencipta games dan fitur gameplay yang spesifik.

Dalam tutorial ini, kita akan fokus pada Natural Language Processing.

Natural Language Processing (NLP)

Natural Language Processing adalah ilmu yang mampu menganalisa dan memahami teks, memecah kalimat dan kata-kata untuk menyelesaikan tugas seperti analisis perasaan, ekstraksi hubungan, penjumlahan, memperingkas teks atau kalimat, dan banyak lagi.. Atau dengan kata lain, NLP adalah kemampuan komputer untuk memahami bahasa manusia dalam bentuk lisan atau tulisannya.

Diagram showing how Natural Language Processing works

Kemampuan untuk mengekstrak dan merangkum kata-kata dan kalimat secara kontekstual memungkinkan peningkatan integrasi antara pengguna dan perangkat, atau bahkan di antara dua perangkat, melalui kumpulan konten yang semakna. Kita akan mengeksplorasi masing-masing komponen ini secara rinci segera, tapi pertama-tama penting untuk memahami mengapa anda ingin menerapkan NLP.

Mengapa Menerapkan Natural Language Processing?

Dengan perusahaan yang terus mengandalkan penyimpanan dan pengolahan data yang besar, NLP memungkinkan penafsiran secara bebas dan teks yang tidak terstruktur, sehingga dapat dianalisa. Dengan banyak informasi yang tersimpan dalam file teks yang tidak terstruktur—dalam catatan medis, misalnya—NLP dapat menyaring data dan menyediakan data tentang konteks, maksud, dan bahkan perasaan.

Selain bisa menganalisis teks lisan dan tulisan, NLP sekarang telah menjadi mesin di belakang bot—dari yang ada di Slack sehingga anda hampir bisa melakukan percakapan manusia yang lengkap dengannya, untuk alat layanan pelanggan. Jika anda menuju ke situs dukungan Apple dan meminta untuk berbicara dengan layanan pelanggan, anda akan diberi bot web yang akan mencoba dan mengarahkan anda ke arah yang benar berdasarkan pertanyaan yang anda ajukan. Ini membantu pelanggan merasa dipahami secara real time, tanpa benar-benar perlu berbicara dengan manusia.

Melihat spam email dan filter spam, NLP telah memungkinkan untuk dapat memahami teks dengan lebih baik, dan untuk lebih mengklasifikasikan email dengan kepastian yang lebih besar tentang maksudnya.

Summarization adalah teknik NLP yang penting untuk memberikan analisa perasaan, sesuatu yang perusahaan ingin gunakan pada data dari akun media sosial mereka, untuk melacak tanggapan dari produk perusahaan.

Machine Learning and NLP at work source Apple

Aplikasi Foto di iOS 11 adalah contoh bagus lainnya. Saat mencari foto, machine learning bekerja pada berbagai tingkatan. Selain menggunakan machine learning dan penglihatan untuk mengenali wajah dan jenis foto (yaitu pantai, lokasi), istilah pencarian disaring melalui NLP, dan jika anda mencari istilah 'pantai', ini juga akan mencari foto yang berisi deskripsi 'pantai'. Ini disebut lemmatization, dan anda akan belajar lebih banyak tentang hal ini di bawah, saat kita belajar menghargai betapa hebatnya machinel learning, betapa mudahnya Apple membuatnya membuat aplikasi anda lebih cerdas.

Dengan aplikasi anda yang memiliki pemahaman yang lebih baik tentangnya, sebagai contoh, string pencarian, ia akan dapat berinteraksi lebih cerdas dengan pengguna, memahami maksud di balik istilah pencarian daripada mengambil kata itu dalam arti tepatnya. Dengan merangkul library NLP Apple, pengembang dapat mendukung pendekatan pemrosesan teks dan pengalaman pengguna yang konsisten di seluruh ekosistem Apple, mulai dari iOS hingga macOS, tvOS, dan watchOS.

Dengan pembelajaran mesin yang dilakukan di perangkat, pengguna mendapatkan keuntungan dengan memanfaatkan perangkat CPU dan GPU untuk memberikan efisiensi kinerja dalam penghitungan, daripada mengakses API external machine learning. Ini memungkinkan data pengguna tetap di perangkat dan mengurangi latensi karena akses jaringan. Dengan pembelajaran mesin yang membutuhkan pengetahuan pengguna yang lebih mendalam untuk menyimpulkan saran dan prediksi, kemampuan untuk memasukkan pemrosesan ke perangkat fisik, dan memanfaatkan privasi diferensial untuk aktivitas yang terkait dengan jaringan, anda dapat memberikan pengalaman cerdas namun tidak invasif untuk pengguna Anda.

Selanjutnya, kita akan melihat susunan mesin Natural Language Processing Apple.

Memperkenalkan NSLinguisticTagger

Kelas dasar NSLinguisticTagger memainkan peran pokok dalam menganalisis dan menandai teks dan ucapan, menyegmentasikan konten ke dalam paragraf, kalimat dan kata-kata, dan terdiri dari skema berikut:

NSLinguisticTagger components source Apple

Saat Anda menginisialisasi NSLinguisticTagger, anda meneruskan NSLinguisticTagScheme yang anda minati untuk dianalisis. Sebagai contoh:

et tagger = NSLinguisticTagger(tagSchemes: [.language, .tokenType, ...], options: 0)

Anda kemudian akan menyiapkan berbagai argumen dan properti, termasuk memasukkan teks inputan, sebelum menghitung melalui objek contoh NSLinguisticTagger, mengekstrak entitas dan token. Mari selami lebih dalam dan lihat bagaimana menerapkan masing-masing skema, selangkah demi langkah, dimulai dengan skema language identification.

Language Identification

Tipe skema tag pertama, language identification, mencoba untuk mengidentifikasi bahasa BCP-47 yang paling menonjol baik pada tingkat dokumen, paragraf, atau kalimat. Anda dapat mengambil bahasa ini dengan mengakses properti dominantLanguage dari objek contoh NSLinguisticTagger:

Cukup jelas. Selanjutnya, kita akan melihat pengklasifikasian teks menggunakan metode tokenization.

Tokenization

Tokenization adalah proses menentukan batas dan mungkin mengklasifikasikan bagian dari string dari karakter inputan. Token yang dihasilkan kemudian diteruskan ke beberapa bentuk pemrosesan lainnya. (sumber: Wikipedia)

Dengan mengambil blok teks, tokenization secara logis akan rusak dan mengklasifikasikan teks itu menjadi paragraf, kalimat, dan kata-kata. Kita mulai dengan menetapkan skema yang sesuai (.tokenType) untuk tagger. Tidak seperti skema sebelumnya, kita mengharapkan banyak hasil, dan kita perlu menghitung melalui tag yang dikembalikan, seperti yang ditunjukkan pada contoh di bawah ini:

Sekarang kita punya daftar kata-kata. Tapi apakah tidak menarik untuk mendapatkan asal kata-kata itu? Jadi misalnya, jika pengguna mencari istilah seperti 'walks' atau 'walking', ini akan sangat berguna untuk mendapatkan kata asalnya, 'walk', dan mengklasifikasikan semua permutasi dari 'walk' bersama-sama. Ini disebut lemmatization, dan kita akan membahasnya selanjutnya.

Lemmatization

Lemmatization mengelompokkan bentuk kata-kata yang tereduksi untuk dianalisis sebagai item tunggal, yang memungkinkan anda untuk menyimpulkan makna yang dimaksud. Intinya, semua yang perlu anda ingat adalah bahwa itu berasal dari bentuk kamus kata.

Mengetahui bentuk kamus kata merupakan hal yang sangat kuat dan memungkinkan pengguna anda untuk mencari dengan 'ketidakjelasan' yang lebih besar. Pada contoh sebelumnya, kita mempertimbangkan pengguna yang mencari istilah 'walking'. Tanpa lemmatization, anda hanya bisa mengembalikan penyebutan yang tepat dari kata itu, tetapi jika anda dapat mempertimbangkan bentuk kata lain yang sama, anda juga bisa mendapatkan hasil yang menyebutkan 'walk'.

Demikian pula dengan contoh sebelumnya, untuk melakukan lemmatization, kita akan mengatur skema inisialisasi tagger ke .lemma, sebelum menghitung tag:

Selanjutnya, kita akan melihat pada part of speech tagging, yang memungkinkan kita untuk mengklasifikasikan blok teks sebagai kata benda, kata kerja, kata sifat, atau bagian lainnya.

Part of Speech (PoS)

Part of Speech tagging bertujuan untuk menghubungkan bagian dari ucapan untuk setiap kata yang spesifik, berdasarkan definisi kata dan konteks (hubungannya dengan kata-kata yang berdekatan dan terkait). Sebagai elemen NLP, part of speech tagging memungkinkan kita untuk fokus pada kata benda dan kata kerja, yang dapat membantu kita menyimpulkan maksud dan makna teks.

Penerapan part of speech tagging melibatkan pengaturan properti tagger untuk menggunakan .lexicalClass, dan perhitungan  dengan cara yang sama yang ditunjukkan pada contoh sebelumnya. Anda akan mendapatkan penguraian kalimat anda menjadi kata-kata, dengan tag asosiatif untuk masing-masingnya, mengklasifikasi kata sebagai milik sebuah kata benda, preposisi, kata kerja, kata sifat, atau penentuan. Untuk informasi lebih lanjut tentang apa artinya ini, lihat dokumentasi Apple yang mencakup Lexical Types.

Proses lain di dalam susnan Apple NLP adalah Named Entity Recognition, yang mengurasi blok teks, mengekstrak tipe entitas tertentu yang kita minati, seperti nama, lokasi, organisasi, dan orang-orang. Mari kita lihat yang berikutnya.

Named Entity Recognition

Named Entity Recognition adalah salah satu komponen penandaan klasifikasi NLP yang paling kuat, memungkinkan anda untuk mengklasifikasikan nama entitas dunia-nyata atau obyek dari kalimat anda (yaitu lokasi, orang, nama). Sebagai pengguna iPhone, anda pasti sudah melihat aksi ini saat anda mengirim pesan ke teman anda, dan anda akan melihat beberapa kata kunci tertentu yang disorot, seperti nomor telepon, nama, atau tanggal.

Anda dapat menerapkan Named Entity Recognition dengan cara yang sama seperti contoh kita yang lainnya, atur skema tag ke .nameType, dan lakukan perulangan pada tagger menurut rentang tertentu.

Selanjutnya, anda akan memasukkan apa yang anda pelajari ke dalam aksi, dengan sebuah aplikasi sederhana yang akan menggunakan seperangkat tweet yang telah ditentukan, saat anda memasukkan setiap tweet melalui jalur NLP.

Menerapkan Natural Language Processing

Untuk menyelesaikan semuanya, kita akan melihat aplikasi klien Twitter sederhana yang mengambil lima tweet dalam tampilan tabel dan menerapkan beberapa pemrosesan NLP untuk masing-masingnya.

Pada screenshot berikut, kita menggunakan NLP's Named Entity Recognition untuk menyoroti kata kunci entitas (organisasi, lokasi dll) berwarna merah.

Phone screenshot with key words highlighted in red

Lanjutkan dan kloning proyek TwitterNLPExample dari tutorial repo GitHub dan lihat sekilas kodenya. Class yang paling kita minati adalah TweetsViewController.swift. Mari kita lihat metode tableView(_ tableView: cellForRowAt).

Untuk setiap sel (tweet), kita memanggil empat metode yang akan kita definisikan sebentar lagi:

  • detectLanguage()
  • getTokenization()
  • getNamedEntityRecognition()
  • getLemmatization()

Untuk masing-masing metode tersebut, kita memanggil metode enumerate, teruskan di skema dan label teks untuk mengekstrak teks, seperti yang kita lakukan untuk mengidentifikasi bahasa:

Akhirnya, fungsi enumerate adalah di mana semua aksi NLP benar-benar terjadi, mengambil properti dan argumen berdasarkan jenis pemrosesan NLP yang ingin kita lakukan, dan menyimpan hasilnya dalam array yang bisa kita gunakan nanti. Untuk keperluan contoh ini, kita cukup mencetak hasilnya ke konsol, untuk tujuan pengamatan.

Untuk skema Named Entity Recognition .nameType, kita mengambil kata kunci entitas yang kita ekstrak dan memeriksanya untuk menyoroti kata-kata yang sesuai dengan entitas tersebut. Anda bahkan bisa mengambil langkah lebih jauh dan membuat link kata kunci tersebut—mungkin untuk mencari tweet yang sesuai dengan kata kunci tersebut.

Lanjutkan dan buat dan jalankan aplikasi dan lihat hasilnya, berikan perhatian khusus pada kata-kata singkat dan entitas yang telah kita ekstrak.

Kesimpulan

Dari Google memanfaatkan Natural Language Processing di mesin pencariannya ke Apple Siri dan bot Facebook messanger, tidak ada keraguan bahwa bidang ini berkembang secara eksponensial. Tetapi NLP dan Machine Learning bukan lagi domain eksklusif untuk perusahaan besar. Dengan memperkenalkan framework Core ML awal tahun ini, Apple telah mempermudah pengembang sehari-hari tanpa latar belakang pembelajaran yang mendalam untuk dapat menambahkan kecerdasan ke dalam aplikasi mereka.

Pada tutorial ini, anda melihat bagaimana dengan beberapa baris kode anda dapat mnggunakan Core ML untuk menyimpulkan konteks dan maksud dari kalimat tidak terstruktur dan paragraf, serta mendeteksi bahasa yang dominan. Kita akan melihat perbaikan lebih lanjut pada iterasi yang akan datang untuk SDK, namun NLP sudah menjanjikan untuk menjadi alat yang hebat yang akan banyak digunakan di App Store.

Sementara anda berada di sini, lihat beberapa postingan kami yang lain tentang pengembangan aplikasi iOS dan machine learning!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.