NLP Dengan Google Cloud Natural Language API
Diterbitkan: 2022-03-11Pemrosesan bahasa alami (NLP), yang merupakan kombinasi dari pembelajaran mesin dan linguistik, telah menjadi salah satu mata pelajaran yang paling banyak diteliti di bidang kecerdasan buatan. Dalam beberapa tahun terakhir, banyak tonggak baru telah dicapai, yang terbaru adalah model GPT-2 OpenAI, yang mampu menghasilkan artikel yang realistis dan koheren tentang topik apa pun dari masukan singkat.
Minat ini didorong oleh banyaknya aplikasi komersial yang telah dibawa ke pasar dalam beberapa tahun terakhir. Kami berbicara dengan asisten rumah kami yang menggunakan NLP untuk menyalin data audio dan untuk memahami pertanyaan dan perintah kami. Semakin banyak perusahaan mengalihkan sebagian besar upaya komunikasi pelanggan ke chatbot otomatis. Pasar online menggunakannya untuk mengidentifikasi ulasan palsu, perusahaan media mengandalkan NLP untuk menulis artikel berita, perusahaan rekrutmen mencocokkan CV dengan posisi, raksasa media sosial secara otomatis menyaring konten kebencian, dan firma hukum menggunakan NLP untuk menganalisis kontrak.
Pelatihan dan penerapan model pembelajaran mesin untuk tugas-tugas seperti ini telah menjadi proses yang kompleks di masa lalu, yang membutuhkan tim ahli dan infrastruktur yang mahal. Tetapi permintaan yang tinggi untuk aplikasi semacam itu telah mendorong penyedia besar untuk mengembangkan layanan terkait NLP, yang sangat mengurangi beban kerja dan biaya infrastruktur. Biaya rata-rata layanan cloud telah turun selama bertahun-tahun, dan tren ini diperkirakan akan terus berlanjut.
Produk yang akan saya perkenalkan dalam artikel ini adalah bagian dari Layanan Google Cloud dan disebut “Google Natural Language API” dan “Google AutoML Natural Language.”
API Bahasa Alami Google
Google Natural Language API adalah antarmuka yang mudah digunakan untuk serangkaian model NLP yang kuat yang telah dilatih sebelumnya oleh Google untuk melakukan berbagai tugas. Karena model-model ini telah dilatih pada kumpulan dokumen yang sangat besar, kinerjanya biasanya cukup baik selama digunakan pada kumpulan data yang tidak menggunakan bahasa yang sangat istimewa.
Keuntungan terbesar menggunakan model pra-pelatihan ini melalui API adalah, tidak diperlukan set data pelatihan. API memungkinkan pengguna untuk segera mulai membuat prediksi, yang bisa sangat berharga dalam situasi di mana sedikit data berlabel tersedia.
Natural Language API terdiri dari lima layanan berbeda:
- Analisis Sintaks
- Analisis Sentimen
- Analisis Entitas
- Analisis Sentimen Entitas
- Klasifikasi Teks
Analisis Sintaks
Untuk teks tertentu, analisis sintaksis Google akan mengembalikan perincian semua kata dengan kumpulan informasi linguistik yang kaya untuk setiap token. Informasi dapat dibagi menjadi dua bagian:
Part of speech: Bagian ini berisi informasi tentang morfologi setiap token. Untuk setiap kata, analisis halus dikembalikan yang berisi jenisnya (kata benda, kata kerja, dll.), jenis kelamin, kasus tata bahasa, tegang, suasana tata bahasa, suara tata bahasa, dan banyak lagi.
Misalnya, untuk kalimat input “Sebuah komputer pernah mengalahkan saya di catur, tetapi tidak cocok untuk saya di kickboxing.” (Emo Philips) analisis part-of-speech adalah:
SEBUAH | tag: DET |
'komputer' | tag: NOUN nomor: TUNGGAL |
'satu kali' | tag: ADV |
'mengalahkan' | tag: KATA KERJA suasana hati: INDICATIVE tense: MASA LALU |
'Aku' | tag: PRON kasus: ACCUSATIVE number: TUNGGAL orang: PERTAMA |
pada | tag: ADP |
'catur' | tag: NOUN nomor: TUNGGAL |
',' | tag: PUNCT |
'tetapi' | tag: CONJ |
'dia' | tag: PRON kasus: NOMINATIVE jenis kelamin: NEUTER nomor: TUNGGAL orang: KETIGA |
'dulu' | tag: KATA KERJA mood: INDICATIVE number: TUNGGAL person: THIRD tense: MASA LALU |
'tidak' | tag: DET |
'cocok' | tag: NOUN nomor: TUNGGAL |
'untuk' | tag: ADP |
'menendang' | tag: NOUN nomor: TUNGGAL |
'tinju' | tag: NOUN nomor: TUNGGAL |
'.' | tag: PUNCT |
Pohon ketergantungan: Bagian kedua dari pengembalian disebut pohon ketergantungan, yang menjelaskan struktur sintaksis setiap kalimat. Diagram berikut dari kutipan Kennedy yang terkenal menunjukkan pohon ketergantungan seperti itu. Untuk setiap kata, panah menunjukkan kata mana yang dimodifikasi olehnya.
Pustaka Python yang umum digunakan nltk dan spaCy berisi fungsionalitas serupa. Kualitas analisis secara konsisten tinggi di ketiga opsi, tetapi Google Natural Language API lebih mudah digunakan. Analisis di atas dapat diperoleh dengan sangat sedikit baris kode (lihat contoh di bawah). Namun, sementara spaCy dan nltk adalah open-source dan oleh karena itu gratis, penggunaan Google Natural Language API membutuhkan biaya setelah sejumlah permintaan gratis tertentu (lihat bagian biaya).
Selain bahasa Inggris, analisis sintaksis mendukung sepuluh bahasa tambahan: Cina (Sederhana), Cina (Tradisional), Prancis, Jerman, Italia, Jepang, Korea, Portugis, Rusia, dan Spanyol .
Analisis Sentimen
Layanan analisis sintaks sebagian besar digunakan di awal alur seseorang untuk membuat fitur yang kemudian dimasukkan ke dalam model pembelajaran mesin. Sebaliknya, layanan analisis sentimen dapat langsung digunakan.
Analisis sentimen Google akan memberikan pendapat emosional yang berlaku dalam teks yang disediakan. API mengembalikan dua nilai: "Skor" menggambarkan kecenderungan emosional teks dari -1 (negatif) ke +1 (positif), dengan 0 menjadi netral.
"Besarnya" mengukur kekuatan emosi.
Mari kita lihat beberapa contoh:
kalimat masukan | Hasil Sentimen | Penafsiran |
Kereta ke London berangkat jam empat | Skor: 0,0 Besaran: 0,0 | Pernyataan yang sepenuhnya netral, yang tidak mengandung emosi sama sekali. |
Posting blog ini bagus. | Skor: 0,7 Besaran: 0,7 | Sentimen positif, tetapi tidak diungkapkan dengan sangat kuat. |
Posting blog ini bagus. Itu sangat membantu. Penulisnya luar biasa. | Skor: 0,7 Besaran: 2,3 | Sentimen yang sama, tetapi diungkapkan jauh lebih kuat. |
Posting blog ini sangat bagus. Penulis ini biasanya penulis yang mengerikan, tapi di sini dia beruntung. | Skor: 0,0 Besaran: 1,6 | Besarnya menunjukkan kepada kita bahwa ada emosi yang diekspresikan dalam teks ini, tetapi sentimen menunjukkan bahwa emosi itu bercampur dan tidak jelas positif atau negatif. |
Model analisis sentimen Google dilatih pada kumpulan data yang sangat besar. Sayangnya, tidak ada informasi tentang struktur detailnya yang tersedia. Saya penasaran dengan kinerjanya di dunia nyata, jadi saya mengujinya di bagian Dataset Ulasan Film Besar, yang dibuat oleh para ilmuwan dari Universitas Stanford pada tahun 2011.
Saya secara acak memilih 500 ulasan film positif dan 500 negatif dari set pengujian dan membandingkan sentimen yang diprediksi dengan label ulasan yang sebenarnya. Matriks kebingungan terlihat seperti ini:
Sentimen Positif | Sentimen Negatif | |
Ulasan yang bagus | 470 | 30 |
Ulasan Buruk | 29 | 471 |
Seperti yang ditunjukkan tabel, modelnya benar sekitar 94% dari waktu untuk ulasan film yang baik dan buruk. Ini bukan kinerja yang buruk untuk solusi out-of-the-box tanpa finetuning untuk masalah yang diberikan.
Catatan: Analisis sentimen tersedia untuk bahasa yang sama dengan analisis sintaks kecuali bahasa Rusia.
Analisis Entitas
Analisis Entitas adalah proses mendeteksi entitas yang dikenal seperti tokoh masyarakat atau landmark dari teks tertentu. Deteksi entitas sangat membantu untuk semua jenis tugas klasifikasi dan pemodelan topik.
Google Natural Language API menyediakan beberapa informasi dasar tentang setiap entitas yang terdeteksi dan bahkan menyediakan tautan ke artikel Wikipedia masing-masing jika ada. Juga, skor arti-penting dihitung. Skor untuk entitas ini memberikan informasi tentang pentingnya atau sentralitas entitas tersebut ke seluruh teks dokumen. Skor yang mendekati 0 kurang menonjol, sedangkan skor yang mendekati 1,0 sangat menonjol.
Saat kami mengirim permintaan ke API dengan contoh kalimat ini: "Robert DeNiro berbicara dengan Martin Scorsese di Hollywood pada Malam Natal pada bulan Desember 2011." Kami menerima hasil sebagai berikut:
Entitas Terdeteksi | informasi tambahan |
Robert De Niro | ketik : PERSON salience : 0.5869118 wikipedia_url : https://en.wikipedia.org/wiki/Robert_De_Niro |
Hollywood | type : LOKASI salience : 0.17918482 wikipedia_url : https://en.wikipedia.org/wiki/Hollywood |
Martin Scorsese | ketik : PENTING LOKASI : 0.17712952 wikipedia_url : https://en.wikipedia.org/wiki/Martin_Scorsese |
malam Natal | ketik : PERSON salience : 0,056773853 wikipedia_url : https://en.wikipedia.org/wiki/Christmas |
Desember 2011 | jenis : TANGGAL Tahun: 2011 Bulan: 12 arti-penting : 0.0 wikipedia_url : - |
2011 | type : NUMBER salience : 0.0 wikipedia_url : - |
Seperti yang Anda lihat, semua entitas diidentifikasi dan diklasifikasikan dengan benar, kecuali 2011 muncul dua kali. Selain bidang dalam output contoh, API analisis entitas juga akan mendeteksi organisasi, karya seni, barang konsumsi, nomor telepon, alamat, dan harga.
Analisis Sentimen Entitas
Jika ada model untuk deteksi entitas dan analisis sentimen, wajar saja untuk melangkah lebih jauh dan menggabungkannya untuk mendeteksi emosi yang berlaku terhadap entitas yang berbeda dalam sebuah teks.
Sementara API Analisis Sentimen menemukan semua tampilan emosi dalam dokumen dan menggabungkannya, Analisis Sentimen Entitas mencoba menemukan ketergantungan antara berbagai bagian dokumen dan entitas yang diidentifikasi, lalu mengaitkan emosi dalam segmen teks ini ke entitas masing-masing.
Misalnya teks opini: “Penulis adalah penulis yang mengerikan. Sebaliknya, pembaca sangat cerdas.” mengarah ke hasil:
Kesatuan | Sentimen |
Pengarang | Arti-penting: 0.8773350715637207 Sentimen: besarnya: 1.899999976158142 skor: -0.8999999761581421 |
pembaca | Arti-penting: 0.08653714507818222 Sentimen: besarnya: 0.8999999761581421 skor: 0.8999999761581421 |
Analisis sentimen entitas sejauh ini hanya berfungsi untuk bahasa Inggris, Jepang, dan Spanyol.
Klasifikasi Teks
Terakhir, Google Natural language API hadir dengan model klasifikasi teks plug-and-play.
Model dilatih untuk mengklasifikasikan dokumen input ke dalam satu set besar kategori. Kategori-kategori tersebut terstruktur secara hierarkis, misalnya Kategori “Hobi & Kenyamanan” memiliki beberapa subkategori, salah satunya adalah “Hobi & Kenyamanan/Luar Ruangan” yang memiliki subkategori seperti “Hobi & Kenyamanan/Luar Ruangan/Memancing”.
Ini adalah contoh teks dari iklan kamera Nikon:
“Sensor format DX 24,2 MP D3500 yang besar menangkap foto dengan detail yang kaya dan film Full HD—bahkan saat Anda memotret dalam cahaya redup. Dikombinasikan dengan kekuatan rendering lensa NIKKOR Anda, Anda dapat mulai membuat potret artistik dengan keburaman latar belakang yang halus. Dengan mudah."

Google API mengembalikan hasilnya:
Kategori | Kepercayaan diri |
Seni & Hiburan/Seni & Desain Visual/Seni Fotografi & Digital | 0,95 |
Hobi & Waktu Luang | 0,94 |
Komputer & Elektronik/Elektronik Konsumen/Peralatan Kamera & Foto | 0,85 |
Ketiga kategori ini masuk akal, meskipun kami secara intuitif akan memberi peringkat entri ketiga lebih tinggi daripada yang kedua. Namun, kita harus mempertimbangkan bahwa segmen masukan ini hanya sebagian kecil dari dokumen iklan kamera lengkap dan kinerja model klasifikasi meningkat dengan panjang teks.
Setelah mencobanya dengan banyak dokumen, saya menemukan hasil model klasifikasi yang bermakna dalam banyak kasus. Namun, seperti semua model lain dari Google Natural Language API, pengklasifikasi hadir sebagai solusi kotak hitam yang tidak dapat dimodifikasi atau bahkan disempurnakan oleh pengguna API. Khususnya dalam hal klasifikasi teks, sebagian besar perusahaan akan memiliki kategori teks sendiri yang berbeda dari kategori model Google dan oleh karena itu, layanan klasifikasi teks Natural Language API mungkin tidak berlaku untuk sebagian besar pengguna.
Keterbatasan lain dari model klasifikasi adalah hanya berfungsi untuk teks bahasa Inggris.
Cara Menggunakan API Bahasa Alami
Keuntungan utama dari Google Natural Language API adalah kemudahan penggunaannya. Tidak diperlukan keterampilan pembelajaran mesin dan hampir tidak ada keterampilan pengkodean. Di situs web Google Cloud, Anda dapat menemukan cuplikan kode untuk memanggil API untuk banyak bahasa.
Misalnya, kode Python untuk memanggil API analisis sentimen sesingkat:
from google.cloud import language_v1 from google.cloud.language_v1 import enums import six def sample_analyze_sentiment(content): client = language_v1.LanguageServiceClient() if isinstance(content, six.binary_type): content = content.decode('utf-8') type_ = enums.Document.Type.PLAIN_TEXT document = {'type': type_, 'content': content} response = client.analyze_sentiment(document) sentiment = response.document_sentiment print('Score: {}'.format(sentiment.score)) print('Magnitude: {}'.format(sentiment.magnitude))
Fungsionalitas API lainnya dipanggil dengan cara yang sama, cukup dengan mengubah client.analyze_sentiment
ke fungsi yang sesuai.
Biaya Keseluruhan dari Google Natural Language API
Google menagih penggunanya berdasarkan permintaan untuk semua layanan Natural Language API. Ini memiliki keuntungan bahwa tidak ada biaya tetap untuk server penerapan apa pun. Kerugiannya adalah bisa menjadi mahal untuk kumpulan data yang sangat besar.
Tabel ini menunjukkan harga (per 1.000 permintaan) tergantung pada jumlah permintaan bulanan:
Jika dokumen memiliki lebih dari 1.000 karakter, itu dihitung sebagai beberapa permintaan. Misalnya, jika Anda ingin menganalisis sentimen 10.000 dokumen, yang masing-masing memiliki 1.500 karakter, Anda akan dikenakan biaya 20.000 permintaan. Karena 5.000 pertama gratis, total biaya akan berjumlah $15. Menganalisis satu juta dokumen dengan ukuran yang sama akan menghabiskan biaya $1.995.
Nyaman, tapi Tidak Fleksibel
Google Natural Language API adalah opsi yang sangat nyaman untuk solusi cepat dan siap pakai. Sangat sedikit pengetahuan teknis dan tidak diperlukan pemahaman tentang model pembelajaran mesin yang mendasarinya.
Kerugian utama adalah ketidakfleksibelannya dan kurangnya akses ke model. Model tidak dapat disetel ke tugas atau kumpulan data tertentu.
Dalam lingkungan dunia nyata, sebagian besar tugas mungkin memerlukan solusi yang lebih disesuaikan daripada yang dapat disediakan oleh fungsi API Bahasa Alami standar.
Untuk skenario ini, Google AutoML Natural Language lebih cocok.
Bahasa Alami Google AutoML
Jika Natural Language API tidak cukup fleksibel untuk tujuan bisnis Anda, maka AutoML Natural Language mungkin merupakan layanan yang tepat. AutoML adalah Layanan Google Cloud baru (masih dalam versi beta) yang memungkinkan pengguna membuat model pembelajaran mesin yang disesuaikan. Berbeda dengan Natural Language API, model AutoML akan dilatih pada data pengguna dan oleh karena itu sesuai dengan tugas tertentu.
Model pembelajaran mesin khusus untuk mengklasifikasikan konten berguna ketika kategori yang telah ditentukan sebelumnya yang tersedia dari Natural Language API terlalu umum atau tidak berlaku untuk kasus penggunaan atau domain pengetahuan spesifik Anda.
Layanan AutoML memerlukan sedikit lebih banyak upaya bagi pengguna, terutama karena Anda harus menyediakan kumpulan data untuk melatih model. Namun, pelatihan dan evaluasi model sepenuhnya otomatis dan tidak diperlukan pengetahuan pembelajaran mesin. Seluruh proses dapat dilakukan tanpa menulis kode apa pun dengan menggunakan konsol Google Cloud. Tentu saja, jika Anda ingin mengotomatiskan langkah-langkah ini, ada dukungan untuk semua bahasa pemrograman umum.
Apa yang Dapat Dilakukan Dengan Bahasa Alami Google AutoML?
Layanan AutoML mencakup tiga kasus penggunaan. Semua kasus penggunaan ini hanya mendukung bahasa Inggris untuk saat ini.
1. Klasifikasi Teks AutoML
Meskipun pengklasifikasi teks dari Natural Language API telah dilatih sebelumnya dan oleh karena itu memiliki kumpulan kategori teks yang tetap, klasifikasi teks AutoML membuat model pembelajaran mesin yang disesuaikan, dengan kategori yang Anda sediakan dalam kumpulan data pelatihan Anda.
2. Analisis Sentimen AutoML
Seperti yang telah kita lihat, analisis sentimen dari Natural Language API bekerja dengan baik dalam kasus penggunaan umum seperti ulasan film. Karena model sentimen dilatih pada korpus yang sangat umum, kinerjanya dapat menurun untuk dokumen yang menggunakan banyak bahasa khusus domain. Dalam situasi ini, Analisis Sentimen AutoML memungkinkan Anda melatih model sentimen yang disesuaikan dengan domain Anda.
3. Ekstraksi Entitas AutoML
Dalam banyak konteks bisnis, ada entitas khusus domain (kontrak hukum, dokumen medis) yang tidak dapat diidentifikasi oleh Natural Language API. Jika Anda memiliki kumpulan data tempat entitas ditandai, Anda dapat melatih ekstraktor entitas model yang disesuaikan dengan AutoML. Jika kumpulan data cukup besar, model ekstraksi entitas yang dilatih juga akan dapat mendeteksi entitas yang sebelumnya tidak terlihat.
Cara Menggunakan Bahasa Alami AutoML
Menggunakan ketiga AutoML adalah proses empat langkah dan sangat mirip untuk ketiga metodologi:
Persiapan Kumpulan Data
Kumpulan data harus dalam format tertentu (CSV atau JSON) dan perlu disimpan dalam keranjang penyimpanan. Untuk model klasifikasi dan sentimen, kumpulan data hanya berisi dua kolom, teks dan label. Untuk model ekstraksi entitas, kumpulan data memerlukan teks dan lokasi semua entitas dalam teks.Pelatihan Model
Pelatihan model sepenuhnya otomatis. Jika tidak ada instruksi yang diberikan sebaliknya, AutoML akan membagi set pelatihan secara otomatis menjadi set pelatihan, pengujian, dan validasi. Pemisahan ini juga dapat diputuskan oleh pengguna, tetapi itulah satu-satunya cara untuk memengaruhi pelatihan model. Sisa pelatihan sepenuhnya otomatis dalam mode kotak hitam.Evaluasi
Saat pelatihan selesai, AutoML akan menampilkan skor presisi dan recall serta matriks konfusi. Sayangnya, sama sekali tidak ada informasi tentang model itu sendiri, sehingga sulit untuk mengidentifikasi alasan model berkinerja buruk.Ramalan
Setelah Anda puas dengan kinerja model, model dapat diterapkan dengan mudah dengan beberapa klik. Proses penyebaran hanya memakan waktu beberapa menit.
Kinerja Model AutoML
Proses pelatihannya cukup lambat, mungkin karena model yang mendasarinya sangat besar. Saya melatih tugas klasifikasi tes kecil dengan 15.000 sampel dan 10 kategori dan pelatihan itu memakan waktu beberapa jam. Contoh dunia nyata dengan kumpulan data yang jauh lebih besar membutuhkan waktu beberapa hari bagi saya.
Meskipun Google tidak mempublikasikan detail apa pun tentang model yang digunakan, dugaan saya adalah bahwa model BERT Google digunakan dengan adaptasi kecil untuk setiap tugas. Penyesuaian model besar seperti BERT adalah proses komputasi yang mahal, terutama ketika banyak validasi silang dilakukan.
Saya menguji model klasifikasi AutoML dalam contoh dunia nyata terhadap model yang saya kembangkan sendiri, yang didasarkan pada BERT. Anehnya, model AutoML berkinerja jauh lebih buruk daripada model saya sendiri, saat dilatih pada data yang sama. AutoML mencapai akurasi 84%, sedangkan model aktif saya mencapai 89%.
Itu berarti meskipun menggunakan AutoML mungkin sangat nyaman, untuk tugas-tugas penting kinerja, masuk akal untuk menginvestasikan waktu dan mengembangkan model sendiri.
Harga AutoML
Harga AutoML untuk prediksi dengan $5 per 1.000 catatan teks jauh lebih mahal daripada Natural Language API. Selain itu, untuk pelatihan model, AutoML mengenakan biaya $3 per jam. Meskipun hal ini pada awalnya dapat diabaikan, untuk kasus penggunaan yang memerlukan pelatihan ulang yang sering, ini dapat menambah jumlah yang cukup besar, terutama karena pelatihan tampaknya cukup lambat.
Mari kita gunakan contoh yang sama seperti untuk Natural Language API:
Anda ingin menganalisis sentimen 10.000 dokumen, yang masing-masing memiliki 1.500 karakter, sehingga Anda akan dikenakan biaya 20.000 permintaan. Katakanlah pelatihan model membutuhkan waktu 20 jam, dengan biaya $48. Prediksi tidak akan dikenakan biaya apa pun, karena 30.000 permintaan pertama gratis. Untuk kumpulan data kecil seperti ini, AutoML sangat ekonomis.
Namun, jika kumpulan data Anda lebih besar dan Anda perlu memprediksi sentimen satu juta dengan ukuran yang sama, biayanya $9.850, yang cukup mahal. Untuk kumpulan data besar seperti ini, masuk akal untuk mengembangkan model Anda sendiri, menerapkannya sendiri tanpa menggunakan AutoML.
Google Natural Language API vs. AutoML Natural Language
Google AutoML Natural Language jauh lebih canggih daripada Natural Language API karena memungkinkan pengguna melatih model yang disesuaikan untuk kumpulan data dan domain spesifik mereka.
Mudah digunakan dan tidak memerlukan pengetahuan pembelajaran mesin. Dua kelemahannya adalah biaya yang lebih tinggi dan kebutuhan untuk menyediakan kumpulan data berkualitas tinggi yang perlu melatih model yang berkinerja baik.
Beta AutoML hanya mendukung tiga tugas NLP untuk saat ini (klasifikasi, analisis sentimen, ekstraksi entitas) dan hanya mendukung dokumen berbahasa Inggris. Ketika layanan ini dirilis sepenuhnya, saya berharap bahasa lain dan tugas NLP akan ditambahkan seiring waktu.