Komponen ALokasi Dirichlet Laten

Artikel ini menjelaskan cara menggunakan komponen Alokasi Dirichlet Laten di perancang Azure Machine Learning, untuk mengelompokkan teks yang tidak diklasifikasikan ke dalam kategori.

Alokasi Dirichlet Laten (LDA) sering digunakan dalam pemrosesan bahasa alami untuk menemukan teks yang serupa. Istilah umum lainnya adalah pemodelan topik.

Komponen ini mengambil kolom teks dan menghasilkan output ini:

  • Teks sumber, bersama dengan skor untuk setiap kategori

  • Matriks fitur yang berisi istilah dan koefisien yang diekstraksi untuk setiap kategori

  • Perubahan, yang dapat Anda simpan dan terapkan kembali ke teks baru yang digunakan sebagai input

Komponen ini menggunakan pustaka scikit-learn. Untuk informasi lebih lanjut tentang scikit-learn, lihat repositori GitHub, yang mencakup tutorial dan penjelasan algoritma.

Lebih lanjut tentang Alokasi Dirichlet Laten

LDA umumnya bukan metode untuk klasifikasi. Namun LDA menggunakan pendekatan generatif, sehingga Anda tidak perlu memberikan label kelas yang dikenal dan kemudian menyimpulkan polanya. Sebaliknya, algoritma menghasilkan model probabilistik yang digunakan untuk mengidentifikasi kelompok topik. Anda dapat menggunakan model probabilistik untuk mengklasifikasikan kasus pelatihan yang ada atau kasus baru yang Anda berikan kepada model sebagai input.

Anda mungkin lebih suka model generatif karena menghindari membuat asumsi yang kuat tentang hubungan antara teks dan kategori. Model ini hanya menggunakan distribusi kata-kata untuk topik model matematis.

Teori ini dibahas dalam makalah ini, tersedia sebagai unduhan PDF: Alokasi Dirichlet Laten: Blei, Ng, dan Jordan.

Implementasi dalam komponen ini didasarkan pada pustaka scikit-learn untuk LDA.

Untuk informasi lebih lanjut, lihat bagian Catatan teknis.

Cara mengonfigurasi Alokasi Dirichlet Laten

Komponen ini memerlukan himpunan data yang berisi kolom teks, baik mentah atau diproses sebelumnya.

  1. Tambahkan komponen Alokasi Dirichlet Laten ke alur Anda.

    Dalam daftar aset di bawah Analitik Teks, seret dan lepas komponen Alokasi Dirichlet Laten ke kanvas.

  2. Sebagai input untuk komponen, berikan himpunan data yang berisi satu atau beberapa kolom teks.

  3. Untuk kolom Target, pilih satu atau beberapa kolom yang berisi teks untuk dianalisis.

    Anda bisa memilih beberapa kolom, tetapi harus dari jenis data string.

    Karena LDA membuat matriks fitur besar dari teks, sebaiknya analisis satu kolom teks.

  4. Untuk Jumlah topik yang akan dimodelkan, masukkan bilangan bulat antara 1 dan 1000 yang menunjukkan berapa banyak kategori atau topik yang ingin Anda peroleh dari teks input.

    Secara default, 5 topik dibuat.

  5. Untuk N-gram, tentukan panjang maksimum N-gram yang dihasilkan selama hashing.

    Defaultnya adalah 2, yang berarti bahwa bigram dan unigram dihasilkan.

  6. Pilih opsi Normalisasi untuk mengonversi nilai output menjadi probabilitas.

    Alih-alih mewakili nilai yang diubah sebagai bilangan bulat, nilai dalam output dan himpunan data fitur akan diubah sebagai berikut:

    • Nilai dalam himpunan data akan direpresentasikan sebagai peluang di mana P(topic|document).

    • Nilai dalam matriks topik fitur akan direpresentasikan sebagai peluang di mana P(word|topic).

    Catatan

    Di perancang Azure Machine Learning, pustaka scikit-learn tidak lagi mendukung output doc_topic_distr yang tidak dinormalisasi dari versi 0.19. Dalam komponen ini, parameter Normalisasi hanya dapat diterapkan untuk menampilkan output matriks Topik fitur. Output himpunan data yang diubah selalu dinormalisasi.

  7. Pilih opsi Perlihatkan semua opsi, lalu atur ke TRUE jika Anda ingin mengatur parameter tingkat lanjut berikut.

    Parameter ini khusus untuk implementasi LDA scikit-learn. Ada beberapa tutorial yang baik tentang LDA di scikit-learn, serta dokumen scikit-learn resmi.

    • Parameter Rho. Berikan peluang sebelumnya untuk ketersebaran distribusi topik. Parameter ini sesuai dengan parameter topic_word_prior sklearn. Gunakan nilai 1 jika Anda mengharapkan distribusi kata-kata datar; yaitu, semua kata diasumsikan setara. Jika menurut Anda sebagian besar kata muncul tersebar, Anda mungkin mengaturnya ke nilai yang lebih rendah.

    • Parameter alfa. Tentukan peluang sebelumnya untuk ketersebaran bobot topik per dokumen. Parameter ini sesuai dengan parameter doc_topic_prior sklearn.

    • Estimasi jumlah dokumen. Masukkan angka yang menunjukkan perkiraan terbaik Anda tentang jumlah dokumen (baris) yang akan diproses. Parameter ini memungkinkan komponen mengalokasikan tabel hash dengan ukuran yang cukup. Parameter ini sesuai dengan parameter total_samples dalam scikit-learn.

    • Ukuran batch. Masukkan angka yang menunjukkan berapa banyak baris yang akan disertakan dalam setiap batch teks yang dikirim ke model LDA. Parameter ini sesuai dengan parameter batch_size dalam scikit-learn.

    • Nilai awal perulangan yang digunakan dalam jadwal pembaruan pembelajaran. Tentukan nilai awal yang menurunkan nilai pembelajaran untuk perulangan awal dalam pembelajaran online. Parameter ini sesuai dengan parameter learning_offset dalam scikit-learn.

    • Daya diterapkan ke perulangan selama pembaruan. Menunjukkan tingkat daya yang diterapkan pada jumlah perulangan untuk mengontrol tingkat pembelajaran selama pembaruan online. Parameter ini sesuai dengan parameter learning_decay dalam scikit-learn.

    • Jumlah lintasan data. Tentukan berapa kali algoritma akan menggilir data. Parameter ini sesuai dengan parameter max_iter dalam scikit-learn.

  8. Pilih opsi Bangun kamus ngram atau Bangun kamus ngram sebelum LDA, jika Anda ingin membuat daftar n-gram dalam lintasan awal sebelum mengklasifikasikan teks.

    Jika Anda membuat kamus awal sebelumnya, Anda nantinya dapat menggunakan kamus saat meninjau model. Mampu memetakan hasil ke teks daripada indeks numerik umumnya lebih mudah untuk interpretasi. Namun, menyimpan kamus akan memakan waktu lebih lama dan menggunakan penyimpanan tambahan.

  9. Untuk Ukuran maksimum kamus ngram, masukkan jumlah total baris yang dapat dibuat dalam kamus n-gram.

    Opsi ini berguna untuk mengontrol ukuran kamus. Tetapi jika jumlah ngram dalam input melebihi ukuran ini, tabrakan dapat terjadi.

  10. Kirimkan alur. Komponen LDA menggunakan teorema Bayes untuk menentukan topik apa yang mungkin terkait dengan kata-kata individual. Kata-kata tidak secara eksklusif dikaitkan dengan topik atau grup apa pun. Sebaliknya, setiap n-gram memiliki peluang yang dipelajari untuk dikaitkan dengan salah satu kelas yang ditemukan.

Hasil

Komponen ini memiliki dua output:

  • Himpunan data yang diubah: Output ini berisi teks input, jumlah kategori yang ditemukan yang ditentukan, dan skor untuk setiap contoh teks untuk setiap kategori.

  • Matriks topik fitur: Kolom paling kiri berisi fitur teks yang diekstrak. Kolom untuk setiap kategori berisi skor untuk fitur tersebut dalam kategori tersebut.

Perubahan LDA

Komponen ini juga menghasilkan transformasi LDA yang menerapkan LDA ke himpunan data.

Anda dapat menyimpan perubahan ini dan menggunakannya kembali untuk himpunan data lainnya. Teknik ini mungkin berguna jika Anda telah dilatih pada korpus besar dan ingin menggunakan kembali koefisien atau kategori.

Untuk menggunakan kembali transformasi ini, pilih ikon Daftarkan himpunan data di panel kanan komponen Alokasi Dirichlet Laten untuk menyimpan komponen di bawah kategori Himpunan Data dalam daftar komponen. Kemudian Anda dapat menyambungkan komponen ke komponen Terapkan Transformasi untuk menggunakan kembali transformasi ini.

Menyempurnakan model atau hasil LDA

Biasanya, Anda tidak dapat membuat model LDA tunggal yang akan memenuhi semua kebutuhan. Bahkan model yang dirancang untuk satu tugas mungkin memerlukan banyak perulangan untuk meningkatkan akurasi. Sebaiknya coba semua metode ini untuk meningkatkan model Anda:

  • Mengubah parameter model
  • Menggunakan visualisasi untuk memahami hasilnya
  • Mendapatkan umpan balik dari pakar materi subjek untuk menentukan apakah topik yang dihasilkan bermanfaat

Tindakan kualitatif juga dapat berguna untuk menilai hasilnya. Untuk mengevaluasi hasil pemodelan topik, pertimbangkan:

  • Akurasi. Apakah item serupa benar-benar mirip?
  • Keragaman. Dapatkah model mendiskriminasi antara item serupa ketika diperlukan untuk masalah bisnis?
  • Skalabilitas. Apakah hasilnya akan bekerja pada berbagai kategori teks atau hanya pada domain target yang sempit?

Anda dapat meningkatkan akurasi model berdasarkan LDA dengan menggunakan pemrosesan bahasa alami untuk membersihkan, meringkas dan menyederhanakan, atau mengkategorikan teks. Misalnya, teknik berikut, yang semuanya didukung di Azure Machine Learning, dapat meningkatkan akurasi klasifikasi:

  • Menghentikan penghapusan kata

  • Normalisasi kasus

  • Lemmatisasi atau stemming

  • Pengenalan entitas karakter

Untuk informasi selengkapnya, lihat Teks Pra-proses.

Di perancang, Anda juga dapat menggunakan pustaka R atau Python untuk pemrosesan teks: Jalankan Skrip R, Jalankan Skrip Python.

Catatan teknis

Bagian ini berisi detail implementasi, tips, dan jawaban atas pertanyaan yang sering diajukan.

Detail implementasi

Secara default, distribusi output untuk himpunan data yang diubah dan matriks topik fitur dinormalisasi sebagai probabilitas:

  • Himpunan data yang diubah dinormalisasi sebagai peluang kondisional dari topik yang diberikan dokumen. Dalam kasus ini, jumlah setiap baris sama dengan 1.

  • Matriks topik fitur dinormalisasi sebagai peluang kondisional dari kata-kata yang diberikan topik. Dalam kasus ini, jumlah setiap kolom sama dengan 1.

Tip

Terkadang komponen mungkin mengembalikan topik kosong. Paling sering, penyebabnya adalah inisialisasi algoritma acak semu. Jika ini terjadi, Anda dapat mencoba mengubah parameter terkait. Misalnya, ubah ukuran maksimum kamus N-gram atau jumlah bit yang digunakan untuk hashing fitur.

LDA dan pemodelan topik

Alokasi Dirichlet Laten sering digunakan untuk pemodelan topik berbasis konten, yang pada dasarnya berarti kategori pembelajaran dari teks yang tidak diklasifikasikan. Dalam pemodelan topik berbasis konten, topiknya adalah distribusi melalui kata-kata.

Misalnya, asumsikan bahwa Anda telah memberikan korpus ulasan pelanggan yang mencakup banyak produk. Teks ulasan yang telah dikirimkan oleh pelanggan dari waktu ke waktu berisi banyak istilah, beberapa di antaranya digunakan dalam beberapa topik.

Topik yang diidentifikasi proses LDA mungkin mewakili ulasan untuk produk individual, atau mungkin mewakili sekelompok ulasan produk. Bagi LDA, topik itu sendiri hanyalah distribusi peluang dari waktu ke waktu untuk kumpulan kata-kata.

Istilah jarang eksklusif untuk satu produk. Istilah dapat merujuk pada produk lain, atau istilah umum yang berlaku untuk semuanya ("bagus", "buruk"). Istilah lain mungkin merupakan kata tidak penting. Namun, metode LDA tidak mencoba untuk menangkap semua kata di alam semesta atau untuk memahami bagaimana kata-kata berkaitan, selain dari kemungkinan kemunculan bersama. Metode ini hanya dapat mengelompokkan kata-kata yang digunakan dalam domain target.

Setelah indeks istilah dihitung, ukuran kesamaan berbasis jarak membandingkan baris teks individu untuk menentukan apakah dua bagian teks serupa. Misalnya, Anda mungkin menemukan bahwa produk memiliki beberapa nama memiliki korelasi yang kuat. Atau, Anda mungkin menemukan bahwa istilah yang sangat negatif biasanya dikaitkan dengan produk tertentu. Anda dapat menggunakan ukuran kesamaan baik untuk mengidentifikasi istilah terkait dan membuat rekomendasi.

Parameter komponen

Nama Jenis Rentang Opsional Default Deskripsi
Kolom target Pilihan Kolom Diperlukan StringFeature Nama atau indeks kolom target.
Jumlah topik untuk dimodelkan Bilangan bulat [1;1000] Diperlukan 5 Model distribusi dokumen terhadap topik N.
N-gram Bilangan bulat [1;10] Diperlukan 2 Urutan N-gram yang dihasilkan selama hashing.
Menormalkan Boolean True atau False Diperlukan true Menormalkan output ke peluang. Himpunan data yang diubah akan menjadi P(topic|document) dan matriks topik fitur akan menjadi P(word|topic).
Lihat semua opsi Boolean True atau False Diperlukan False Menyajikan parameter tambahan khusus untuk LDA online scikit-learn.
Parameter Rho Float [0.00001;1.0] Berlaku saat kotak centang Perlihatkan semua opsi dipilih 0.01 Distribusi kata topik sebelumnya.
Parameter alfa Float [0.00001;1.0] Berlaku saat kotak centang Perlihatkan semua opsi dipilih 0.01 Distribusi topik dokumen sebelumnya.
Estimasi jumlah dokumen Bilangan bulat [1;int. MaxValue] Berlaku saat kotak centang Perlihatkan semua opsi dipilih 1000 Estimasi jumlah dokumen. Sesuai dengan parameter total_samples.
Ukuran batch Bilangan bulat [1;1024] Berlaku saat kotak centang Perlihatkan semua opsi dipilih 32 Ukuran batch.
Nilai awal perulangan yang digunakan dalam jadwal pembaruan tingkat pembelajaran Bilangan bulat [0;int.MaxValue] Berlaku saat kotak centang Perlihatkan semua opsi dipilih 0 Nilai awal yang menurunkan tingkat pembelajaran untuk perulangan awal. Sesuai dengan parameter learning_offset.
Daya diterapkan ke perulangan selama pembaruan Float [0.0;1.0] Berlaku saat kotak centang Perlihatkan semua opsi dipilih 0.5 Daya diterapkan ke jumlah perulangan untuk mengontrol tingkat pembelajaran. Sesuai dengan parameter learning_decay.
Jumlah perulangan pelatihan Bilangan bulat [1;1024] Berlaku saat kotak centang Perlihatkan semua opsi dipilih 25 Jumlah perulangan pelatihan.
Menyusun kamus ngram Boolean True atau False Berlaku saat kotak centang Perlihatkan semua opsitidak dipilih True Menyusun kamus ngram sebelum menghitung LDA. Berguna untuk inspeksi dan interpretasi model.
Ukuran maksimum kamus ngram Bilangan bulat [1;int. MaxValue] Berlaku saat opsi Menyusun kamus ngram adalah True 20000 Ukuran maksimum kamus ngram. Tetapi jika jumlah token dalam input melebihi ukuran ini, tabrakan dapat terjadi.
Jumlah bit yang digunakan untuk hashing fitur. Bilangan bulat [1;31] Berlaku saat kotak centang Perlihatkan semua opsitidak dipilih dan Menyusun kamus ngram adalah False 12 Jumlah bit yang digunakan untuk hashing fitur.
Menyusun kamus ngram sebelum LDA Boolean True atau False Berlaku saat kotak centang Perlihatkan semua opsi dipilih True Menyusun kamus ngram sebelum LDA. Berguna untuk inspeksi dan interpretasi model.
Jumlah maksimum ngram dalam kamus Bilangan bulat [1;int. MaxValue] Berlaku saat kotak centang Perlihatkan semua opsi dipilih dan opsi Menyusun kamus ngram adalah True 20000 Ukuran maksimum kamus. Tetapi jika jumlah token dalam input melebihi ukuran ini, tabrakan dapat terjadi.
Jumlah bit hash Bilangan bulat [1;31] Berlaku saat kotak centang Perlihatkan semua opsi dipilih dan opsi Menyusun kamus ngram adalah False 12 Jumlah bit yang digunakan selama hashing fitur.

Langkah berikutnya

Lihat kumpulan komponen yang tersedia untuk Azure Machine Learning.

Untuk daftar kesalahan khusus untuk komponen, lihat Pengecualian dan kode kesalahan untuk perancang.