Saya telah membangun beberapa jaringan saraf (MLP (terhubung penuh), Elman (berulang)) untuk tugas yang berbeda, seperti bermain Pong, mengklasifikasikan angka tulisan tangan dan lainnya ...
Selain itu saya mencoba untuk membangun beberapa jaringan saraf convolutional pertama, misalnya untuk mengklasifikasikan catatan tulisan tangan multi-digit, tetapi saya benar-benar baru untuk menganalisis dan mengelompokkan teks, misalnya dalam tugas pengenalan / pengelompokan gambar seseorang dapat mengandalkan input standar, seperti gambar berukuran 25x25, RGB atau skala abu-abu dan sebagainya ... ada banyak fitur pra-asumsi.
Untuk penggalian teks, misalnya artikel berita, Anda memiliki ukuran input yang terus berubah (kata yang berbeda, kalimat berbeda, panjang teks berbeda, ...).
Bagaimana seseorang dapat mengimplementasikan alat penambangan teks modern yang memanfaatkan kecerdasan buatan, lebih disukai jaringan saraf / SOM?
Sayangnya saya tidak dapat menemukan tutorial sederhana untuk memulai. Makalah ilmiah yang kompleks sulit dibaca dan bukan pilihan terbaik untuk mempelajari suatu topik (menurut pendapat saya). Saya sudah membaca beberapa makalah tentang MLP, teknik putus sekolah, jaringan saraf convolutional dan sebagainya, tetapi saya tidak dapat menemukan yang mendasar tentang penambangan teks - semua yang saya temukan adalah tingkat yang terlalu tinggi untuk keterampilan penambangan teks yang sangat terbatas.
Selain LDA Anda dapat menggunakan Analisis Semantik Laten dengan K-Means . Ini bukan jaringan saraf, melainkan "klasik" pengelompokan, tetapi bekerja cukup baik.
Contoh dalam sklearn (diambil dari sini ):
Sekarang label penetapan kluster tersedia di
km.labels_
Sebagai contoh, ini adalah topik yang diambil dari 20 newsgroup dengan LSA:
Anda juga dapat menerapkan Factorisasi Matriks Non-Negatif , yang dapat diartikan sebagai pengelompokan. Yang perlu Anda lakukan adalah mengambil komponen terbesar dari setiap dokumen dalam ruang yang diubah - dan menggunakannya sebagai tugas cluster.
Di sklearn:
sumber
LSA + KMeans berfungsi dengan baik tetapi Anda harus memasukkan jumlah cluster yang Anda harapkan. Apalagi koefisien siluet dari kluster yang ditemukan biasanya rendah.
Metode lain yang saya gunakan untuk mendapatkan hasil yang lebih baik adalah dengan menggunakan contoh DBSCAN di sini . Ini mencari pusat kepadatan tinggi dan berkembang untuk membuat cluster. Dalam metode ini ia secara otomatis menemukan jumlah cluster yang optimal.
Saya juga merasa sangat penting untuk menggunakan stemmer, seperti Snowball for ex, yang mengurangi kesalahan karena kesalahan ketik. Daftar kata berhenti yang baik juga sangat penting jika Anda ingin memastikan untuk menyingkirkan beberapa kluster yang tidak memiliki arti karena tingginya kemunculan kata-kata umum tanpa makna yang signifikan. Ketika Anda membangun matriks hitungan Anda, normalisasi juga penting, itu memungkinkan untuk menambahkan bobot ke kata dengan kemunculan yang rendah pada dataset, tetapi dengan kemunculan yang tinggi dalam sampel tertentu. Kata-kata ini bermakna dan Anda tidak ingin melewatkannya. Ini juga menurunkan bobot kata-kata dengan kemunculan tinggi di semua sampel tertentu (mendekati kata berhenti tetapi untuk kata-kata yang dapat memiliki sedikit makna). Satu hal terakhir yang saya perhatikan adalah penting untuk tidak mencetak 10 kata teratas dari cluster Anda, tetapi pilihan yang lebih luas. Biasanya kualitas dan relevansi kata kunci terhadap label yang akan Anda berikan kepada kluster cenderung berkurang secara dramatis setelah 10-20 kata teratas ini. Jadi tampilan kata kunci teratas yang diperluas akan membantu Anda menganalisis apakah cluster Anda benar-benar relevan atau sangat tercemar oleh noise.
sumber
Metode favorit saya adalah LDA ; Anda dapat melihat di sini untuk tutorial menggunakan paket python.
Anda juga dapat melihat metode yang jauh lebih sederhana seperti ini .
sumber