Enkode properti teks multibahasa di Amazon Neptune untuk melatih model prediktif Intelijen Data PlatoBlockchain. Pencarian Vertikal. Ai.

Enkode properti teks multibahasa di Amazon Neptune untuk melatih model prediktif

Amazon Neptunus ML adalah kemampuan pembelajaran mesin (ML) dari Amazon Neptunus yang membantu Anda membuat prediksi yang akurat dan cepat pada data grafik Anda. Di bawah tenda, Neptune ML menggunakan Graph Neural Networks (GNNs) untuk secara bersamaan memanfaatkan struktur grafik dan properti node/edge untuk menyelesaikan tugas yang ada. Metode tradisional hanya menggunakan properti dan tanpa struktur grafik (misalnya, XGBoost, Neural Networks), atau hanya menggunakan struktur grafik dan tanpa properti (misalnya, node2vec, Label Propagation). Untuk memanipulasi properti node/edge dengan lebih baik, algoritme ML mengharuskan data menjadi data numerik yang berperilaku baik, tetapi data mentah dalam database dapat memiliki tipe lain, seperti teks mentah. Untuk memanfaatkan jenis data lain ini, kami memerlukan langkah pemrosesan khusus yang mengubahnya dari jenis aslinya menjadi data numerik, dan kualitas hasil ML sangat bergantung pada kualitas transformasi data ini. Teks mentah, seperti kalimat, adalah salah satu jenis yang paling sulit untuk diubah, tetapi kemajuan terbaru di bidang Pemrosesan Bahasa Alami (NLP) telah menghasilkan metode kuat yang dapat menangani teks yang berasal dari berbagai bahasa dan panjang yang beragam.

Dimulai dengan versi 1.1.0.0, Neptune ML mendukung beberapa encoder teks (teks_teks cepat, teks_sbert, teks_kata2vec, dan teks_tfidf), yang membawa manfaat kemajuan terbaru dalam NLP dan memungkinkan dukungan untuk properti teks multi-bahasa serta persyaratan inferensi tambahan seputar bahasa dan panjang teks. Misalnya, dalam kasus penggunaan rekomendasi pekerjaan, posting pekerjaan di negara yang berbeda dapat dijelaskan dalam bahasa yang berbeda dan panjang deskripsi pekerjaan sangat bervariasi. Selain itu, Neptunus ML mendukung dan mobil opsi yang secara otomatis memilih metode pengkodean terbaik berdasarkan karakteristik fitur teks dalam data.

Dalam posting ini, kami mengilustrasikan penggunaan setiap encoder teks, membandingkan kelebihan dan kekurangannya, dan menunjukkan contoh bagaimana memilih encoder teks yang tepat untuk tugas rekomendasi pekerjaan.

Apa itu penyandi teks?

Tujuan pengkodean teks adalah untuk mengubah properti tepi/simpul berbasis teks di Neptunus menjadi vektor ukuran tetap untuk digunakan dalam model pembelajaran mesin hilir baik untuk klasifikasi simpul atau tugas prediksi tautan. Panjang fitur teks dapat sangat bervariasi. Ini bisa berupa kata, frasa, kalimat, paragraf, atau bahkan dokumen dengan beberapa kalimat (ukuran maksimum satu properti adalah 55 MB di Neptunus). Selain itu, fitur teks bisa dalam bahasa yang berbeda. Mungkin juga ada kalimat yang mengandung kata-kata dalam beberapa bahasa yang berbeda, yang kami definisikan sebagai alih kode.

Dimulai dengan rilis 1.1.0.0, Neptune ML memungkinkan Anda memilih dari beberapa pembuat enkode teks yang berbeda. Setiap encoder bekerja sedikit berbeda, tetapi memiliki tujuan yang sama untuk mengubah bidang nilai teks dari Neptunus menjadi vektor ukuran tetap yang kami gunakan untuk membangun model GNN kami menggunakan Neptune ML. Encoder baru adalah sebagai berikut:

  • teks_teks cepat (baru) โ€“ Kegunaan teks cepat pengkodean. FastText adalah perpustakaan untuk pembelajaran representasi teks yang efisien. text_fasttext direkomendasikan untuk fitur yang menggunakan satu dan hanya satu dari lima bahasa yang didukung fastText (Inggris, Cina, Hindi, Spanyol, dan Prancis). Itu text_fasttext metode opsional dapat mengambil max_length bidang, yang menentukan jumlah maksimum token dalam nilai properti teks yang akan dikodekan, setelah string dipotong. Anda dapat menganggap token sebagai sebuah kata. Ini dapat meningkatkan kinerja ketika nilai properti teks berisi string panjang, karena jika max_length tidak ditentukan, fastText mengkodekan semua token terlepas dari panjang string.
  • teks_sbert (baru) โ€“ Menggunakan Kalimat BERT (SBERT) metode pengkodean. SBERT merupakan salah satu metode penyisipan kalimat dengan menggunakan model pembelajaran representasi kontekstual BERT-Networks. text_sbert direkomendasikan ketika bahasa tidak didukung oleh text_fasttext. Neptunus mendukung dua metode SBERT: text_sbert128, yang merupakan default jika Anda hanya menentukan text_sbert, dan text_sbert512. Perbedaan di antara mereka adalah jumlah maksimum token dalam properti teks yang dikodekan. Itu text_sbert128 pengkodean hanya mengkodekan 128 token pertama, sedangkan text_sbert512 mengkodekan hingga 512 token. Akibatnya, menggunakan text_sbert512 dapat membutuhkan lebih banyak waktu pemrosesan daripada text_sbert128. Kedua metode lebih lambat dari text_fasttext.
  • teks_kata2vec - Kegunaan Kata2Vec algoritma awalnya diterbitkan oleh Google untuk menyandikan teks. Word2Vec hanya mendukung bahasa Inggris.
  • teks_tfidf โ€“ Menggunakan istilah frekuensi terbalik dokumen frekuensi (TF-IDF) vectorizer untuk menyandikan teks. Pengkodean TF-IDF mendukung fitur statistik yang tidak dimiliki pengkodean lainnya. Ini mengukur pentingnya atau relevansi kata-kata dalam satu properti node di antara semua node lainnya.

Perhatikan bahwa text_word2vec dan text_tfidf sebelumnya didukung dan metode baru text_fasttext dan text_sbert direkomendasikan atas metode lama.

Perbandingan encoder teks yang berbeda

Tabel berikut menunjukkan perbandingan mendetail dari semua opsi penyandian teks yang didukung (text_fasttext, text_sbert, dan text_word2vec). text_tfidf bukan metode pengkodean berbasis model, melainkan ukuran berbasis hitungan yang mengevaluasi seberapa relevan token (misalnya, kata) dengan fitur teks di node atau tepi lain, jadi kami tidak menyertakan text_tfidf untuk perbandingan. Kami merekomendasikan menggunakan text_tfidf ketika Anda ingin mengukur pentingnya atau relevansi beberapa kata dalam satu simpul atau properti tepi di antara semua simpul atau properti tepi lainnya.)

. . teks_teks cepat teks_sbert teks_kata2vec
Kemampuan Model Bahasa yang didukung Inggris, Cina, Hindi, Spanyol, dan Prancis Lebih dari 50 bahasa Inggris
Dapat mengkodekan properti teks yang berisi kata-kata dalam bahasa yang berbeda Tidak Yes Tidak
Dukungan panjang maksimum Tidak ada batas panjang maksimum Mengkodekan urutan teks dengan panjang maksimum 128 dan 512 Tidak ada batas panjang maksimum
Biaya Waktu pemuatan Kira-kira 10 detik Kira-kira 2 detik Kira-kira 2 detik
Kesimpulan Cepat Lambat Medium

Perhatikan tips penggunaan berikut:

  • Untuk nilai properti teks dalam bahasa Inggris, Cina, Hindi, Spanyol, dan Prancis, text_fasttext adalah pengkodean yang direkomendasikan. Namun, itu tidak dapat menangani kasus di mana kalimat yang sama mengandung kata-kata dalam lebih dari satu bahasa. Untuk bahasa lain selain lima itu fastText mendukung, menggunakan text_sbert pengkodean.
  • Jika Anda memiliki banyak string teks nilai properti yang lebih panjang dari, misalnya, 120 token, gunakan max_length bidang untuk membatasi jumlah token di setiap string yang text_fasttext mengkodekan.

Untuk meringkas, tergantung pada kasus penggunaan Anda, kami merekomendasikan metode pengkodean berikut:

  • Jika properti teks Anda menggunakan salah satu dari lima bahasa yang didukung, sebaiknya gunakan text_fasttext karena inferensinya yang cepat. text_fasttext adalah pilihan yang direkomendasikan dan Anda juga dapat menggunakan text_sbert dalam dua pengecualian berikut.
  • Jika properti teks Anda dalam bahasa yang berbeda, sebaiknya gunakan text_sbert karena ini satu-satunya metode yang didukung yang dapat mengkodekan properti teks yang berisi kata-kata dalam beberapa bahasa berbeda.
  • Jika properti teks Anda menggunakan satu bahasa yang bukan salah satu dari lima bahasa yang didukung, sebaiknya gunakan text_sbert karena mendukung lebih dari 50 bahasa.
  • Jika panjang rata-rata properti teks Anda lebih dari 128, pertimbangkan untuk menggunakan text_sbert512 or text_fasttext. Kedua metode dapat menggunakan encode urutan teks yang lebih panjang.
  • Jika properti teks Anda hanya dalam bahasa Inggris, Anda dapat menggunakan text_word2vec, tapi kami sarankan menggunakan text_fasttext untuk inferensi cepatnya.

Demo kasus penggunaan: Tugas rekomendasi pekerjaan

Tujuan dari tugas rekomendasi pekerjaan adalah untuk memprediksi pekerjaan apa yang akan dilamar oleh pengguna berdasarkan aplikasi mereka sebelumnya, informasi demografis, dan riwayat pekerjaan. Postingan ini menggunakan kumpulan data Kaggle terbuka. Kami membangun dataset sebagai grafik tipe tiga simpul: pekerjaan, pemakai, dan kota.

Sebuah pekerjaan dicirikan oleh judul, deskripsi, persyaratan, lokasi kota, dan negara bagian. Seorang pengguna dijelaskan dengan properti jurusan, jenis gelar, jumlah riwayat pekerjaan, jumlah total tahun untuk pengalaman kerja, dan banyak lagi. Untuk use case ini, jabatan, deskripsi pekerjaan, persyaratan pekerjaan, dan jurusan semuanya dalam bentuk teks.

Dalam kumpulan data, pengguna memiliki properti berikut:

  • Negara โ€“ Misalnya, CA atau (Cina)
  • Utama โ€“ Misalnya, Manajemen Sumber Daya Manusia atau Lic Cytura Fisica (Spanyol)
  • Tipe Gelar โ€“ Misalnya, Sarjana, Magister, PhD, atau Tidak Ada
  • Hitung Riwayat Pekerjaan โ€“ Misalnya, 0, 1, 16, dan seterusnya
  • TotalTahunPengalaman โ€“ Misalnya, 0.0, 10.0, atau NAN

Pekerjaan memiliki properti berikut:

  • Judul โ€“ Misalnya, Asisten Administrasi atau Lic Cultura Fรญsica (Spanyol).
  • Deskripsi Produk โ€“ Misalnya, โ€œPosisi Asisten Administrasi ini bertanggung jawab untuk melakukan berbagai fungsi pendukung administrasi dan administrasi di bidang komunikasi, โ€ฆโ€ Jumlah rata-rata kata dalam deskripsi adalah sekitar 192.2.
  • Persyaratan โ€“ Misalnya, โ€œPERSYARATAN PEKERJAAN: 1. Perhatian terhadap detail; 2.Kemampuan untuk bekerja di lingkungan yang serba cepat;3.Fakturโ€ฆโ€
  • Negara: โ€“ Misalnya, CA, NY, dan sebagainya.

Jenis simpul kota seperti Washington DC dan Orlando FL hanya memiliki pengenal untuk setiap node. Di bagian berikut, kami menganalisis karakteristik fitur teks yang berbeda dan mengilustrasikan cara memilih penyandi teks yang tepat untuk properti teks yang berbeda.

Bagaimana memilih penyandi teks yang berbeda

Untuk contoh kita, Utama dan Judul properti dalam berbagai bahasa dan memiliki urutan teks pendek, jadi text_sbert direkomendasikan. Contoh kode untuk parameter ekspor adalah sebagai berikut. Untuk text_sbert ketik, tidak ada bidang parameter lain. Di sini kita memilih text_sbert128 selain text_sbert512, karena panjang teks relatif lebih pendek dari 128.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "user",
                "property": "Major",
                "type": "text_sbert128"
            },
            {
                "node": "job",
                "property": "Title",
                "type": "text_sbert128",
            }, ...
        ], ...
    }
}

Grafik Deskripsi Produk dan Persyaratan properti biasanya dalam urutan teks yang panjang. Panjang rata-rata deskripsi adalah sekitar 192 kata, yang lebih panjang dari panjang input maksimum text_sbert (128). Kita bisa menggunakan text_sbert512, tetapi mungkin menghasilkan inferensi yang lebih lambat. Selain itu, teks dalam satu bahasa (Inggris). Oleh karena itu, kami merekomendasikan text_fasttext pada pengatur terkenal. Pengatur ini menawarkan bantuan hukum kepada traderapabila trader berselisih dengan broker yang terdaftar dengan mereka. en nilai bahasa karena inferensinya yang cepat dan panjang input yang tidak terbatas. Contoh kode untuk parameter ekspor adalah sebagai berikut. Itu text_fasttext pengkodean dapat disesuaikan menggunakan bahasa dan panjang maksimal. itu language nilai diperlukan, tetapi max_length bersifat opsional.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "job",
                "property": "Description",
                "type": "text_fasttext",
                "language": "en",
                "max_length": 256
            },
            {
                "node": "job",
                "property": "Requirements",
                "type": "text_fasttext",
                "language": "en"
            }, ...
        ], ...
    }
}

Rincian lebih lanjut dari kasus penggunaan rekomendasi pekerjaan dapat ditemukan di Tutorial buku catatan Neptunus.

Untuk tujuan demonstrasi, kami memilih satu pengguna, yaitu pengguna 443931, yang memegang gelar Master di bidang 'Manajemen dan Sumber Daya Manusia. Pengguna telah melamar ke lima pekerjaan berbeda, berjudul sebagai โ€œManajer Sumber Daya Manusia (SDM)โ€, โ€œGeneralis SDMโ€, โ€œManajer Sumber Daya Manusiaโ€, โ€œAdministrator Sumber Daya Manusiaโ€, dan โ€œSpesialis Penggajian Seniorโ€. Untuk mengevaluasi kinerja tugas rekomendasi, kami menghapus 50% dari pekerjaan yang diterapkan (tepi) pengguna (di sini kami menghapus "Administrator Sumber Daya Manusia" dan "Manajer Sumber Daya Manusia (SDM)) dan mencoba memprediksi posisi teratas 10 pekerjaan yang kemungkinan besar akan dilamar oleh pengguna ini.

Setelah mengkodekan fitur pekerjaan dan fitur pengguna, kami melakukan tugas prediksi tautan dengan melatih model jaringan konvolusi grafik relasional (RGCN). Pelatihan model ML Neptune memerlukan tiga langkah: pemrosesan data, pelatihan model, dan pembuatan titik akhir. Setelah titik akhir inferensi dibuat, kami dapat membuat rekomendasi untuk pengguna 443931. Dari 10 pekerjaan teratas yang diprediksi untuk pengguna 443931 (yaitu, "Generalis SDM", "Manajer Sumber Daya Manusia (SDM)", "Spesialis Penggajian Senior", "Manajer Administrator Sumber Dayaโ€, โ€œAnalis SDMโ€, dkk.), kami mengamati bahwa dua pekerjaan yang dihapus adalah di antara 10 prediksi.

Kesimpulan

Dalam posting ini, kami menunjukkan penggunaan encoder teks yang baru didukung di Neptune ML. Encoder teks ini mudah digunakan dan dapat mendukung banyak persyaratan. Kesimpulan,

  • text_fasttext direkomendasikan untuk fitur yang menggunakan satu dan hanya satu dari lima bahasa yang didukung text_fasttext.
  • text_sbert direkomendasikan untuk teks yang tidak didukung text_fasttext.
  • text_word2vec hanya mendukung bahasa Inggris, dan dapat diganti dengan text_fasttext dalam skenario apa pun.

Untuk detail lebih lanjut tentang solusi, lihat GitHub repo. Sebaiknya gunakan encoder teks pada data grafik Anda untuk memenuhi kebutuhan Anda. Anda cukup memilih nama encoder dan mengatur beberapa atribut encoder, sambil menjaga model GNN tidak berubah.


Tentang penulis

Enkode properti teks multibahasa di Amazon Neptune untuk melatih model prediktif Intelijen Data PlatoBlockchain. Pencarian Vertikal. Ai.Jiani Zhang adalah ilmuwan terapan dari AWS AI Research and Education (AIRE). Dia bekerja untuk memecahkan aplikasi dunia nyata menggunakan algoritme pembelajaran mesin, terutama bahasa alami dan masalah terkait grafik.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS