Apa metode yang baik untuk pengelompokan teks pendek?
15
Saya sedang mengerjakan masalah pengelompokan teks. Data berisi beberapa kalimat. Apakah ada algoritma yang baik yang mencapai akurasi tinggi pada teks pendek?
Bisakah Anda memberikan referensi yang bagus?
Algoritma seperti KMeans, spektral clustering tidak berfungsi dengan baik untuk masalah ini.
Itu sebagian besar tergantung pada seberapa banyak "state-of-the-art" (SOTA) yang Anda inginkan versus seberapa dalam Anda ingin pergi (pun intended ...).
Jika Anda dapat hidup hanya dengan embeddings kata yang dangkal seperti yang disediakan oleh word2vec, Glove, atau fastText, saya pikir Word Mover Distance (WMD [yes, really ...]) adalah fungsi yang bagus untuk mengukur jarak dokumen (pendek) [1] . Saya bahkan pernah melihat beberapa Notebook Python di masa lalu yang menyediakan "tutorial" untuk pengukuran jarak ini, jadi sangat mudah untuk memulai.
Namun, jika Anda lebih tertarik pada SOTA, Anda harus melihat ke dalam (urutan representasi) pembelajaran, menggunakan beberapa jenis jaringan berulang yang mempelajari model topik dari kalimat Anda. Selain mengintegrasikan embrio kata (semantik), pendekatan ini melampaui pendekatan "bag-of-words" [baik, lama] dengan mempelajari representasi topik menggunakan dependensidari kata-kata dalam kalimat [s]. Sebagai contoh, Model Level Level Berulang (SLRTM) dari Sentence Level adalah model yang dalam dan cukup menarik berdasarkan pada ide LDA yang lebih tradisional (oleh Blei dkk.) Atau LSA (Landauer dkk.), Tetapi hanya arXiv kertas (jadi semua default "ambil-ini-dengan-butir-dari-garam peringatan" tentang penelitian non-peer-review harus diterapkan ...) [2]. Namun demikian, makalah ini memiliki banyak penunjuk yang sangat baik dan referensi untuk memulai penelitian Anda jika Anda ingin turun ke lubang kelinci ini.
Akhirnya, harus diklarifikasi bahwa saya tidak mengklaim bahwa ini adalah metode berkinerja terbaik yang disepakati untuk masing-masing model dan model urutan. Tetapi mereka harus membuat Anda cukup dekat dengan SOTA "terbaik" apa pun, dan setidaknya harus berfungsi sebagai titik awal yang sangat baik.
Saya mencoba word2vec dan tidak berfungsi dengan baik untuk teks pendek.
Penggemar
Hanya untuk memastikan: Jawaban saya di atas tidak merekomendasikan untuk menggunakan word2vec (sendiri) untuk pengelompokan teks pendek. Sebaliknya, itu merekomendasikan untuk menggunakan WMD (lebih dari vektor tertanam) dan / atau metode Pembelajaran Dalam. (Namun, jika Anda dapat melatih vektor Anda sendiri, Anda mendapatkan hasil yang sangat baik dengan mereka sendiri, menggunakan Soft Cosine Similarity, setidaknya untuk "prototipe yang bisa diterapkan.")
fnl
-1
https://github.com/RandyPen/TextCluster
Ini adalah metode Cluster khusus untuk teks pendek, yang mengungguli KMeans dll. Tidak Perlu menetapkan nomor variabel laten.
Ide dasarnya adalah mengubah kalimat menjadi kata-kata. Kemudian arahkan ke ember yang berbeda sesuai dengan komponen teks. Di setiap ember, hitung kesamaan antara kalimat dan ember. Jika skor kesamaan lebih tinggi dari nilai tertentu, tambahkan kalimat ini ke dalam ember itu, jika tidak cari ember berikutnya.
https://github.com/RandyPen/TextCluster
Ini adalah metode Cluster khusus untuk teks pendek, yang mengungguli KMeans dll. Tidak Perlu menetapkan nomor variabel laten.
Ide dasarnya adalah mengubah kalimat menjadi kata-kata. Kemudian arahkan ke ember yang berbeda sesuai dengan komponen teks. Di setiap ember, hitung kesamaan antara kalimat dan ember. Jika skor kesamaan lebih tinggi dari nilai tertentu, tambahkan kalimat ini ke dalam ember itu, jika tidak cari ember berikutnya.
sumber