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

Bagaimana membuat kode Natural Language Processing pada Android dengan IBM Watson

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called IBM Watson Machine Learning.
Use Machine Learning to Recognize Images With IBM Watson

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

Berkat gelombang kecerdasan buatan yang meningkat, pengguna akhir-akhir ini mengharapkan aplikasi yang cerdas dan sadar akan konteks penggunaan mereka. IBM Watson menawarkan berbagai layanan yang berhubungan dengan bahasa alami yang dapat Anda gunakan untuk membuat aplikasi semacam itu.

Misalnya, Anda dapat menggunakan layanan Natural Language Understanding  untuk mengekstrak kata kunci, entitas, sentimen, dan banyak detail semantik lainnya dari teks yang dibaca pengguna. Dan jika teks itu ada dalam bahasa asing, Anda dapat menggunakan layanan Penerjemah Bahasa untuk mengidentifikasi bahasa dan menerjemahkannya ke bahasa yang dimengerti oleh pengguna.

Dalam tutorial ini, saya akan memperkenalkan beberapa layanan tersebut kepada Anda dengan menunjukkan kepada Anda cara membuat aplikasi yang dapat menerjemahkan laman web berbahasa Jerman ke bahasa Inggris dan mengekstrak sentimen, entitas penting, dan emosi dari mereka.

Sebelum melanjutkan, saya menyarankan agar Anda membaca tutorial pendahuluan berikut tentang layanan IBM Watson:

Mengaktifkan Layanan

Kita akan bekerja dengan tiga layanan Watson hari ini, dan masing-masing harus diaktifkan secara terpisah. Jadi buka dasbor IBM Bluemix Anda dan tekan tombol Create.

Layanan pertama yang akan kita aktifkan adalah layanan Document Conversion, yang memungkinkan kita untuk mengkonversi dokumen HTML, PDF, dan DOCX menjadi teks biasa atau JSON. Pilih dari katalog, berikan nama yang berarti, dan tekan tombol Create.

Configure Document Conversion service

Selanjutnya, kembali ke katalog dan pilih layanan Language Translator. Language Translator mendukung beberapa bahasa yang banyak digunakan dan dapat, secara default, menangani teks dalam tiga domain: berita, percakapan, dan hak paten.  Sementara dua domain pertama cukup memadai untuk kebanyakan teks, domain terakhir bisa lebih akurat untuk teks yang mengandung banyak istilah teknis atau hukum.

Di halaman konfigurasinya, beri nama layanan yang berarti dan tekan tombol create.

Configuring Language Translator service

Kembali ke katalog dan pilih layanan Natural Language Understanding. Kita akan menggunakan layanan ini untuk mengekstrak sentimen, entitas, dan emosi dari teks yang tidak terstruktur.  Sekali lagi, berikan nama yang berarti di layar konfigurasi dan tekan tombol create.

Configuring Natural Language Understanding service

Jika Anda membuka dasbor sekarang, Anda harus bisa melihat hal seperti ini:

Three active services in the dashboard

Ketiga layanan tersebut memiliki kredensial masuk unik yang terkait dengannya. Anda harus mencatat semuanya karena Anda akan membutuhkannya nanti.  Untuk menentukan kredensial layanan apa pun, pilih di dasbor, buka tab service credentials, dan tekan tombol view credentials.

Setup Proyek

Untuk dapat menggunakan ketiga layanan ini dalam proyek Android Studio, kita harus menambahkan SDK Java Watson sebagai ketergantungan implementasi pada file build.gradle modul aplikasi.

Sebagai tambahan kita akan menggunakan pustaka Fuel sebagai klien HTTP, jadi tambahkan itu sebagai dependensi implementation.

Baik Fuel dan SDK Watson Java bisa bekerja hanya jika aplikasi kita memiliki izin ke INTERNET, maka dari itu tambahkan itu di file manifest.

Selanjutnya, tambahkan tags <string> berisi username dan password dari ketiga layanan ke file strings.xml

Terakhir, untuk menjaga agar kode kita tetap ringkas, dalam tutorial ini kita akan menggunakan Kotlin dan bukan Java, jadi pastikan bahwa Anda telah mengaktifkan dukungan Kotlin.

Menggunakan Layanan Konversi Dokumen

Kita akan menggunakan layanan Konversi Dokumen Watson untuk mengubah halaman web HTML menjadi teks biasa. Untuk mengizinkan pengguna mengetikkan alamat halaman web, tambahkan widget EditText ke layout activity Anda.  Selain itu, sertakan widget TextView untuk menampilkan isi halaman web sebagai teks biasa. Untuk memastikan bahwa isi halaman web yang panjang tidak terpotong, saya sarankan Anda menempatkannya di dalam widget ScrollView.

Pada kode di atas, Anda dapat melihat bahwa atribut imeOptions dari widget EditText diatur ke actionGo. Ini memungkinkan pengguna menekan tombol "Go" di keyboard virtual mereka saat mereka selesai mengetik alamat.  Untuk langsung mendengarkan event ketika tombol itu ditekan, tambahkan kode Kotlin berikut ke metode onCreate() kegiatan Anda:

Di dalam event listener, hal pertama yang perlu kita lakukan adalah menentukan URL yang diketik pengguna. Kita dapat melakukannya dengan mudah dengan mengakses properti text dari widget EditText.  Begitu kita memiliki URL, kita bisa menggunakan metode Fuel's httpGet() untuk mendownload isi halaman web.

Karena kita ingin metode httpGet() dijalankan secara asinkron, kita harus menambahkan sebuah callback ke sistem tersebut dengan menggunakan metode responseString(), yang juga memungkinkan kita memproses konten yang didownload sebagai string.

Sekarang saatnya untuk membuat sebuah instance dari kelas DocumentConversion, yang memiliki semua metode yang kita butuhkan untuk berinteraksi dengan layanan Konversi Dokumen. Konstruktornya mengharapkan tanggal versi beserta kredensial masuk layanan.

SDK Watson Java tidak memungkinkan kita untuk langsung mengirimkan string ke layanan Konversi Dokumen. Ini membutuhkan file objek sebagai gantinya.  Oleh karena itu, mari kita buat file sementara menggunakan metode createTempFile() dari kelas File, dan tulis isi halaman web yang telah kita download dengannya menggunakan metode writeText().

Pada titik ini, kita bisa memanggil metode convertDocumentToText() dan meneruskan file sementara untuk memulai konversi. Metode ini juga mengharapkan tipe MIME dari file sementara, jadi jangan lupa untuk memasukkannya.  Setelah konversi selesai, Anda dapat menampilkan teks biasa dengan hanya menugaskannya ke properti text widget TextView.

Kode berikut menunjukkan cara melakukan konversi di dalam thread baru dan memperbarui TextView di thread UI:

Anda dapat menjalankan aplikasi sekarang dan mengetikkan URL laman web Jerman untuk melihat layanan Konversi Dokumen bekerja.

A German webpage converted to plain text

Menggunakan Layanan Penerjemah Bahasa

Dengan layanan Translator Bahasa, kita sekarang akan mengubah teks biasa, yang berbahasa Jerman, ke bahasa Inggris.

Alih-alih memperbarui layout kita, untuk memungkinkan pengguna memulai terjemahan secara manual, marilah kita menambahkan sebuah menu ke activity kita. Untuk melakukannya, mulailah dengan membuat file sumber daya menu baru dan menambahkan kode berikut ke dalamnya:

Seperti yang dapat Anda lihat, kode di atas membuat menu dengan dua pilihan: translate and analyse. Pada langkah ini, kita akan bekerja dengan pilihan pertama saja.

Untuk membuat menu, kita harus memasukannya di dalam metode onCreateOptionsMenu() aktivitas kita.

Dengan meng-override metode onOptionsItemSelected(), kita dapat mengetahui kapan pengguna menggunakan menu. Selanjutnya, kita bisa menentukan item mana yang ditekan pengguna dengan memeriksa itemId. Kode berikut memeriksa apakah pengguna memilih opsi translasi.

Sama seperti Document Service, layanan Language Translator juga memiliki kelas khusus yang memungkinkan kita untuk berinteraksi dengannya.  Seperti yang bisa Anda tebak, ini disebut LanguageTranslator. Untuk membuat instance dari kelas, kita hanya perlu mengirimkan kredensial masuk layanan ke konstruktornya.

Kelas memiliki metode translate() yang bisa kita gunakan untuk menerjemahkan teks bahasa Jerman kita ke bahasa Inggris. Sebagai argumennya, teks tersebut diharapkan diterjemahkan sebagai string, bahasa teks saat ini, dan bahasa yang diinginkan.

Setelah terjemahan selesai dengan sukses, kita akan memiliki akses ke objek TranslationResult, yang properti FirstTranslation berisi teks terjemahannya.

Kode berikut menunjukkan cara melakukan terjemahan dan memberikan hasilnya di widget TextView.

Sekarang Anda dapat menjalankan aplikasi lagi, ketik URL laman web Jerman, dan gunakan menu untuk menerjemahkan isinya ke bahasa Inggris.

Text in German translated to English

Menggunakan Layanan Pengenalan Bahasa Alami

Akhirnya, untuk melakukan analisis semantik pada teks terjemahan dan ekstrak berbagai rincian penting darinya, kita dapat menggunakan kelas NaturalLanguageUnderstanding, yang berfungsi sebagai klien untuk layanan Pengenalan Bahasa Alami.

Kode berikut menunjukkan cara menginisialisasi klien hanya saat pengguna menekan opsi kedua dari menu yang kita buat pada langkah sebelumnya:

Dibandingkan dengan layanan yang berhubungan dengan bahasa alami lainnya, menggunakan layanan Pengenalan Bahasa Alami perlu banyak hal yang terlibat, terutama karena memiliki sejumlah fitur yang sangat banyak.

Untuk saat ini, katakanlah kita ingin menentukan keseluruhan sentimen dari teks terjemahan, dan ekstrak semua entitas besar yang disebutkannya. Setiap entitas itu sendiri dapat memiliki emosi dan sentimen yang terkait dengannya, jadi katakanlah kita juga ingin mengekstraknya.

Untuk memberi tahu layanan bahwa kita ingin mengekstrak semua entitas dan emosi serta sentimen yang terkait dengannya, kita memerlukan objek EntitasOptions, yang dapat dibuat menggunakan kelas EntitiesOptions.Builder.

Demikian pula, untuk memberi tahu layanan bahwa kita menginginkan keseluruhan sentimen teks, kita memerlukan objek SentimentOptions.

Objek SentimentOptions and EntitiesOptions sekarang harus digabungkan untuk membentuk objek Features, yang dapat digunakan untuk menyusun objek AnalyzeOptions. Objek AnalyzeOptions adalah yang paling penting dari semua objek di atas karena di situlah Anda menentukan teks yang ingin Anda analisis.

Setelah objek AnalyzeOptions siap, kita bisa mengirimkannya ke metode analisis() untuk memulai proses analisis.

Hasil analisis adalah objek AnalysisResults, berisi semua informasi yang kita minta.

Untuk menentukan keseluruhan sentimen teks, pertama-tama kita harus mengekstrak keseluruhan skor sentimen menggunakan properti sentiment.document.score.  Nilai sentimen tidak lain hanyalah angka floating-point. Jika nol, sentimennya netral. Jika negatif atau positif, sentimen juga negatif atau positif.

Selanjutnya, dengan melakukan pengulangan pada daftar entities yang ada di objek AnalysisResults, kita dapat memproses setiap entitas secara terpisah. Secara default, setiap entitas memiliki tipe yang terkait dengannya.  Misalnya, layanan dapat mengetahui apakah suatu entitas adalah seseorang, perusahaan, atau kendaraan. Saat ini, dapat mengidentifikasi lebih dari 450 jenis entitas yang berbeda.

Karena kita meminta mereka, masing-masing entitas sekarang juga akan memiliki skor sentimen dan emosi yang terkait dengannya.

Kita bisa menentukan skor sentimen dengan hanya menggunakan properti sentiment.score. Menentukan emosi yang terkait dengan entitas, bagaimanapun, tidak begitu mudah.  Watson mendukung lima emosi saat ini: kemarahan, sukacita, jijik, ketakutan, dan kesedihan. Setiap entitas akan memiliki semua lima emosi, namun nilai yang berbeda terkait dengan masing-masing, menentukan seberapa yakin layanannya bahwa emosinya benar.  Karena itu, untuk menentukan emosi yang tepat, kita harus memilih salah satu dengan nilai yang tertinggi.

Kode berikut mencantumkan setiap entitas beserta jenis, skor sentimen, dan emosinya:

Untuk menampilkan output yang dihasilkan, kita bisa mengupdate widget TextView lagi.

Pada titik ini, Anda dapat menjalankan aplikasi lagi untuk melihat ketiga layanan bekerja sama.

Results of semantic analysis

Kesimpulan

Anda sekarang tahu bagaimana menggunakan tiga layanan berbahasa alami yang paling banyak digunakan yang ditawarkan Watson. Dalam tutorial ini, Anda juga melihat betapa mudahnya menggunakan SDK Java Watson untuk membuat semua layanan bekerja sama untuk menciptakan aplikasi Android yang cerdas.

Untuk mempelajari lebih lanjut tentang layanan dan SDK, Anda dapat melihat ke repositori GitHub SDK. Dan untuk mempelajari lebih lanjut tentang penggunaan mesin Watson di aplikasi Anda sendiri, lihat beberapa tulisan kami yang lain di sini di Envato Tuts+!

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.