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

Bermula dengan Pemprosesan Bahasa Asli pada iOS 11

by
Difficulty:AdvancedLength:LongLanguages:

Malay (Melayu) translation by Kaustina Nurul Ilmi (you can also view the original English article)

Pembelajaran mesin pastinya menjadi salah satu topik paling hangat sepanjang tahun lalu, dengan syarikat-syarikat dari semua jenis, cuba membuat produk mereka lebih pintar untuk meningkatkan pengalaman pengguna dan membezakan tawaran mereka.

Sekarang Apple telah memasuki perlumbaan untuk menyediakan pembelajaran mesin yang dihadapi oleh pemaju. Core ML memudahkan para pemaju untuk menambah pembelajaran mesin kepada aplikasi mereka.

Hanya dengan melihat peranti iOS anda, anda akan melihat pembelajaran mesin yang dimasukkan dalam hampir semua aplikasi sistem - yang paling jelas adalah Siri. Sebagai contoh, apabila anda menghantar mesej teks, Apple menggunakan Pemprosesan Bahasa Semula Jadi (NLP) untuk meramalkan perkataan seterusnya atau secara bijak mencadangkan pembetulan semasa menaip perkataan. Harapannya ialah pembelajaran mesin dan NLP akan terus hadir dan tertanam lagi dalam penggunaan teknologi, dari carian ke perkhidmatan pelanggan.

Tujuan tutorial ini

Tutorial ini akan memperkenalkan anda ke bahagian pembelajaran mesin: Pemprosesan Bahasa Asli (NLP). Kami akan membincangkan apa yang NLP adalah dan mengapa ia perlu diterapkan, sebelum melihat pelbagai lapisan atau skim yang membentuk NLP. Ini termasuk:

  • pengenalan bahasa
  • tokenization
  • sebahagian daripada pengenalan ucapan
  • bernama pengiktirafan entiti

Selepas melalui teori NLP, kami akan menggunakan pengetahuan kami untuk berlatih dengan mencipta klien Twitter mudah yang menganalisis tweet. Teruskan dan klikan repo GitHub tutorial ini dan lihat.

Asumsi Pengetahuan

Tutorial ini menganggap anda seorang pemaju iOS yang berpengalaman. Walaupun kami akan bekerja dengan pembelajaran mesin, anda tidak perlu mempunyai latar belakang mengikut subjek. Secara lalai, manakala komponen Core ML lain memerlukan pengetahuan Python, kita tidak akan dapat bekerjasama dengan aspek yang berkaitan dengan Python dengan NLP.

Pengenalan kepada Pembelajaran Mesin dan NLP

Tujuan pembelajaran mesin adalah untuk komputer menjalankan tugas tanpa diprogramkan dengan jelas untuk melakukannya - keupayaan untuk berfikir atau mentafsir secara bebas. Penggunaan kes-kes kelas atas moden adalah secara automatik memandu sendiri: memberikan kereta keupayaan untuk mentafsir persekitaran mereka secara visual dan memandu tanpa bantuan.

Selain pengiktirafan visual, pembelajaran mesin juga memperkenalkan pengecaman pertuturan, carian web pintar, dan banyak lagi. Dengan Google, Microsoft, Facebook dan IBM di barisan hadapan untuk mempelbagaikan pembelajaran mesin dan menjadikannya tersedia untuk kebanyakan pemaju, Apple juga memutuskan untuk bergerak ke arah itu dan memudahkan pembelajaran mesin dimasukkan ke dalam aplikasi pihak ketiga.

Core ML adalah baru kepada keluarga SDK Apple, diperkenalkan sebagai sebahagian daripada IOS 11 untuk membolehkan pemaju melaksanakan pelbagai mod pembelajaran mesin dan jenis pembelajaran yang mendalam.

Core ML technology stack source Apple

Pemprosesan Bahasa Semula Jadi (NLP) secara logiknya adalah dalam rangka Core Core bersama dengan dua perpustakaan lain yang berkuasa, Visi dan GameplayKit . Visi memberi pemaju keupayaan untuk memohon pembelajaran mesin untuk penglihatan komputer untuk menyelesaikan perkara seperti mengesan wajah, perkara yang menonjol, atau objek lain, sementara GameplayKit menyediakan pemaju permainan dengan alat untuk pencipta permainan dan ciri permainan khusus.

Dalam tutorial ini, kami akan memberi tumpuan kepada Pemprosesan Bahasa Semula Jadi.

Pemprosesan Bahasa Asli (NLP)

Pemprosesan Bahasa Semulajadi adalah sains yang mampu menganalisis dan memahami teks, melanggar ayat dan perkataan untuk menyelesaikan tugas seperti analisis perasaan, pengekstrakan hubungan, penambahan, meringkaskan teks atau ayat, dan banyak lagi ... Atau dengan kata lain, NLP adalah kemampuan komputer untuk memahami bahasa manusia dalam bentuk lisan atau bertulisnya.

Diagram showing how Natural Language Processing works

Keupayaan untuk mengekstrak dan merumuskan perkataan dan ayat secara konteks membolehkan peningkatan integrasi antara pengguna dan peranti, atau bahkan di antara dua peranti, melalui koleksi kandungan yang bermakna. Kami akan meneroka setiap komponen ini secara terperinci, tetapi pertama sekali adalah penting untuk memahami mengapa anda mahu memohon NLP.

Mengapa Melaksanakan Pemprosesan Bahasa Semula Jadi?

Dengan syarikat-syarikat yang terus bergantung pada penyimpanan dan pemprosesan data yang besar, NLP membolehkan teks penafsiran dan teks yang tidak tersusun bebas, supaya dapat dianalisis. Dengan banyak maklumat yang disimpan dalam fail teks yang tidak tersusun - dalam rekod perubatan, misalnya - NLP boleh menapis data dan memberikan data mengenai konteks, niat, dan juga perasaan.

Selain dapat menganalisa teks lisan dan bertulis, NLP kini menjadi enjin di sebalik bot - dari Slack sehingga anda hampir boleh melakukan perbualan manusia lengkap dengannya, untuk alat perkhidmatan pelanggan. Jika anda pergi ke laman sokongan Apple dan meminta untuk bercakap dengan perkhidmatan pelanggan, anda akan diberi bot web yang akan cuba dan mengarahkan anda ke arah yang betul berdasarkan soalan yang anda tanya. Ini membantu pelanggan berasa difahami dalam masa nyata, tanpa perlu berbicara dengan manusia.

Melihat e-mel spam dan penapis spam, NLP telah memungkinkan untuk memahami teks dengan lebih baik, dan untuk mengklasifikasikan e-mel dengan lebih yakin tentang niat mereka.

Penjumlahan adalah teknik NLP yang penting untuk memberikan analisis perasaan, sesuatu yang ingin digunakan oleh syarikat pada data dari akaun media sosial mereka, untuk mengesan tindak balas dari produk syarikat.

Machine Learning and NLP at work source Apple

Aplikasi Photo pada iOS 11 adalah satu lagi contoh yang baik. Apabila mencari foto, pembelajaran mesin berfungsi pada pelbagai peringkat. Selain menggunakan mesin dan visi untuk mengenali wajah dan jenis foto (iaitu pantai, lokasi), istilah carian ditapis melalui NLP, dan jika anda mencari istilah 'pantai', ini juga akan mencari foto yang mengandungi keterangan 'pantai'. Ini dipanggil lemmatization, dan anda akan mempelajari lebih lanjut mengenai perkara ini di bawah, kerana kami belajar untuk menghargai bagaimana pembelajaran machinel yang hebat, betapa mudahnya Apple membuat aplikasi anda lebih bijak.

Dengan aplikasi anda yang mempunyai pemahaman yang lebih baik mengenainya, sebagai contoh, rentetan carian, ia dapat berinteraksi dengan lebih bijak dengan pengguna, memahami niat di belakang istilah carian dan bukannya mengambil kata itu dalam makna yang tepat. Dengan memupuk perpustakaan NLP Apple, pemaju boleh menyokong pemprosesan teks yang konsisten dan pendekatan pengalaman pengguna di seluruh ekosistem Apple, dari iOS ke macOS, tvOS, dan watchOS.

Dengan pembelajaran mesin yang dijalankan pada peranti, pengguna mendapat manfaat dengan menggunakan peranti CPU dan GPU untuk memberikan kecekapan prestasi dalam pengiraan, daripada mengakses API pembelajaran mesin luaran. Ini membolehkan data pengguna untuk kekal pada peranti dan mengurangkan latensi disebabkan oleh akses rangkaian. Dengan pembelajaran mesin yang memerlukan pengetahuan pengguna yang lebih mendalam untuk menyimpulkan cadangan dan ramalan, keupayaan untuk memasuki pemprosesan ke dalam peranti fizikal, dan menggunakan privasi berlainan untuk aktiviti berkaitan rangkaian, anda boleh memberikan pengalaman pintar tetapi tidak menyerang untuk pengguna anda.

Seterusnya, kami akan melihat enjin Pemprosesan Bahasa Asli Apple

Memperkenalkan tag bahasa NSLinguistic

Kelas asas NSLinguisticTagger memainkan peranan utama dalam menganalisis dan menandakan teks dan ucapan, membahagikan kandungan ke dalam perenggan, ayat dan kata-kata, dan terdiri daripada skim berikut:

NSLinguisticTagger components source Apple

Apabila anda memulakan NSLinguisticTagger , anda meneruskan NSLinguisticTagScheme yang anda berminat untuk menganalisis. Sebagai contoh:

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

Anda kemudian akan menyediakan pelbagai hujah dan sifat, termasuk memasukkan teks input, sebelum menghitung melalui NSLinguisticTagger contoh NSLinguisticTagger , mengeluarkan entiti dan token. Mari kita menyelam dan lihat bagaimana untuk melaksanakan setiap skim, langkah demi langkah, bermula dengan skim pengenalan bahasa.

Pengenalan Bahasa

Jenis pertama skema tag, pengenalan bahasa , cuba mengenal pasti bahasa BCP-47 yang paling menonjol baik pada dokumen, perenggan, atau ayat. Anda boleh mendapatkan semula bahasa ini dengan mengakses kekayaan dominantLanguage dari NSLinguisticTagger contoh NSLinguisticTagger :

Cukup jelas Seterusnya, kami akan melihat klasifikasi teks menggunakan kaedah penyulitan.

Tokenisasi

Tokenisasi adalah proses menentukan sempadan dan mungkin mengelaskan bahagian rentetan aksara masukan. Token yang dihasilkan kemudiannya dikemukakan kepada beberapa bentuk pemprosesan yang lain. (sumber: Wikipedia )

Dengan mengambil blok teks, pengezonan secara logik akan memecah dan mengklasifikasikan teks ke dalam perenggan, ayat, dan perkataan. Kami mulakan dengan menetapkan skema yang sesuai ( .tokenType ) untuk .tokenType . Tidak seperti skim terdahulu, kami menjangkakan banyak hasil, dan kami perlu mengira melalui tag yang kembali, seperti ditunjukkan dalam contoh di bawah:

Sekarang kita mempunyai senarai kata-kata. Tetapi tidak menarik untuk mendapatkan asal perkataan itu? Sebagai contoh, jika pengguna mencari istilah seperti 'walks' atau 'walking', ini akan sangat berguna untuk mendapatkan kata asal, 'berjalan', dan mengklasifikasikan semua permutasi dari 'berjalan' bersama-sama. Ini dipanggil lemmatization, dan kami akan membincangkannya kemudian.

Lemmatization

Lemmatization mengelaskan bentuk perkataan yang dikurangkan untuk dianalisis sebagai satu item, yang membolehkan anda menyimpulkan maksud yang dimaksudkan. Pada dasarnya, semua yang anda perlu ingat adalah bahawa ia datang dari bentuk kamus perkataan.

Mengetahui bentuk kamus perkataan sangat kuat dan membolehkan pengguna anda mencari 'kekaburan' yang lebih besar. Dalam contoh sebelumnya, kami menganggap pengguna yang mencari istilah 'berjalan'. Tanpa lemmatisasi, anda hanya boleh memulihkan sebutan tepat kata itu, tetapi jika anda boleh mempertimbangkan perkataan lain dengan cara yang sama, anda juga boleh mendapatkan hasil yang mengatakan 'berjalan'.

Begitu juga dengan contoh sebelumnya, untuk melakukan lemmatisasi, kami akan menetapkan skema permulaan .lemma kepada .lemma , sebelum mengira tag:

Seterusnya, kami akan melihat sebahagian daripada penandaan ucapan, yang membolehkan kami mengklasifikasikan blok teks sebagai kata nama, kata kerja, kata sifat, atau bahagian lain.

Sebahagian daripada Ucapan (PoS)

Sebahagian daripada penandaan Pertuturan bertujuan untuk menyambungkan bahagian ucapan kepada setiap kata tertentu, berdasarkan takrif perkataan dan konteks (hubungannya dengan kata-kata yang bersebelahan dan yang berkaitan). Sebagai elemen NLP, sebahagian daripada ucapan ucapan membolehkan kita memberi tumpuan kepada kata nama dan kata kerja, yang dapat membantu kita menyimpulkan makna dan makna teks.

Permohonan sebahagian penandaan ucapan melibatkan penetapan sifat .lexicalClass untuk menggunakan .lexicalClass , dan menghitung cara yang sama seperti ditunjukkan dalam contoh terdahulu. Anda akan mendapat pecahan kata-kata anda dengan kata-kata, dengan tag bersekutu untuk setiap, mengklasifikasikan kata-kata sebagai milik kata nama, kata preposisi, kata kerja, kata sifat, atau tekad. Untuk maklumat lanjut mengenai apa ini, lihat dokumentasi Apple yang termasuk Jenis Lexikal .

Proses lain dalam Apple NLP dinamakan Pengiktirafan Entiti, yang mengurus blok teks, mengekstrak jenis entiti tertentu yang kami berminat, seperti nama, lokasi, organisasi, dan orang. Mari lihat yang akan datang.

Pengiktirafan Entiti Dinamakan

Pengiktirafan Entiti yang dinamakan adalah salah satu komponen penandaan klasifikasi NLP terkuat, yang membolehkan anda mengklasifikasikan nama-nama entiti atau objek dunia sebenar dari kalimat anda (iaitu lokasi, orang, nama). Sebagai pengguna iPhone, anda mesti melihat tindakan ini apabila anda menghantar mesej kepada rakan anda, dan anda akan melihat kata kunci tertentu yang diserlahkan, seperti nombor telefon, nama, atau tarikh.

Anda boleh memohon Pengiktirafan Entiti Dinamakan dengan cara yang sama seperti contoh kami yang lain, tetapkan skema tag kepada .nameType , dan ulangi .nameType mengikut julat tertentu.

Seterusnya, anda akan meletakkan apa yang anda pelajari kepada tindakan, dengan aplikasi mudah yang akan menggunakan satu set tweet yang telah ditetapkan, apabila anda memasukkan setiap tweet melalui laluan NLP.

Melaksanakan Pemprosesan Bahasa Semula Jadi

Untuk mendapatkan semua yang dilakukan, kami akan melihat aplikasi klien Twitter mudah yang mengambil lima tweet dalam paparan jadual dan menggunakan beberapa pemprosesan NLP untuk setiap satu.

Dalam tangkapan skrin berikut, kami menggunakan Pengenalan Entiti Dinamakan NLP untuk menyerlahkan kata kunci entiti merah (organisasi, lokasi, dll.).

Phone screenshot with key words highlighted in red

Teruskan dan klikan projek TwitterNLPContoh dari tutorial repo GitHub dan lihatlah kod. Kelas yang paling kami minati adalah TweetsViewController.swift . Mari lihat pada kaedah tableView(_ tableView: cellForRowAt) .

Untuk setiap sel (tweet), kami memanggil empat kaedah yang akan kami tentukan dalam seketika:

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

Untuk setiap kaedah ini, kita panggil kaedah enumerate , teruskan dalam skema dan label teks untuk mengekstrak teks, seperti yang kita lakukan untuk mengenal pasti bahasa:

Akhir sekali, fungsi enumerate adalah di mana semua tindakan NLP sebenarnya berlaku, mengambil sifat dan argumen berdasarkan jenis pemprosesan NLP yang kita mahu lakukan, dan menyimpan hasil dalam array yang boleh kita gunakan kemudian. Untuk tujuan contoh ini, kita boleh mencetak hasilnya kepada konsol, untuk tujuan pemerhatian.

Untuk .nameType Pengiktirafan .nameType , kami mengambil kata kunci entiti yang kami keluarkan dan memeriksanya untuk menyerlahkan kata-kata yang sepadan dengan entiti. Anda juga boleh mengambil langkah lebih jauh dan membuat pautan ke kata kunci itu - mungkin untuk mencari tweet yang sepadan dengan kata kunci tersebut.

Teruskan dan buat dan jalankan aplikasi itu dan lihat hasilnya, memberi perhatian khusus kepada kata-kata pendek dan entiti yang telah kami diekstrak.

Kesimpulannya

Dari Google menggunakan Pemprosesan Bahasa Asli pada enjin gelintarnya kepada Apple Siri dan messenger Facebook bot, tidak ada keraguan bahawa bidang ini berkembang dengan pesat. Tetapi NLP dan Pembelajaran Mesin bukan lagi domain eksklusif untuk syarikat besar. Dengan memperkenalkan kerangka teras Core pada awal tahun ini, Apple telah memudahkan para pemaju setiap hari tanpa latar belakang pembelajaran yang mendalam untuk dapat menambah kecerdasan kepada aplikasi mereka. Dalam tutorial ini, anda melihat bagaimana dengan beberapa baris kod yang anda boleh menggunakan Core ML untuk menyimpulkan konteks dan tujuan ayat dan perenggan tidak terstruktur, dan mengesan bahasa yang dominan.

Dalam tutorial ini, anda melihat bagaimana dengan beberapa baris kod yang anda boleh menggunakan Core ML untuk menyimpulkan konteks dan tujuan ayat dan perenggan tidak terstruktur, dan mengesan bahasa yang dominan. Kami akan melihat peningkatan yang lebih baik dalam lelaran yang akan datang untuk SDK, tetapi NLP telah berjanji untuk menjadi alat yang hebat yang akan digunakan secara meluas di App Store.

Semasa berada di sini, lihat beberapa jawatan kami yang lain tentang mengembangkan aplikasi iOS dan pembelajaran mesin!

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.